//------------------------------------------------------------------------------ // Copyright (c) 2001-2002, OpenBeOS // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. // // File Name: Slider.h // Author: Marc Flerackers (mflerackers@androme.be) // Description: BSlider creates and displays a sliding thumb control. //------------------------------------------------------------------------------ #ifndef _SLIDER_H #define _SLIDER_H // Standard Includes ----------------------------------------------------------- // System Includes ------------------------------------------------------------- #include #include // Project Includes ------------------------------------------------------------ // Local Includes -------------------------------------------------------------- // Local Defines --------------------------------------------------------------- enum hash_mark_location { B_HASH_MARKS_NONE = 0, B_HASH_MARKS_TOP = 1, B_HASH_MARKS_LEFT = 1, B_HASH_MARKS_BOTTOM = 2, B_HASH_MARKS_RIGHT = 2, B_HASH_MARKS_BOTH = 3 }; enum thumb_style { B_BLOCK_THUMB, B_TRIANGLE_THUMB }; // Globals --------------------------------------------------------------------- // BSlider class --------------------------------------------------------------- class BSlider : public BControl { public: BSlider(BRect frame, const char *name, const char *label, BMessage *message, int32 minValue, int32 maxValue, thumb_style thumbType = B_BLOCK_THUMB, uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS); BSlider(BRect frame, const char *name, const char *label, BMessage *message, int32 minValue, int32 maxValue, orientation posture /*= B_HORIZONTAL*/, thumb_style thumbType = B_BLOCK_THUMB, uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP, uint32 flags = B_NAVIGABLE | B_WILL_DRAW | B_FRAME_EVENTS); virtual ~BSlider(); BSlider(BMessage *data); static BArchivable *Instantiate(BMessage *data); virtual status_t Archive(BMessage *data, bool deep = true) const; virtual status_t Perform(perform_code d, void *arg); virtual void WindowActivated(bool state); virtual void AttachedToWindow(); virtual void AllAttached(); virtual void AllDetached(); virtual void DetachedFromWindow(); virtual void MessageReceived(BMessage *msg); virtual void FrameMoved(BPoint new_position); virtual void FrameResized(float w,float h); virtual void KeyDown(const char * bytes, int32 n); virtual void MouseDown(BPoint); virtual void MouseUp(BPoint pt); virtual void MouseMoved(BPoint pt, uint32 c, const BMessage *m); virtual void Pulse(); virtual void SetLabel(const char *label); virtual void SetLimitLabels(const char *minLabel, const char *maxLabel); const char* MinLimitLabel() const; const char* MaxLimitLabel() const; virtual void SetValue(int32); virtual int32 ValueForPoint(BPoint) const; virtual void SetPosition(float); float Position() const; virtual void SetEnabled(bool on); void GetLimits(int32 * minimum, int32 * maximum); virtual void Draw(BRect); virtual void DrawSlider(); virtual void DrawBar(); virtual void DrawHashMarks(); virtual void DrawThumb(); virtual void DrawFocusMark(); virtual void DrawText(); virtual char* UpdateText() const; virtual BRect BarFrame() const; virtual BRect HashMarksFrame() const; virtual BRect ThumbFrame() const; virtual void SetFlags(uint32 flags); virtual void SetResizingMode(uint32 mode); virtual void GetPreferredSize( float *width, float *height); virtual void ResizeToPreferred(); virtual status_t Invoke(BMessage *msg=NULL); virtual BHandler *ResolveSpecifier(BMessage *msg, int32 index, BMessage *specifier, int32 form, const char *property); virtual status_t GetSupportedSuites(BMessage *data); virtual void SetModificationMessage(BMessage *message); BMessage *ModificationMessage() const; virtual void SetSnoozeAmount(int32); int32 SnoozeAmount() const; virtual void SetKeyIncrementValue(int32 value); int32 KeyIncrementValue() const; virtual void SetHashMarkCount(int32 count); int32 HashMarkCount() const; virtual void SetHashMarks(hash_mark_location where); hash_mark_location HashMarks() const; virtual void SetStyle(thumb_style s); thumb_style Style() const; virtual void SetBarColor(rgb_color); rgb_color BarColor() const; virtual void UseFillColor(bool, const rgb_color* c=NULL); bool FillColor(rgb_color*) const; BView* OffscreenView() const; orientation Orientation() const; virtual void SetOrientation(orientation); float BarThickness() const; virtual void SetBarThickness(float thickness); virtual void SetFont(const BFont *font, uint32 properties = B_FONT_ALL); #ifdef BEOS_R5_COMPATIBLE virtual void _ReservedSlider4(); #else virtual void SetLimits(int32 minimum, int32 maximum); // Was _ReservedSlider4() #endif /*----- Private or reserved -----------------------------------------*/ private: void _DrawBlockThumb(); void _DrawTriangleThumb(); BPoint _Location() const; void _SetLocation(BPoint p); float _MinPosition() const; float _MaxPosition() const; //virtual void _ReservedSlider1(); //virtual void _ReservedSlider2(); //virtual void _ReservedSlider3(); //virtual void _ReservedSlider4(); virtual void _ReservedSlider5(); virtual void _ReservedSlider6(); virtual void _ReservedSlider7(); virtual void _ReservedSlider8(); virtual void _ReservedSlider9(); virtual void _ReservedSlider10(); virtual void _ReservedSlider11(); virtual void _ReservedSlider12(); BSlider &operator=(const BSlider &); void _InitObject(); BMessage* fModificationMessage; int32 fSnoozeAmount; rgb_color fBarColor; rgb_color fFillColor; bool fUseFillColor; char* fMinLimitStr; char* fMaxLimitStr; int32 fMinValue; int32 fMaxValue; int32 fKeyIncrementValue; int32 fHashMarkCount; hash_mark_location fHashMarks; BBitmap* fOffScreenBits; BView* fOffScreenView; thumb_style fStyle; BPoint fLocation; BPoint fInitialLocation; orientation fOrientation; float fBarThickness; uint32 _reserved[8]; }; //------------------------------------------------------------------------------ #endif // _SLIDER_H