159 lines
4.4 KiB
C
159 lines
4.4 KiB
C
|
/*******************************************************************************
|
||
|
/
|
||
|
/ File: ChannelSlider.h
|
||
|
/
|
||
|
/ Description: BChannelSlider implements a slider which can have a number
|
||
|
/ of (on-screen) related values. A typical use is for a stereo
|
||
|
/ volume control.
|
||
|
/
|
||
|
/ Copyright 1998-99, Be Incorporated, All Rights Reserved
|
||
|
/
|
||
|
*******************************************************************************/
|
||
|
|
||
|
#if !defined(_CHANNEL_SLIDER_H)
|
||
|
#define _CHANNEL_SLIDER_H
|
||
|
|
||
|
#include <ChannelControl.h>
|
||
|
|
||
|
class BChannelSlider :
|
||
|
public BChannelControl
|
||
|
{
|
||
|
public:
|
||
|
BChannelSlider(
|
||
|
BRect area,
|
||
|
const char * name,
|
||
|
const char * label,
|
||
|
BMessage * model,
|
||
|
int32 channels = 1,
|
||
|
uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||
|
uint32 flags = B_WILL_DRAW);
|
||
|
BChannelSlider(
|
||
|
BRect area,
|
||
|
const char * name,
|
||
|
const char * label,
|
||
|
BMessage * model,
|
||
|
orientation o,
|
||
|
int32 channels = 1,
|
||
|
uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||
|
uint32 flags = B_WILL_DRAW);
|
||
|
BChannelSlider(
|
||
|
BMessage * from);
|
||
|
virtual ~BChannelSlider();
|
||
|
|
||
|
static BArchivable * Instantiate(BMessage * from);
|
||
|
virtual status_t Archive(BMessage * into, bool deep = true) const;
|
||
|
|
||
|
virtual orientation Orientation() const;
|
||
|
void SetOrientation(orientation o);
|
||
|
|
||
|
virtual int32 MaxChannelCount() const;
|
||
|
virtual bool SupportsIndividualLimits() const;
|
||
|
|
||
|
virtual void AttachedToWindow();
|
||
|
virtual void AllAttached();
|
||
|
virtual void DetachedFromWindow();
|
||
|
virtual void AllDetached();
|
||
|
|
||
|
virtual void MessageReceived(BMessage *msg);
|
||
|
|
||
|
virtual void Draw(BRect area);
|
||
|
virtual void MouseDown(BPoint where);
|
||
|
virtual void MouseUp(BPoint pt);
|
||
|
virtual void MouseMoved( BPoint pt,
|
||
|
uint32 code,
|
||
|
const BMessage * message);
|
||
|
virtual void WindowActivated(bool state);
|
||
|
virtual void KeyDown(const char *bytes, int32 numBytes);
|
||
|
virtual void KeyUp(const char *bytes, int32 numBytes);
|
||
|
virtual void FrameResized(float width, float height);
|
||
|
|
||
|
virtual void SetFont(const BFont *font, uint32 mask = B_FONT_ALL);
|
||
|
virtual void MakeFocus(bool focusState = true);
|
||
|
|
||
|
virtual void SetEnabled(bool on);
|
||
|
|
||
|
virtual void GetPreferredSize(float *width, float *height);
|
||
|
|
||
|
virtual BHandler *ResolveSpecifier(BMessage *msg,
|
||
|
int32 index,
|
||
|
BMessage *specifier,
|
||
|
int32 form,
|
||
|
const char *property);
|
||
|
virtual status_t GetSupportedSuites(BMessage *data);
|
||
|
|
||
|
// Perform rendering for an entire slider channel.
|
||
|
virtual void DrawChannel(BView* into,
|
||
|
int32 channel,
|
||
|
BRect area,
|
||
|
bool pressed);
|
||
|
|
||
|
// Draw the groove that appears behind a channel's thumb.
|
||
|
virtual void DrawGroove( BView* into,
|
||
|
int32 channel,
|
||
|
BPoint tl,
|
||
|
BPoint br);
|
||
|
|
||
|
// Draw the thumb for a single channel.
|
||
|
virtual void DrawThumb( BView* into,
|
||
|
int32 channel,
|
||
|
BPoint where,
|
||
|
bool pressed );
|
||
|
|
||
|
virtual const BBitmap * ThumbFor(int32 channel, bool pressed);
|
||
|
virtual BRect ThumbFrameFor(int32 channel);
|
||
|
virtual float ThumbDeltaFor(int32 channel);
|
||
|
virtual float ThumbRangeFor(int32 channel);
|
||
|
|
||
|
private:
|
||
|
typedef BChannelControl inherited;
|
||
|
|
||
|
BChannelSlider( /* unimplemented */
|
||
|
const BChannelSlider &);
|
||
|
BChannelSlider& operator=( /* unimplemented */
|
||
|
const BChannelSlider &);
|
||
|
|
||
|
|
||
|
virtual status_t _Reserved_BChannelSlider_0(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_1(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_2(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_3(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_4(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_5(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_6(void *, ...);
|
||
|
virtual status_t _Reserved_BChannelSlider_7(void *, ...);
|
||
|
|
||
|
float _m_baseline;
|
||
|
float _m_linefeed;
|
||
|
BBitmap * _m_left_knob;
|
||
|
BBitmap * _m_mid_knob;
|
||
|
BBitmap * _m_right_knob;
|
||
|
BBitmap * _m_backing;
|
||
|
BView * _m_backing_view;
|
||
|
bool _m_vertical;
|
||
|
bool _m_padding_[3];
|
||
|
BPoint _m_click_delta;
|
||
|
|
||
|
int32 fCurrentChannel;
|
||
|
bool fAllChannels;
|
||
|
int32* fInitialValues;
|
||
|
float fMinpoint;
|
||
|
int32 fFocusChannel;
|
||
|
|
||
|
uint32 _reserved_[12];
|
||
|
|
||
|
void InitData();
|
||
|
|
||
|
void FinishChange();
|
||
|
void UpdateFontDimens();
|
||
|
void DrawThumbs();
|
||
|
void DrawThumbFrame(
|
||
|
BView * where,
|
||
|
const BRect & area);
|
||
|
bool Vertical();
|
||
|
void Redraw();
|
||
|
void MouseMovedCommon(BPoint , BPoint );
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif /* _CHANNEL_SLIDER_H */
|