310177b43e
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29151 a95241bf-73f2-0310-859d-f6bbb57e9c96
135 lines
4.2 KiB
C++
135 lines
4.2 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
|
|
/
|
|
*******************************************************************************/
|
|
|
|
#ifndef _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* message,
|
|
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* message,
|
|
orientation o, int32 channels = 1,
|
|
uint32 resize = B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
|
uint32 flags = B_WILL_DRAW);
|
|
BChannelSlider(BMessage* archive);
|
|
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* p);
|
|
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 groove that appears behind a channel's thumb.
|
|
virtual void DrawGroove(BView* into, int32 channel, BPoint lt,
|
|
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:
|
|
BChannelSlider(const BChannelSlider &);
|
|
BChannelSlider& operator=(const BChannelSlider &);
|
|
|
|
|
|
virtual void _Reserved_BChannelSlider_0(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_1(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_2(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_3(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_4(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_5(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_6(void* , ...);
|
|
virtual void _Reserved_BChannelSlider_7(void* , ...);
|
|
|
|
float fBaseLine;
|
|
float fLineFeed;
|
|
BBitmap* fLeftKnob;
|
|
BBitmap* fMidKnob;
|
|
BBitmap* fRightKnob;
|
|
BBitmap* fBacking;
|
|
BView* fBackingView;
|
|
bool fVertical;
|
|
bool fPadding[3];
|
|
BPoint fClickDelta;
|
|
|
|
int32 fCurrentChannel;
|
|
bool fAllChannels;
|
|
int32* fInitialValues;
|
|
float fMinpoint;
|
|
int32 fFocusChannel;
|
|
|
|
uint32 _reserved_[12];
|
|
|
|
void _InitData();
|
|
void _FinishChange(bool update = false);
|
|
void _UpdateFontDimens();
|
|
void _DrawThumbs();
|
|
void _DrawGrooveFrame(BView* where, const BRect& area);
|
|
bool _Vertical() const;
|
|
void _Redraw();
|
|
void _MouseMovedCommon(BPoint point, BPoint point2);
|
|
};
|
|
|
|
|
|
#endif /* _CHANNEL_SLIDER_H */
|