123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- #ifndef _SLIDER_H
- #define _SLIDER_H
- #include <bfc/common.h>
- #include <tataki/bitmap/autobitmap.h>
- #include <api/wnd/wndclass/guiobjwnd.h>
- #define SLIDERWND_PARENT GuiObjectWnd
- /**
- Slider style control.
-
- @short Slider style control.
- @author Nullsoft
- @ver 1.0
- */
- class SliderWnd : public SLIDERWND_PARENT
- {
- public:
- /**
- Sets the defaults for the slider. Defaults to a horizontal
- slider with the thumb in the center and is enabled.
- */
- SliderWnd();
-
- /**
- Nothing is handled by the destructor.
- */
- virtual ~SliderWnd();
- /**
- Event is triggered when the window requires a repaint.
- Override this to implement your own behavior.
-
- Paints the slider on canvas according to current
- state of the slider.
- @ret 0, Failed; 1, Success;
- @param canvas The canvas on which to paint.
- */
- virtual int onPaint(Canvas *canvas);
- /**
- Event is triggered when the left mouse button is pressed while
- the slider has focus. Override this to implement your
- own behavior.
-
- @ret
- @param x X coordinate of the mouse pointer.
- @param y Y coordinate of the mouse pointer.
- */
- virtual int onLeftButtonDown(int x, int y);
-
- /**
- Event is triggered when the mouse has capture on the slider
- and is being moved. Override this to implement your own
- behavior.
-
- @ret 0, Failed; 1, Success;
- @param x The X position of the mouse.
- @param y The Y position of the mouse.
- */
- virtual int onMouseMove(int x, int y); // only called when mouse captured
-
- /**
- Event is triggered when the left mouse button is released.
- Note that the mouse button must have been previously pressed
- for this event to happen. Override this to implement your
- own behavior.
-
- @ret 1, If you handle the event; 0, If you don't handle the event;
- @param x The X position of the mouse.
- @param y The Y position of the mouse.
- */
- virtual int onLeftButtonUp(int x, int y);
-
- /**
- Event is triggered when the right mouse button is pressed.
- Override this to implement your own behavior.
- */
- virtual int onRightButtonDown(int x, int y);
-
- /**
- Event is triggered when a key is pressed and the slider
- has focus. Override this to implement your own behavior.
-
- @ret 1, If you handle the event; 0, If you don't handle the event;
- @param c The key that was pressed.
- */
- virtual int onChar(unsigned int c);
- /**
- Event is triggered when the mouse enters the region
- of the slider. Override this to implement your
- own behavior.
- */
- virtual void onEnterArea();
-
- /**
- Event is triggered when the mouse leaves the region
- of the slider. Override this to implement your
- own behavior.
- */
- virtual void onLeaveArea();
- /**
- Event is triggered then the slider is about to be initialized.
- Override this event to implement your own behavior.
-
- By default this will render the slider according the it's current settings
- and position of the thumb.
-
- @ret 1, Success; 0, Failure;
- */
- virtual int onInit();
- /**
- Constants for positioning of the thumb.
- */
- enum {
- START = 0,
- END = 65535,
- FULL = END
- };
-
- /**
- Set the sliders position.
-
- @param newpos The sliders new position.
- @param wantcb !0, Generate a callback after the position has been set; 0, No callback;
- */
- virtual void setPosition(int newpos, int wantcb=1);
-
- /**
- Get the sliders current position. The range is from
- START (0) to END (65535).
-
- @ret The sliders position (ranges from 0 to 65535).
- */
- int getSliderPosition();
- //void cancelSeek();
-
- /**
- Use a base texture when rendering the slider.
-
- @see setBaseTexture()
- @param useit 0, Do not use; 1, Use base texture;
- */
- void setUseBaseTexture(int useit);
-
- /**
- Set the base texture of the slider.
-
- @see setUseBaseTexture()
- @see SkinBitmap
- @param bmp The bitmap to use as a texture.
- @param x The X position of the base texture.
- @param y The Y position of the base texture.
- */
- void setBaseTexture(SkinBitmap *bmp, int x, int y);
-
- /**
- Set the draw area to include the edge borders.
-
- @param draw 0, Do not include the edges; 1, Include the edges;
- */
- void setDrawOnBorders(int draw);
-
- /**
- Do not use the default background provided
- by the current skin?
-
- If you set this to 1, you MUST specify your bitmaps.
-
- @param no 0, Use default background; 1, Do not use default;
- */
- void setNoDefaultBackground(int no);
- /**
- Set the bitmaps to be used to render the slider.
- These include bitmaps for the left, middle, right of
- the slider. For the thumb, we have bitmaps for the
- normal, hilited and pushed thumb.
-
- The bitmaps are set using their xml id or "name".
- The name should resemble something like this:
- "studio.seekbar.left".
-
- @see setLeftBmp()
- @see setMiddleBmp()
- @see setRightBmp()
- @see setThumbBmp()
- @see setThumbDownBmp()
- @see setThumbHiliteBmp()
- @param thumbbmp The normal thumb bitmap name.
- @param thumbdownbmp The thumb down bitmap name.
- @param thumbhighbmp The hilited thumb bitmap name.
- @param leftbmp The left bitmap of the slider name.
- @param middlebmp The middle bitmap of the slider name.
- @param rightbmp The right bitmap of the slider name.
- */
- void setBitmaps(const wchar_t *thumbbmp, const wchar_t *thumbdownbmp, const wchar_t *thumbhighbmp, const wchar_t *leftbmp, const wchar_t *middlebmp, const wchar_t *rightbmp);
- /**
- Set the left bitmap of the slider.
-
- @param name The left bitmap name.
- */
- void setLeftBmp(const wchar_t *name);
-
- /**
- Set the middle bitmap of the slider.
-
- @param name The middle bitmap name.
- */
- void setMiddleBmp(const wchar_t *name);
-
- /**
- Set the right bitmap of the slider.
-
- @param name The right bitmap name.
- */
- void setRightBmp(const wchar_t *name);
-
- /**
- Set the normal thumb bitmap of the slider.
-
- @param name The normal thumb bitmap name.
- */
- void setThumbBmp(const wchar_t *name);
-
- /**
- Set the thumb down bitmap of the slider.
-
- @param name The thumb down bitmap name.
- */
- void setThumbDownBmp(const wchar_t *name);
-
- /**
- Set the hilited thumb bitmap of the slider.
-
- @param name The hilited thumb bitmap name.
- */
- void setThumbHiliteBmp(const wchar_t *name);
- /**
- Get the height of the slider in pixels.
-
- @ret The height of the slider (in pixels).
- */
- virtual int getHeight();
-
- /**
- Get the width of the slider in pixels.
-
- @ret The width of the slider (in pixels).
- */
- virtual int getWidth();
- /**
- Get the left bitmap of the slider.
-
- @see SkinBitmap
- @ret The left SkinBitmap.
- */
- SkinBitmap *getLeftBitmap();
-
- /**
- Get the right bitmap of the slider.
-
- @see SkinBitmap
- @ret The right SkinBitmap.
- */
- SkinBitmap *getRightBitmap();
- /**
- Get the middle bitmap of the slider.
-
- @see SkinBitmap
- @ret The middle SkinBitmap.
- */
- SkinBitmap *getMiddleBitmap();
- /**
- Get the thumb bitmap of the slider.
-
- @see SkinBitmap
- @ret The thumb SkinBitmap.
- */
- SkinBitmap *getThumbBitmap();
- /**
- Get the thumb down bitmap of the slider.
-
- @see SkinBitmap
- @ret The thumb down SkinBitmap.
- */
- SkinBitmap *getThumbDownBitmap();
- /**
- Get the thumb hilite bitmap of the slider.
-
- @see SkinBitmap
- @ret The thumb hilite SkinBitmap.
- */
- SkinBitmap *getThumbHiliteBitmap();
- /**
- Set the sliders enable state.
-
- @param en 1, Enabled; 0, Disabled;
- */
-
- virtual void setEnable(int en);
-
- /**
- Get the sliders enable state.
-
- @ret 1, Enabled; 0, Disabled;
- */
- virtual int getEnable(void);
- /**
- Set the orientation of the slider
- (horizontal or vertical).
-
- @param o 0, Horizontal; 1, Vertical;
- */
- virtual void setOrientation(int o);
-
- /**
- This will set a "jump-to" position (like "center" for a balance slider).
- The parameter is in thumb coordinates (0 to 65535).
-
- @param h The jump-to position (ranges from 0 to 65535, or START to END).
- */
- virtual void setHotPosition(int h);
- virtual int getHotPosRange() { return hotposrange; }
- virtual void setHotPosRange(int range) { hotposrange = range; }
- /**
- Set the thumb center flag. If on, this flag will
- cause the thumb of the slider to be centered
- automatically.
-
- @param c 1, Centered; 0, No centering;
- */
- virtual void setThumbCentered(int c);
- virtual void setThumbStretched(int c);
- /**
- Set the thumb offset (from the left hand side).
- This offset will be added to the zero position of the thumb.
- Note, if you're using centering also, this will cause the slider
- thumb to be passed the middle of the slider.
-
- @param o The offset of the thumb (in pixels).
- */
- virtual void setThumbOffset(int o);
- /**
- Set the minimum and maximum limit for the slider.
-
- @param minlimit The minimum value.
- @param maxlimit The maximum value.
- */
- virtual void setLimits(int minlimit, int maxlimit);
- virtual int getMaxLimit() { return maxlimit; }
- virtual int getMinLimit() { return minlimit; }
- virtual int getRange() { return maxlimit-minlimit; }
- virtual int onKeyDown(int vkcode);
-
- virtual void onCancelCapture();
- protected:
- /**
- Abort the current seek and end capture.
- */
- void abort();
- // override this to get position change notification
- /**
- Event is triggered when the mouse is moving the thumb
- is being moved. Override this to implment your own behavior.
-
- @ret The thumb's position (ranges from 0 to 65535 or START to END).
- */
- virtual int onSetPosition(); // called constantly as mouse moves
-
- /**
- Event is triggered when the thumb is released and the final position
- is about to be set.
-
- @ret The thumb's position (ranges from 0 to 65535 or START to END).
- */
- virtual int onSetFinalPosition(); // called once after move done
- /**
- Get the seeking status.
-
- @ret 1, User is seeking; 0, User is not seeking;
- */
- int getSeekStatus(); // returns 1 if user is sliding tab
- int vertical; // set to 1 for up-n-down instead
- /**
- Get the width of the thumb bitmap, in pixels.
-
- @ret The thumb's width (in pixels).
- */
- int thumbWidth();
-
- /**
- Get the height of the thumb bitmap, in pixels.
-
- @ret The thumb's width (in pixels).
- */
- int thumbHeight();
- // keyboard
- void move_left(int bigstep);
- void move_right(int bigstep);
- void move_start();
- void move_end();
- int minlimit, maxlimit, length;
- private:
- int seeking;
- int enabled;
- int hilite;
- int pos;
- int oldpos;
- int thumbwidth;
- int captured;
- int xShift, yShift;
- SkinBitmap *base_texture;
- int use_base_texture;
- int no_default_background;
- int drawOnBorders;
- int hotPosition;
- int origPos;
- int thumbCentered, thumbOffset, thumbStretched;
- int hotposrange;
- AutoSkinBitmap left, middle, right;
- AutoSkinBitmap thumb, thumbdown, thumbhilite;
- };
- #endif
|