summaryrefslogtreecommitdiff
path: root/grlib/slider.h
diff options
context:
space:
mode:
Diffstat (limited to 'grlib/slider.h')
-rw-r--r--grlib/slider.h1202
1 files changed, 1202 insertions, 0 deletions
diff --git a/grlib/slider.h b/grlib/slider.h
new file mode 100644
index 0000000..cb3ec26
--- /dev/null
+++ b/grlib/slider.h
@@ -0,0 +1,1202 @@
+//*****************************************************************************
+//
+// slider.h - Prototypes for the slider widget class.
+//
+// Copyright (c) 2008-2014 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 2.1.0.12573 of the Tiva Graphics Library.
+//
+//*****************************************************************************
+
+#ifndef __SLIDER_H__
+#define __SLIDER_H__
+
+//*****************************************************************************
+//
+//! \addtogroup slider_api
+//! @{
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+// If building with a C++ compiler, make all of the definitions in this header
+// have a C binding.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+//*****************************************************************************
+//
+//! The structure that describes a slider widget.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ //! The generic widget information.
+ //
+ tWidget sBase;
+
+ //
+ //! The style for this widget. This is a set of flags defined by
+ //! SL_STYLE_xxx.
+ //
+ uint32_t ui32Style;
+
+ //
+ //! The 24-bit RGB color used to fill this slider, if SL_STYLE_FILL is
+ //! selected, and to use as the background color if SL_STYLE_TEXT_OPAQUE is
+ //! selected.
+ //
+ uint32_t ui32FillColor;
+
+ //
+ //! The 24-bit RGB color used to fill the background portion of the slider
+ //! if SL_STYLE_FILL is selected, and to use as the background color if
+ //! SL_STYLE_TEXT_OPAQUE is selected.
+ //
+ uint32_t ui32BackgroundFillColor;
+
+ //
+ //! The 24-bit RGB color used to outline this slider, if
+ //! SL_STYLE_OUTLINE is selected.
+ //
+ uint32_t ui32OutlineColor;
+
+ //
+ //! The 24-bit RGB color used to draw text on the "active" portion of
+ //! this slider, if SL_STYLE_TEXT is selected.
+ //
+ uint32_t ui32TextColor;
+
+ //
+ //! The 24-bit RGB color used to draw text on the background portion of
+ //! this slider, if SL_STYLE_TEXT is selected.
+ //
+ uint32_t ui32BackgroundTextColor;
+
+ //
+ //! A pointer to the font used to render the slider text, if
+ //! SL_STYLE_TEXT is selected.
+ //
+ const tFont *psFont;
+
+ //
+ //! A pointer to the text to draw on this slider, if SL_STYLE_TEXT is
+ //! selected.
+ //
+ const char *pcText;
+
+ //
+ //! A pointer to the image to be drawn onto this slider, if
+ //! SL_STYLE_IMG is selected.
+ //
+ const uint8_t *pui8Image;
+
+ //
+ //! A pointer to the image to be drawn onto this slider background if
+ //! SL_STYLE_BACKG_IMG is selected.
+ //
+ const uint8_t *pui8BackgroundImage;
+
+ //
+ //! A pointer to the function to be called when the state of the slider
+ //! changes.
+ //
+ void (*pfnOnChange)(tWidget *psWidget, int32_t i32Value);
+
+ //
+ //! The value represented by the slider at its zero position. This
+ //! value is returned if a horizontal slider is pulled to the far left or
+ //! a vertical slider is pulled to the bottom of widget's bounding
+ //! rectangle.
+ //
+ int32_t i32Min;
+
+ //
+ //! The value represented by the slider at its maximum position. This value
+ //! is returned if a horizontal slider is pulled to the far right or a
+ //! vertical slider is pulled to the top of the widget's bounding
+ //! rectangle.
+ //
+ int32_t i32Max;
+
+ //
+ //! The current slider value scaled according to the minimum and maximum
+ //! values for the control.
+ //
+ int32_t i32Value;
+
+ //
+ //! This internal work variable stores the pixel position representing the
+ //! current slider value.
+ //
+ int16_t i16Pos;
+}
+tSliderWidget;
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider should be outlined.
+//
+//*****************************************************************************
+#define SL_STYLE_OUTLINE 0x00000001
+
+//*****************************************************************************
+//
+//! This flag indicates that the active portion of the slider should be filled.
+//
+//*****************************************************************************
+#define SL_STYLE_FILL 0x00000002
+
+//*****************************************************************************
+//
+//! This flag indicates that the background portion of the slider should be
+//! filled.
+//
+//*****************************************************************************
+#define SL_STYLE_BACKG_FILL 0x00000004
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider should have text drawn on top of the
+//! active portion.
+//
+//*****************************************************************************
+#define SL_STYLE_TEXT 0x00000008
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider should have text drawn on top of the
+//! background portion.
+//
+//*****************************************************************************
+#define SL_STYLE_BACKG_TEXT 0x00000010
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider should have an image drawn on it.
+//
+//*****************************************************************************
+#define SL_STYLE_IMG 0x00000020
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider should have an image drawn on its
+//! background.
+//
+//*****************************************************************************
+#define SL_STYLE_BACKG_IMG 0x00000040
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider text should be drawn opaque (in
+//! other words, drawing the background pixels as well as the foreground
+//! pixels) in the active portion of the slider.
+//
+//*****************************************************************************
+#define SL_STYLE_TEXT_OPAQUE 0x00000080
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider text should be drawn opaque (in
+//! other words, drawing the background pixels as well as the foreground
+//! pixels) in the background portion of the slider.
+//
+//*****************************************************************************
+#define SL_STYLE_BACKG_TEXT_OPAQUE 0x00000100
+
+//*****************************************************************************
+//
+//! This flag indicates that the slider is vertical rather than horizontal. If
+//! the flag is absent, the slider is assumed to operate horizontally with the
+//! reported value increasing from left to right. If set, the reported value
+//! increases from the bottom of the widget towards the top.
+//
+//*****************************************************************************
+#define SL_STYLE_VERTICAL 0x00000200
+
+//*****************************************************************************
+//
+//! This flag causes the slider to ignore pointer input and act as a passive
+//! indicator. An application may set its value and repaint it as normal but
+//! its value will not be changed in response to any touchscreen activity.
+//
+//*****************************************************************************
+#define SL_STYLE_LOCKED 0x00000400
+
+//*****************************************************************************
+//
+//! Declares an initialized slider widget data structure.
+//!
+//! \param psParent is a pointer to the parent widget.
+//! \param psNext is a pointer to the sibling widget.
+//! \param psChild is a pointer to the first child widget.
+//! \param psDisplay is a pointer to the display on which to draw the slider.
+//! \param i32X is the X coordinate of the upper left corner of the slider.
+//! \param i32Y is the Y coordinate of the upper left corner of the slider.
+//! \param i32Width is the width of the slider.
+//! \param i32Height is the height of the slider.
+//! \param i32Min is the minimum value for the slider (corresponding to the
+//! left or bottom position).
+//! \param i32Max is the maximum value for the slider (corresponding to the
+//! right or top position).
+//! \param i32Value is the initial value of the slider. This must lie in the
+//! range defined by \e i32Min and \e i32Max.
+//! \param ui32Style is the style to be applied to the slider.
+//! \param ui32FillColor is the color used to fill in the slider.
+//! \param ui32BackgroundFillColor is the color used to fill the background
+//! area of the slider.
+//! \param ui32OutlineColor is the color used to outline the slider.
+//! \param ui32TextColor is the color used to draw text on the slider.
+//! \param ui32BackgroundTextColor is the color used to draw text on the
+//! background portion of the slider.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! slider.
+//! \param pcText is a pointer to the text to draw on this slider.
+//! \param pui8Image is a pointer to the image to draw on this slider.
+//! \param pui8BackgroundImage is a pointer to the image to draw on the slider
+//! background.
+//! \param pfnOnChange is a pointer to the function that is called to notify
+//! the application of slider value changes.
+//!
+//! This macro provides an initialized slider widget data structure, which can
+//! be used to construct the widget tree at compile time in global variables
+//! (as opposed to run-time via function calls). This must be assigned to a
+//! variable, such as:
+//!
+//! \verbatim
+//! tSliderWidget g_sSlider = SliderStruct(...);
+//! \endverbatim
+//!
+//! Or, in an array of variables:
+//!
+//! \verbatim
+//! tSliderWidget g_psSliders[] =
+//! {
+//! SliderStruct(...),
+//! SliderStruct(...)
+//! };
+//! \endverbatim
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b #SL_STYLE_OUTLINE to indicate that the slider should be outlined.
+//! - \b #SL_STYLE_FILL to indicate that the slider should be filled.
+//! - \b #SL_STYLE_BACKG_FILL to indicate that the background portion of the
+//! slider should be filled.
+//! - \b #SL_STYLE_TEXT to indicate that the slider should have text drawn
+//! on its active portion (using \e psFont and \e pcText).
+//! - \b #SL_STYLE_BACKG_TEXT to indicate that the slider should have text drawn
+//! on its background portion (using \e psFont and \e pcText).
+//! - \b #SL_STYLE_IMG to indicate that the slider should have an image
+//! drawn on it (using \e pui8Image).
+//! - \b #SL_STYLE_BACKG_IMG to indicate that the slider should have an image
+//! drawn on its background (using \e pui8BackgroundImage).
+//! - \b #SL_STYLE_TEXT_OPAQUE to indicate that the slider text should be
+//! drawn opaque (in other words, drawing the background pixels).
+//! - \b #SL_STYLE_BACKG_TEXT_OPAQUE to indicate that the slider text should be
+//! drawn opaque in the background portion of the widget. (in other words,
+//! drawing the background pixels).
+//! - \b #SL_STYLE_VERTICAL to indicate that this is a vertical slider
+//! rather than a horizontal one (the default if this style flag is not set).
+//! - \b #SL_STYLE_LOCKED to indicate that the slider is being used as an
+//! indicator and should ignore user input.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define SliderStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, i32Min, i32Max, i32Value, \
+ ui32Style, ui32FillColor, ui32BackgroundFillColor, \
+ ui32OutlineColor, ui32TextColor, \
+ ui32BackgroundTextColor, psFont, pcText, pui8Image, \
+ pui8BackgroundImage, pfnOnChange) \
+ { \
+ { \
+ sizeof(tSliderWidget), \
+ (tWidget *)(psParent), \
+ (tWidget *)(psNext), \
+ (tWidget *)(psChild), \
+ psDisplay, \
+ { \
+ i32X, \
+ i32Y, \
+ (i32X) + (i32Width) - 1, \
+ (i32Y) + (i32Height) - 1 \
+ }, \
+ SliderMsgProc \
+ }, \
+ ui32Style, \
+ ui32FillColor, \
+ ui32BackgroundFillColor, \
+ ui32OutlineColor, \
+ ui32TextColor, \
+ ui32BackgroundTextColor, \
+ psFont, \
+ pcText, \
+ pui8Image, \
+ pui8BackgroundImage, \
+ pfnOnChange, \
+ i32Min, \
+ i32Max, \
+ i32Value, \
+ 0 \
+ }
+
+//*****************************************************************************
+//
+//! Declares an initialized variable containing a slider widget data structure.
+//!
+//! \param sName is the name of the variable to be declared.
+//! \param psParent is a pointer to the parent widget.
+//! \param psNext is a pointer to the sibling widget.
+//! \param psChild is a pointer to the first child widget.
+//! \param psDisplay is a pointer to the display on which to draw the slider.
+//! \param i32X is the X coordinate of the upper left corner of the slider.
+//! \param i32Y is the Y coordinate of the upper left corner of the slider.
+//! \param i32Width is the width of the slider.
+//! \param i32Height is the height of the slider.
+//! \param i32Min is the minimum value for the slider (corresponding to the
+//! left or bottom position).
+//! \param i32Max is the maximum value for the slider (corresponding to the
+//! right or top position).
+//! \param i32Value is the initial value of the slider. This must lie in the
+//! range defined by \e i32Min and \e i32Max.
+//! \param ui32Style is the style to be applied to the slider.
+//! \param ui32FillColor is the color used to fill in the slider.
+//! \param ui32BackgroundFillColor is the color used to fill in the background
+//! area of the slider.
+//! \param ui32OutlineColor is the color used to outline the slider.
+//! \param ui32TextColor is the color used to draw text on the slider.
+//! \param ui32BackgroundTextColor is the color used to draw text on the
+//! background portion of the slider.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! slider.
+//! \param pcText is a pointer to the text to draw on this slider.
+//! \param pui8Image is a pointer to the image to draw on this slider.
+//! \param pui8BackgroundImage is a pointer to the image to draw on the slider
+//! background.
+//! \param pfnOnChange is a pointer to the function that is called to notify
+//! the application of slider value changes.
+//!
+//! This macro provides an initialized slider widget data structure, which can
+//! be used to construct the widget tree at compile time in global variables
+//! (as opposed to run-time via function calls).
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b #SL_STYLE_OUTLINE to indicate that the slider should be outlined.
+//! - \b #SL_STYLE_FILL to indicate that the slider should be filled.
+//! - \b #SL_STYLE_BACKG_FILL to indicate that the background portion of the
+//! slider should be filled.
+//! - \b #SL_STYLE_TEXT to indicate that the slider should have text drawn
+//! on its active portion (using \e psFont and \e pcText).
+//! - \b #SL_STYLE_BACKG_TEXT to indicate that the slider should have text
+//! drawn on its background portion (using \e psFont and \e pcText).
+//! - \b #SL_STYLE_IMG to indicate that the slider should have an image
+//! drawn on it (using \e pui8Image).
+//! - \b #SL_STYLE_BACKG_IMG to indicate that the slider should have an image
+//! drawn on its background (using \e pui8BackgroundImage).
+//! - \b #SL_STYLE_TEXT_OPAQUE to indicate that the slider text should be
+//! drawn opaque (in other words, drawing the background pixels).
+//! - \b #SL_STYLE_BACKG_TEXT_OPAQUE to indicate that the slider text should be
+//! drawn opaque in the background portion of the widget. (in other words,
+//! drawing the background pixels).
+//! - \b #SL_STYLE_VERTICAL to indicate that this is a vertical slider
+//! rather than a horizontal one (the default if this style flag is not set).
+//! - \b #SL_STYLE_LOCKED to indicate that the slider is being used as an
+//! indicator and should ignore user input.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define Slider(sName, psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, i32Min, i32Max, i32Value, ui32Style, \
+ ui32FillColor, ui32BackgroundFillColor, ui32OutlineColor, \
+ ui32TextColor, ui32BackgroundTextColor, psFont, pcText, \
+ pui8Image, pui8BackgroundImage, pfnOnChange) \
+ tSliderWidget sName = \
+ SliderStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, i32Min, i32Max, i32Value, \
+ ui32Style, ui32FillColor, ui32BackgroundFillColor, \
+ ui32OutlineColor, ui32TextColor, \
+ ui32BackgroundTextColor, psFont, pcText, \
+ pui8Image, pui8BackgroundImage, pfnOnChange)
+
+//*****************************************************************************
+//
+//! Sets the function to call when this slider widget's value changes.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//! \param pfnCallback is a pointer to the function to call.
+//!
+//! This function sets the function to be called when the value represented by
+//! the slider changes.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderCallbackSet(psWidget, pfnCallback) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->pfnOnChange = pfnCallback; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the fill color for the active area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to fill the slider.
+//!
+//! This function changes the color used to fill the active are of the slider
+//! on the display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderFillColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32FillColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the fill color for the background area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to fill the background area
+//! of the slider.
+//!
+//! This function changes the color used to fill the background area of the
+//! slider on the display. The display is not updated until the next paint
+//! request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderFillColorBackgroundedSet(psWidget, ui32Color) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32BackgroundFillColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables filling of the active area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the filling of the active area of a slider widget.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderFillOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_FILL); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables filling of the active area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the filling of the active area of a slider widget.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderFillOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_FILL; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables filling of the background area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the filling of the background area of a slider
+//! widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundFillOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_BACKG_FILL ); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables filling of the background area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the filling of the background area of a slider widget.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundFillOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_BACKG_FILL ; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the font for a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//! \param psFnt is a pointer to the font to use to draw text on the slider.
+//!
+//! This function changes the font used to draw text on the slider. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderFontSet(psWidget, psFnt) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ const tFont *psF = psFnt; \
+ psW->psFont = psF; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the image drawn on the active area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param pImg is a pointer to the image to draw onto the slider.
+//!
+//! This function changes the image that is drawn on the active area of the
+//! slider. This image will be centered within the widget rectangle and the
+//! portion represented by the current slider value will be visible. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderImageSet(psWidget, pImg) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ const uint8_t *pI = pImg; \
+ psW->pui8Image = pI; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the image drawn on the background area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param pImg is a pointer to the image to draw onto the background area of
+//! the slider.
+//!
+//! This function changes the image that is drawn onto the background area of
+//! the slider. This image will be centered within the widget rectangle and
+//! the portion in the area not represented by the current slider value will
+//! be visible. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundImageSet(psWidget, pImg) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ const uint8_t *pI = pImg; \
+ psW->pui8BackgroundImage = pI; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the image on the active area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the drawing of an image on the active area of a
+//! slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderImageOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_IMG); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the image on the active area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the drawing of an image on the active area of a
+//! slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderImageOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_IMG; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the image on the background area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the drawing of an image on the background area of a
+//! slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundImageOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_BACKG_IMG); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the image on the background area of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the drawing of an image on the background area of a
+//! slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundImageOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_BACKG_IMG; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the outline color of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to outline the slider.
+//!
+//! This function changes the color used to outline the slider on the
+//! display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderOutlineColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32OutlineColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables outlining of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the outlining of a slider widget. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderOutlineOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_OUTLINE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables outlining of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the outlining of a slider widget. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderOutlineOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_OUTLINE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the text color of the active portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to draw text on the slider.
+//!
+//! This function changes the color used to draw text on the active portion of
+//! the slider on the display. The display is not updated until the next paint
+//! request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderTextColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32TextColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the background text color of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to draw background text on
+//! the slider.
+//!
+//! This function changes the color used to draw text on the slider's
+//! background portion on the display. The display is not updated until the
+//! next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundTextColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32BackgroundTextColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the text on the active portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the drawing of text on the active portion of a
+//! slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderTextOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_TEXT); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the text on the active portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the drawing of text on the active portion of a slider
+//! widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderTextOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_TEXT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables opaque text on the active portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the use of opaque text on the active portion of this
+//! slider. When not using opaque text, only the foreground pixels of the text
+//! are drawn on the screen, allowing the previously drawn pixels (such as the
+//! slider image) to show through the text. Note that SL_STYLE_TEXT must also
+//! be cleared to disable text rendering on the slider active area.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderTextOpaqueOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_TEXT_OPAQUE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables opaque text on the active portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the use of opaque text on the active portion of this
+//! slider. When using opaque text, both the foreground and background pixels
+//! of the text are drawn on the screen, blocking out the previously drawn
+//! pixels. Note that SL_STYLE_TEXT must also be set to enable text
+//! rendering on the slider active area.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderTextOpaqueOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_TEXT_OPAQUE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the text on the background portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the drawing of text on the background portion of
+//! a slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundTextOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_BACKG_TEXT); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the text on the background portion of a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the drawing of text on the background portion of a
+//! slider widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundTextOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_BACKG_TEXT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables opaque background text on a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function disables the use of opaque text on the background portion of
+//! this slider. When not using opaque text, only the foreground pixels of the
+//! text are drawn on the screen, allowing the previously drawn pixels (such as
+//! the slider image) to show through the text. Note that SL_STYLE_BACKG_TEXT
+//! must also be cleared to disable text rendering on the slider background
+//! area.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundTextOpaqueOff(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_BACKG_TEXT_OPAQUE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables opaque background text on a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function enables the use of opaque text on the background portion of
+//! this slider. When using opaque text, both the foreground and background
+//! pixels of the text are drawn on the screen, blocking out the previously
+//! drawn pixels. Note that SL_STYLE_BACKG_TEXT must also be set to enable
+//! text rendering on the slider background area.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderBackgroundTextOpaqueOn(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_BACKG_TEXT_OPAQUE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Locks a slider making it ignore pointer input.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function locks a slider widget and makes it ignore all pointer input.
+//! When locked, a slider acts as a passive indicator. Its value may be
+//! changed using SliderValueSet() and the value display updated using
+//! WidgetPaint() but no user interaction via the pointer will change the
+//! widget value.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderLock(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style |= SL_STYLE_LOCKED; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Unlocks a slider making it pay attention to pointer input.
+//!
+//! \param psWidget is a pointer to the slider widget to modify.
+//!
+//! This function unlocks a slider widget. When unlocked, a slider will
+//! respond to pointer input by setting its value appropriately and informing
+//! the application via callbacks.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderUnlock(psWidget) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->ui32Style &= ~(SL_STYLE_LOCKED); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the text drawn on a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param pcTxt is a pointer to the text to draw onto the slider.
+//!
+//! This function changes the text that is drawn onto the slider. The string
+//! is centered across the slider and straddles the active and background
+//! portions of the widget. The display is not updated until the next paint
+//! request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderTextSet(psWidget, pcTxt) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ const char *pcT = pcTxt; \
+ psW->pcText = pcT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the value range for a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param i32Minimum is the minimum value that the slider will report.
+//! \param i32Maximum is the maximum value that the slider will report.
+//!
+//! This function changes the range of a slider. Slider positions are reported
+//! in terms of this range with the current position of the slider on the
+//! display being scaled and translated into this range such that the minimum
+//! value represents the left position of a horizontal slider or the bottom
+//! position of a vertical slider and the maximum value represents the other
+//! end of the slider range. Note that this function does not cause the slider
+//! to be redrawn. The caller must call WidgetPaint() explicitly after this
+//! call to ensure that the widget is redrawn.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderRangeSet(psWidget, i32Minimum, i32Maximum) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->i32Min = (i32Minimum); \
+ psW->i32Max = (i32Maximum); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the minimum value for a slider widget.
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param i32Val is the new value to set for the slider. This is in terms of
+//! the value range currently set for the slider.
+//!
+//! This function changes the value that the slider will display the next time
+//! the widget is painted. The caller is responsible for ensuring that the
+//! value passed is within the range specified for the target widget. The
+//! caller must call WidgetPaint() explicitly after this call to ensure that
+//! the widget is redrawn.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderValueSet(psWidget, i32Val) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ psW->i32Value = (i32Val); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the vertical or horizontal style for a slider widget
+//!
+//! \param psWidget is a pointer to the slider widget to be modified.
+//! \param bVertical is \b true to set the vertical slider style or \b false
+//! to set the horizontal slider style.
+//!
+//! This function allows the vertical or horizontal style to be set when
+//! creating slider widgets dynamically. The function will typically be called
+//! before the slider is first attached to the active widget tree. Since the
+//! vertical or horizontal style is intimately linked with the slider size
+//! and position on the display, it seldom makes sense to change this style for
+//! a widget which is already on the display.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define SliderVerticalSet(psWidget, bVertical) \
+ do \
+ { \
+ tSliderWidget *psW = psWidget; \
+ if(bVertical) \
+ { \
+ psW->ui32Style |= (SL_STYLE_VERTICAL); \
+ } \
+ else \
+ { \
+ psW->ui32Style &= ~(SL_STYLE_VERTICAL); \
+ } \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+// Prototypes for the slider widget APIs.
+//
+//*****************************************************************************
+extern int32_t SliderMsgProc(tWidget *psWidget, uint32_t ui32Msg,
+ uint32_t ui32Param1, uint32_t ui32Param2);
+extern void SliderInit(tSliderWidget *psWidget,
+ const tDisplay *psDisplay, int32_t i32X, int32_t i32Y,
+ int32_t i32Width, int32_t i32Height);
+
+//*****************************************************************************
+//
+// Mark the end of the C bindings section for C++ compilers.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+}
+#endif
+
+//*****************************************************************************
+//
+// Close the Doxygen group.
+//! @}
+//
+//*****************************************************************************
+
+#endif // __SLIDER_H__