X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fskins2%2Fcontrols%2Fctrl_slider.hpp;h=ac31b9944fb3a225b1b80f5df34827be1587788b;hb=35bbdac8fd599bf00a5024efc7aae67b99faaef1;hp=b6c97bc092e1afb0c50c1a6617574d0d0545ea4d;hpb=0b62586c9ec62cea555e0c16d63369e150437632;p=vlc diff --git a/modules/gui/skins2/controls/ctrl_slider.hpp b/modules/gui/skins2/controls/ctrl_slider.hpp index b6c97bc092..ac31b9944f 100644 --- a/modules/gui/skins2/controls/ctrl_slider.hpp +++ b/modules/gui/skins2/controls/ctrl_slider.hpp @@ -5,7 +5,7 @@ * $Id$ * * Authors: Cyril Deguet - * Olivier Teulière + * Olivier Teulière * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,9 +17,9 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ #ifndef CTRL_SLIDER_HPP @@ -37,130 +37,133 @@ class VarPercent; /// Cursor of a slider -class CtrlSliderCursor: public CtrlGeneric, public Observer +class CtrlSliderCursor: public CtrlGeneric, public Observer { - public: - /// Create a cursor with 3 images (which are NOT copied, be careful) - /// If pVisible is NULL, the control is always visible - CtrlSliderCursor( intf_thread_t *pIntf, const GenericBitmap &rBmpUp, - const GenericBitmap &rBmpOver, - const GenericBitmap &rBmpDown, - const Bezier &rCurve, VarPercent &rVariable, - VarBool *pVisible, const UString &rTooltip, - const UString &rHelp ); - - virtual ~CtrlSliderCursor(); - - /// Handle an event - virtual void handleEvent( EvtGeneric &rEvent ); - - /// Check whether coordinates are inside the control - virtual bool mouseOver( int x, int y ) const; - - /// Draw the control on the given graphics - virtual void draw( OSGraphics &rImage, int xDest, int yDest ); - - /// Get the text of the tooltip - virtual UString getTooltipText() const { return m_tooltip; } - - /// Get the type of control (custom RTTI) - virtual string getType() const { return "slider_cursor"; } - - private: - /// Finite state machine of the control - FSM m_fsm; - /// Variable associated to the cursor - VarPercent &m_rVariable; - /// Tooltip text - const UString m_tooltip; - /// Initial size of the control - int m_width, m_height; - /// Position of the cursor - int m_xPosition, m_yPosition; - /// Callback objects - DEFINE_CALLBACK( CtrlSliderCursor, OverDown ) - DEFINE_CALLBACK( CtrlSliderCursor, DownOver ) - DEFINE_CALLBACK( CtrlSliderCursor, OverUp ) - DEFINE_CALLBACK( CtrlSliderCursor, UpOver ) - DEFINE_CALLBACK( CtrlSliderCursor, Move ) - DEFINE_CALLBACK( CtrlSliderCursor, Scroll ) - /// Last saved position of the cursor (stored as a percentage) - float m_lastPercentage; - /// Offset between the mouse pointer and the center of the cursor - int m_xOffset, m_yOffset; - /// The last received event - EvtGeneric *m_pEvt; - /// Images of the cursor in the differents states - OSGraphics *m_pImgUp, *m_pImgOver, *m_pImgDown; - /// Current image - OSGraphics *m_pImg; - /// Bezier curve of the slider - const Bezier &m_rCurve; - - /// Method called when the position variable is modified - virtual void onUpdate( Subject &rVariable, void * ); - - /// Method to compute the resize factors - void getResizeFactors( float &rFactorX, float &rFactorY ) const; - - /// Call notifyLayout - void refreshLayout(); +public: + /// Create a cursor with 3 images (which are NOT copied, be careful) + /// If pVisible is NULL, the control is always visible + CtrlSliderCursor( intf_thread_t *pIntf, const GenericBitmap &rBmpUp, + const GenericBitmap &rBmpOver, + const GenericBitmap &rBmpDown, + const Bezier &rCurve, VarPercent &rVariable, + VarBool *pVisible, const UString &rTooltip, + const UString &rHelp ); + + virtual ~CtrlSliderCursor(); + + /// Handle an event + virtual void handleEvent( EvtGeneric &rEvent ); + + /// Check whether coordinates are inside the control + virtual bool mouseOver( int x, int y ) const; + + /// Draw the control on the given graphics + virtual void draw( OSGraphics &rImage, int xDest, int yDest ); + + /// Get the text of the tooltip + virtual UString getTooltipText() const { return m_tooltip; } + + /// Get the type of control (custom RTTI) + virtual string getType() const { return "slider_cursor"; } + +private: + /// Finite state machine of the control + FSM m_fsm; + /// Variable associated to the cursor + VarPercent &m_rVariable; + /// Tooltip text + const UString m_tooltip; + /// Initial size of the control + int m_width, m_height; + /// Position of the cursor + int m_xPosition, m_yPosition; + /// Callback objects + DEFINE_CALLBACK( CtrlSliderCursor, OverDown ) + DEFINE_CALLBACK( CtrlSliderCursor, DownOver ) + DEFINE_CALLBACK( CtrlSliderCursor, OverUp ) + DEFINE_CALLBACK( CtrlSliderCursor, UpOver ) + DEFINE_CALLBACK( CtrlSliderCursor, Move ) + DEFINE_CALLBACK( CtrlSliderCursor, Scroll ) + /// Last saved position of the cursor (stored as a percentage) + float m_lastPercentage; + /// Offset between the mouse pointer and the center of the cursor + int m_xOffset, m_yOffset; + /// The last received event + EvtGeneric *m_pEvt; + /// Images of the cursor in the differents states + OSGraphics *m_pImgUp, *m_pImgOver, *m_pImgDown; + /// Current image + OSGraphics *m_pImg; + /// Bezier curve of the slider + const Bezier &m_rCurve; + + /// Method called when the position variable is modified + virtual void onUpdate( Subject &rVariable, void * ); + + /// Method to compute the resize factors + void getResizeFactors( float &rFactorX, float &rFactorY ) const; + + /// Call notifyLayout + void refreshLayout(); }; /// Slider background -class CtrlSliderBg: public CtrlGeneric, public Observer +class CtrlSliderBg: public CtrlGeneric, public Observer { - public: - CtrlSliderBg( intf_thread_t *pIntf, - const Bezier &rCurve, VarPercent &rVariable, - int thickness, GenericBitmap *pBackground, int nbHoriz, - int nbVert, int padHoriz, int padVert, VarBool *pVisible, - const UString &rHelp ); - virtual ~CtrlSliderBg(); - - /// Tell whether the mouse is over the control - virtual bool mouseOver( int x, int y ) const; - - /// Draw the control on the given graphics - virtual void draw( OSGraphics &rImage, int xDest, int yDest ); - - /// Handle an event - virtual void handleEvent( EvtGeneric &rEvent ); - - /// Get the type of control (custom RTTI) - virtual string getType() const { return "slider_bg"; } - - /// Associate a cursor to this background - void associateCursor( CtrlSliderCursor &rCursor ); - - private: - /// Cursor of the slider - CtrlSliderCursor *m_pCursor; - /// Variable associated to the slider - VarPercent &m_rVariable; - /// Thickness of the curve - int m_thickness; - /// Bezier curve of the slider - const Bezier &m_rCurve; - /// Initial size of the control - int m_width, m_height; - /// Background image sequence (optional) - OSGraphics *m_pImgSeq; - /// Number of images in the background bitmap - int m_nbHoriz, m_nbVert; - /// Number of pixels between two images - int m_padHoriz, m_padVert; - /// Size of a background image - int m_bgWidth, m_bgHeight; - /// Index of the current background image - int m_position; - - /// Method called when the observed variable is modified - virtual void onUpdate( Subject &rVariable, void* ); - - /// Method to compute the resize factors - void getResizeFactors( float &rFactorX, float &rFactorY ) const; +public: + CtrlSliderBg( intf_thread_t *pIntf, + const Bezier &rCurve, VarPercent &rVariable, + int thickness, GenericBitmap *pBackground, int nbHoriz, + int nbVert, int padHoriz, int padVert, VarBool *pVisible, + const UString &rHelp ); + virtual ~CtrlSliderBg(); + + /// Tell whether the mouse is over the control + virtual bool mouseOver( int x, int y ) const; + + /// Draw the control on the given graphics + virtual void draw( OSGraphics &rImage, int xDest, int yDest ); + + /// Handle an event + virtual void handleEvent( EvtGeneric &rEvent ); + + /// Method called when the control is resized + virtual void onResize(); + + /// Get the type of control (custom RTTI) + virtual string getType() const { return "slider_bg"; } + + /// Associate a cursor to this background + void associateCursor( CtrlSliderCursor &rCursor ); + +private: + /// Cursor of the slider + CtrlSliderCursor *m_pCursor; + /// Variable associated to the slider + VarPercent &m_rVariable; + /// Thickness of the curve + int m_thickness; + /// Bezier curve of the slider + const Bezier &m_rCurve; + /// Initial size of the control + int m_width, m_height; + /// Background image sequence (optional) + GenericBitmap *m_pImgSeq; + /// Number of images in the background bitmap + int m_nbHoriz, m_nbVert; + /// Number of pixels between two images + int m_padHoriz, m_padVert; + /// Size of a background image + int m_bgWidth, m_bgHeight; + /// Index of the current background image + int m_position; + + /// Method called when the observed variable is modified + virtual void onUpdate( Subject &rVariable, void* ); + + /// Method to compute the resize factors + void getResizeFactors( float &rFactorX, float &rFactorY ) const; };