diff options
Diffstat (limited to 'include/gwin/slider.h')
| -rw-r--r-- | include/gwin/slider.h | 171 | 
1 files changed, 43 insertions, 128 deletions
diff --git a/include/gwin/slider.h b/include/gwin/slider.h index 310cb0eb..57bd5a72 100644 --- a/include/gwin/slider.h +++ b/include/gwin/slider.h @@ -22,19 +22,10 @@  #ifndef _GWIN_SLIDER_H  #define _GWIN_SLIDER_H -#if GWIN_NEED_SLIDER || defined(__DOXYGEN__) +/* This file is included within "gwin/gwidget.h" */ -/*===========================================================================*/ -/* Driver constants.														 */ -/*===========================================================================*/ - -#define GW_SLIDER				0x0004  #define GEVENT_GWIN_SLIDER		(GEVENT_GWIN_FIRST+1) -/*===========================================================================*/ -/* Type definitions                                                          */ -/*===========================================================================*/ -  typedef struct GEventGWinSlider_t {  	GEventType		type;				// The type of this event (GEVENT_GWIN_BUTTON)  	GHandle			slider;				// The slider that is returning results @@ -43,33 +34,27 @@ typedef struct GEventGWinSlider_t {  // There are currently no GEventGWinSlider listening flags - use 0 -typedef struct GSliderDrawStyle_t { +typedef struct GSliderColors {  	color_t				color_edge;  	color_t				color_thumb;  	color_t				color_active;  	color_t				color_inactive; -} GSliderDrawStyle; - -typedef void (*GSliderDrawFunction)(GHandle gh, bool_t isVertical, coord_t thumbpos, const GSliderDrawStyle *pstyle, void *param); +	color_t				color_txt; +} GSliderColors;  // A slider window  typedef struct GSliderObject_t { -	GWindowObject		gwin; - -	GSliderDrawStyle	style; -	bool_t				tracking; +	GWidgetObject		w; +	uint16_t			t_dn; +	uint16_t			t_up; +	uint16_t			dial; +	coord_t				dpos;  	int					min;  	int					max;  	int					pos; -	GSliderDrawFunction	fn; -	void				*param; -	GListener			listener; +	GSliderColors		c;  } GSliderObject; -/*===========================================================================*/ -/* External declarations.                                                    */ -/*===========================================================================*/ -  #ifdef __cplusplus  extern "C" {  #endif @@ -79,17 +64,25 @@ extern "C" {   * @return  NULL if there is no resultant drawing area, otherwise a window handle.   *   * @param[in] gb		The GSliderObject structure to initialise. If this is NULL the structure is dynamically allocated. - * @param[in] x,y		The screen co-ordinates for the bottom left corner of the window - * @param[in] width		The width of the window - * @param[in] height	The height of the window - * @note				The drawing color gets set to White and the background drawing color to Black. - * @note				The dimensions and position may be changed to fit on the real screen. - * @note				The slider is not automatically drawn. Call gwinSliderDraw() after changing the slider style. - * @note				Sets the slider range from 0 to 100 with an initial position of 0 + * @param[in] pInit		The initialization parameters to use + * + * @note				The drawing color and the background color get set to the current defaults. If you haven't called + * 						@p gwinSetDefaultColor() or @p gwinSetDefaultBgColor() then these are White and Black respectively. + * @note				The font gets set to the current default font. If you haven't called @p gwinSetDefaultFont() then there + * 						is no default font and text drawing operations will no nothing. + * @note				A slider remembers its normal drawing state. If there is a window manager then it is automatically + * 						redrawn if the window is moved or its visibility state is changed. + * @note				The initial slider range is from 0 to 100 with an initial position of 0. + * @note				A slider supports mouse, toggle and dial input. + * @note				When assigning a toggle, only one toggle is supported per role. If you try to assign more than + * 						one toggle to a role it will forget the previous toggle. Two roles are supported: + * 						Role 0 = toggle for down, Role 1 = toggle for up. + * @note				When assigning a dial, only one dial is supported. If you try to assign more than one dial + * 						it will forget the previous dial. Only dial role 0 is supported.   *   * @api   */	 -GHandle gwinCreateSlider(GSliderObject *gb, coord_t x, coord_t y, coord_t width, coord_t height); +GHandle gwinCreateSlider(GSliderObject *gb, const GWidgetInit *pInit);  /**   * @brief   Set the slider range. @@ -130,51 +123,7 @@ void gwinSetSliderPosition(GHandle gh, int pos);   *   * @api   */ -void gwinSetSliderStyle(GHandle gh, const GSliderDrawStyle *pStyle); - -/** - * @brief   Redraw the slider. - * - * @param[in] gh		The window handle (must be a slider window) - * - * @api - */ -void gwinSliderDraw(GHandle gh); - -/** - * @brief	Enable or disable a button - * - * @param[in] gh		The window handle (must be a slider window) - * @param[in] enabled	Enable or disable the slider - * - * @api - */ -void gwinSliderSetEnabled(GHandle gh, bool_t enabled); - -/** - * @brief   Set the callback routine to perform a custom slider drawing. - * - * @param[in] gh		The window handle (must be a slider window) - * @param[in] fn		The function to use to draw the slider - * @param[in] param		A parameter to pass to the slider drawing function - * - * @api - */ -void gwinSetSliderCustom(GHandle gh, GSliderDrawFunction fn, void *param); - -/** - * @brief	Enable a slider - * - * @api - */ -#define gwinEnableSlider(gh)			gwinSliderSetEnabled( ((GSliderObject *)(gh)), TRUE) - -/** - * @brief	Disable a slider - * - * @api - */ -#define gwinDisableSlider(gh)			gwinSliderSetEnabled( ((GSliderObject *)(gh)), FALSE) +void gwinSetSliderColors(GHandle gh, const GSliderColors *pStyle);  /**   * @brief   Get the current slider position. @@ -190,69 +139,35 @@ void gwinSetSliderCustom(GHandle gh, GSliderDrawFunction fn, void *param);  #define gwinGetSliderPosition(gh)		(((GSliderObject *)(gh))->pos)  /** - * @brief Get the source handle of a slider - * @details Get the source handle of a slider so the application can listen for events + * @brief	Some custom slider drawing routines + * @details	These function may be passed to @p gwinSetCustomDraw() to get different slider drawing styles   * - * @param[in] gh	The window handle - * - * @api - */ -#define gwinGetSliderSource(gh)		((GSourceHandle)(gh)) - -#if GFX_USE_GINPUT && GINPUT_NEED_MOUSE -	/** -	 * @brief	Attach a mouse source -	 * @details	Attach a mouse to a slider -	 * -	 * @param[in] gh		The slider handle -	 * @param[in] instance	The mouse instance -	 * -	 * @api -	 */ -	bool_t gwinAttachSliderMouse(GHandle gh, uint16_t instance); -#endif - -#if GFX_USE_GINPUT && GINPUT_NEED_DIAL -	/** -	 * @brief	Attach a dial source -	 * @details	Attach a dial to a slider -	 * -	 * @param[in] gh		The dial handle -	 * @param[in] instance	The dial instance -	 * -	 * @api -	 */ -	bool_t gwinAttachSliderDial(GHandle gh, uint16_t instance); -#endif - -/** - * @brief	Standard slider drawing routines - * @details	This routine is called to draw the standard slider. - * - * @param[in] gh			The slider handle - * @param[in] isVertical	The slider is vertically oriented instead of horizontal - * @param[in] thumbpos		The position of the slider (0..cx-1 or cy-1..0) - * @param[in] pstyle		The current drawing style + * @param[in] gw			The widget (which must be a slider)   * @param[in] param			A parameter passed in from the user   *   * @note				In your custom slider drawing function you may optionally call this   * 						standard functions and then draw your extra details on top. - * @note				The standard functions below ignore the param parameter. It is there - * 						only to ensure the functions match the GSliderDrawFunction type. - * @note				When called by a slider the framework ensure that it is - * 						a slider object and sets up clipping to the slider object window. These - * 						drawing routines then don't have to worry about explicitly doing that. + * @note				The standard functions below ignore the param parameter except for @p gwinSliderDraw_Image(). + * @note				The image custom draw function  @p gwinSliderDraw_Image() uses param to pass in the gdispImage pointer. + * 						The image must be already opened before calling  @p gwinSetCustomDraw(). The image is tiled to fill + * 						the active area of the slider. The normal colors apply to the border and inactive area and the dividing line + * 						between the active and inactive areas. + * 						No checking is done to compare the dimensions of the slider to the size of the image. + * 						Note text is drawn on top of the image. + * @note				These custom drawing routines don't have to worry about setting clipping as the framework + * 						sets clipping to the object window prior to calling these routines.   *   * @api + * @{   */ -void gwinSliderDraw_Std(GHandle gh, bool_t isVertical, coord_t thumbpos, const GSliderDrawStyle *pstyle, void *param); +void gwinSliderDraw_Std(GWidgetObject *gw, void *param); +void gwinSliderDraw_Image(GWidgetObject *gw, void *param); +/* @} */  #ifdef __cplusplus  }  #endif -#endif /* GWIN_NEED_SLIDER */ -  #endif /* _GWIN_SLIDER_H */  /** @} */  | 
