summaryrefslogtreecommitdiff
path: root/grlib/imgbutton.h
diff options
context:
space:
mode:
authorYuval Adam <yuval@y3xz.com>2015-03-13 12:24:02 +0200
committerYuval Adam <yuval@y3xz.com>2015-03-13 12:24:02 +0200
commit788db64b8642bf31de6930d18a62177c64163ee0 (patch)
tree38e8291d1fcfceac7ad2a393ad74396ed6453d24 /grlib/imgbutton.h
parentc686407d271989d5c4bcc1b3c4f5bb6fcd1846a8 (diff)
Add grlib, fixes #5
Diffstat (limited to 'grlib/imgbutton.h')
-rw-r--r--grlib/imgbutton.h914
1 files changed, 914 insertions, 0 deletions
diff --git a/grlib/imgbutton.h b/grlib/imgbutton.h
new file mode 100644
index 0000000..597b3d4
--- /dev/null
+++ b/grlib/imgbutton.h
@@ -0,0 +1,914 @@
+//*****************************************************************************
+//
+// imgbutton.h - Prototypes for the image button widget.
+//
+// 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 __IMGBUTTON_H__
+#define __IMGBUTTON_H__
+
+//*****************************************************************************
+//
+//! \addtogroup imgbutton_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 image button widget.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ //! The generic widget information.
+ //
+ tWidget sBase;
+
+ //
+ //! The style for this widget. This is a set of flags defined by
+ //! IB_STYLE_xxx.
+ //
+ uint32_t ui32Style;
+
+ //
+ //! The color to use for foreground pixels when a 1bpp image or text is in
+ //! use. This value is ignored for all other image bit depths.
+ //
+ uint32_t ui32ForegroundColor;
+
+ //
+ //! The color to use for background pixels when the button is pressed
+ //! and a 1bpp image is in use. This value is ignored for all other image
+ //! bit depths. If IB_STYLE_FILL is specified, this is also the color that
+ //! will be used to fill the widget when it is in the pressed state.
+ //
+ uint32_t ui32PressedColor;
+
+ //
+ //! The color to use for background pixels when the button is released
+ //! and a 1bpp image is in use. This value is ignored for all other image
+ //! bit depths. If IB_STYLE_FILL is specified, this is also the color that
+ //! will be used to fill the widget when it is in the unpressed state.
+ //
+ uint32_t ui32BackgroundColor;
+
+ //
+ //! A pointer to the font used to render the button text, if
+ //! IB_STYLE_TEXT is selected.
+ //
+ const tFont *psFont;
+
+ //
+ //! A pointer to the text to draw on this push button, if IB_STYLE_TEXT is
+ //! selected.
+ //
+ const char *pcText;
+
+ //
+ //! A pointer to the image to be drawn onto this image button, if
+ //! IB_STYLE_IMG is selected.
+ //
+ const uint8_t *pui8Image;
+
+ //
+ //! A pointer to the image to be drawn onto this image button when it is
+ //! pressed.
+ //
+ const uint8_t *pui8PressImage;
+
+ //
+ //! A pointer to the image to be drawn above the background image for
+ //! the button.
+ //
+ const uint8_t *pui8KeycapImage;
+
+ //! The number of pixels to move the keycap image horizontally when the
+ //! button is drawn in its pressed state.
+ //
+ int16_t i16XOffset;
+
+ //
+ //! The number of pixels to move the keycap image vertically when the
+ //! button is drawn in its pressed state.
+ //
+ int16_t i16YOffset;
+
+ //
+ //! The number of pointer events to delay before starting to auto-repeat,
+ //! if IB_STYLE_AUTO_REPEAT is selected. The amount of time to which this
+ //! corresponds is dependent upon the rate at which pointer events are
+ //! generated by the pointer driver.
+ //
+ uint16_t ui16AutoRepeatDelay;
+
+ //
+ //! The number of pointer events between button presses generated by the
+ //! auto-repeat function, if IB_STYLE_AUTO_REPEAT is selected. The amount
+ //! of time to which this corresponds is dependent up on the rate at which
+ //! pointer events are generated by the pointer driver.
+ //
+ uint16_t ui16AutoRepeatRate;
+
+ //
+ //! The number of pointer events that have occurred. This is used when
+ //! IB_STYLE_AUTO_REPEAT is selected to generate the auto-repeat events.
+ //
+ uint32_t ui32AutoRepeatCount;
+
+ //
+ //! A pointer to the function to be called when the button is pressed.
+ //! This is repeatedly called when IB_STYLE_AUTO_REPEAT is selected.
+ //
+ void (*pfnOnClick)(tWidget *psWidget);
+}
+tImageButtonWidget;
+
+//*****************************************************************************
+//
+//! This flag indicates that the image button should be filled.
+//
+//*****************************************************************************
+#define IB_STYLE_FILL 0x00000002
+
+//*****************************************************************************
+//
+//! This flag indicates that the image button should have text drawn on it.
+//
+//*****************************************************************************
+#define IB_STYLE_TEXT 0x00000004
+
+//*****************************************************************************
+//
+//! This flag indicates that the background image is to be disabled.
+//
+//*****************************************************************************
+#define IB_STYLE_IMAGE_OFF 0x00000008
+
+//*****************************************************************************
+//
+//! This flag indicates that the keycap image is to be disabled.
+//
+//*****************************************************************************
+#define IB_STYLE_KEYCAP_OFF 0x00000010
+
+//*****************************************************************************
+//
+//! This flag indicates that the image button should auto-repeat, generating
+//! repeated click events while it is pressed.
+//
+//*****************************************************************************
+#define IB_STYLE_AUTO_REPEAT 0x00000020
+
+//*****************************************************************************
+//
+//! This flag indicates that the image button is pressed.
+//
+//*****************************************************************************
+#define IB_STYLE_PRESSED 0x00000040
+
+//*****************************************************************************
+//
+//! This flag indicates that the image button callback should be made when
+//! the button is released rather than when it is pressed. This does not
+//! affect the operation of auto repeat buttons.
+//
+//*****************************************************************************
+#define IB_STYLE_RELEASE_NOTIFY 0x00000080
+
+//*****************************************************************************
+//
+//! Declares an initialized image button 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 push
+//! button.
+//! \param i32X is the X coordinate of the upper left corner of the image
+//! button.
+//! \param i32Y is the Y coordinate of the upper left corner of the image
+//! button.
+//! \param i32Width is the width of the image button.
+//! \param i32Height is the height of the image button.
+//! \param ui32Style is the style to be applied to the image button.
+//! \param ui32ForeColor is the color to be used for foreground pixels when
+//! a 1bpp image or text is being drawn. It is ignored for all other image bit
+//! depths.
+//! \param ui32PressColor is the color to be used for foreground pixels when
+//! the button is pressed and a 1bpp image is being drawn. It is ignored for
+//! all other image bit depths.
+//! \param ui32BackColor is the color to be used for background pixels when
+//! the button is released and a 1bpp image is being drawn. It is ignored for
+//! all other image bit depths.
+//! \param psFont is a pointer to the font to be used to draw text on the button.
+//! \param pcText is a pointer to the text to draw on this button.
+//! \param pui8Image is a pointer to the image to draw on the background of
+//! this image button when it is in the released state.
+//! \param pui8PressImage is a pointer to the image to draw on the background
+//! of this image button when it is in the pressed state.
+//! \param pui8KeycapImage is a pointer to the image to draw as the keycap of
+//! the on top of the image button, on top of the background image.
+//! \param i16XOff is the horizontal offset to apply when drawing the keycap
+//! image on the button when in the pressed state.
+//! \param i16YOff is the vertical offset to apply when drawing the keycap
+//! image on the button when in the pressed state.
+//! \param ui16AutoRepeatDelay is the delay before starting auto-repeat.
+//! \param ui16AutoRepeatRate is the rate at which auto-repeat events are
+//! generated.
+//! \param pfnOnClick is a pointer to the function that is called when the push
+//! button is pressed.
+//!
+//! This macro provides an initialized image button 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
+//! tImageButtonWidget g_sImageButton = ImageButtonStruct(...);
+//! \endverbatim
+//!
+//! Or, in an array of variables:
+//!
+//! \verbatim
+//! tImageButtonWidget g_psImageButtons[] =
+//! {
+//! ImageButtonStruct(...),
+//! ImageButtonStruct(...)
+//! };
+//! \endverbatim
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b #IB_STYLE_TEXT to indicate that text should be drawn on the button.
+//! - \b #IB_STYLE_FILL to indicate that the background of the button should
+//! be filled with color.
+//! - \b #IB_STYLE_KEYCAP_OFF to indicate that the keycap image should not be
+//! drawn.
+//! - \b #IB_STYLE_IMAGE_OFF to indicate that the background image should not be
+//! drawn.
+//! - \b #IB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used.
+//! - \b #IB_STYLE_RELEASE_NOTIFY to indicate that the callback should be made
+//! when the button is released. If absent, the callback is called when the
+//! button is initially pressed.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define ImageButtonStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32ForeColor, \
+ ui32PressColor, ui32BackColor, psFont, pcText, \
+ pui8Image, pui8PressImage, pui8KeycapImage, \
+ i16XOff, i16YOff, ui16AutoRepeatDelay, \
+ ui16AutoRepeatRate, pfnOnClick) \
+ { \
+ { \
+ sizeof(tImageButtonWidget), \
+ (tWidget *)(psParent), \
+ (tWidget *)(psNext), \
+ (tWidget *)(psChild), \
+ psDisplay, \
+ { \
+ i32X, \
+ i32Y, \
+ (i32X) + (i32Width) - 1, \
+ (i32Y) + (i32Height) - 1 \
+ }, \
+ ImageButtonMsgProc \
+ }, \
+ ui32Style, \
+ ui32ForeColor, \
+ ui32PressColor, \
+ ui32BackColor, \
+ psFont, \
+ pcText, \
+ pui8Image, \
+ pui8PressImage, \
+ pui8KeycapImage, \
+ i16XOff, \
+ i16YOff, \
+ ui16AutoRepeatDelay, \
+ ui16AutoRepeatRate, \
+ 0, \
+ pfnOnClick \
+ }
+
+//*****************************************************************************
+//
+//! Declares an initialized variable containing a image button 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 push
+//! button.
+//! \param i32X is the X coordinate of the upper left corner of the image
+//! button.
+//! \param i32Y is the Y coordinate of the upper left corner of the image
+//! button.
+//! \param i32Width is the width of the image button.
+//! \param i32Height is the height of the image button.
+//! \param ui32Style is the style to be applied to the image button.
+//! \param ui32ForeColor is the color to be used for foreground pixels when
+//! a 1bpp image is being drawn. It is ignored for all other image bit depths.
+//! \param ui32PressColor is the color to be used for foreground pixels when
+//! the button is pressed and a 1bpp image is being drawn. It is ignored for
+//! all other image bit depths.
+//! \param ui32BackColor is the color to be used for background pixels when
+//! the button is released and a 1bpp image is being drawn. It is ignored for
+//! all other image bit depths.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! button.
+//! \param pcText is a pointer to the text to draw on this button.
+//! \param pui8Image is a pointer to the image to draw on the background of
+//! this image button when it is in the released state.
+//! \param pui8PressImage is a pointer to the image to draw on the background
+//! of this image button when it is in the pressed state.
+//! \param pui8KeycapImage is a pointer to the image to draw as the keycap of
+//! the on top of the image button, on top of the background image.
+//! \param i16XOff is the horizontal offset to apply when drawing the keycap
+//! image on the button when in the pressed state.
+//! \param i16YOff is the vertical offset to apply when drawing the keycap
+//! image on the button when in the pressed state.
+//! \param ui16AutoRepeatDelay is the delay before starting auto-repeat.
+//! \param ui16AutoRepeatRate is the rate at which auto-repeat events are
+//! generated.
+//! \param pfnOnClick is a pointer to the function that is called when the push
+//! button is pressed.
+//!
+//! This macro provides an initialized image button 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 #IB_STYLE_TEXT to indicate that text should be drawn on the button.
+//! - \b #IB_STYLE_FILL to indicate that the background of the button should
+//! be filled with color.
+//! - \b #IB_STYLE_KEYCAP_OFF to indicate that the keycap image should not be
+//! drawn.
+//! - \b #IB_STYLE_IMAGE_OFF to indicate that the background image should not
+//! be drawn.
+//! - \b #IB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used.
+//! - \b #IB_STYLE_RELEASE_NOTIFY to indicate that the callback should be made
+//! when the button is released. If absent, the callback is called when the
+//! button is initially pressed.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define ImageButton(sName, psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32ForeColor, \
+ ui32PressColor, ui32BackColor, psFont, pcText, pui8Image, \
+ pui8PressImage, pui8KeycapImage, i16XOff, i16YOff, \
+ ui16AutoRepeatDelay, ui16AutoRepeatRate, pfnOnClick) \
+ tImageButtonWidget sName = \
+ ImageButtonStruct(psParent, psNext, psChild, psDisplay, i32X, \
+ i32Y, i32Width, i32Height, ui32Style, \
+ ui32ForeColor, ui32PressColor, ui32BackColor, \
+ psFont, pcText, pui8Image, pui8PressImage, \
+ pui8KeycapImage, i16XOff, i16YOff, \
+ ui16AutoRepeatDelay, ui16AutoRepeatRate, \
+ pfnOnClick)
+
+//*****************************************************************************
+//
+//! Sets the auto-repeat delay for a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//! \param ui16Delay is the number of pointer events before auto-repeat starts.
+//!
+//! This function sets the delay before auto-repeat begins. Unpredictable
+//! behavior will occur if this is called while the image button is pressed.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonAutoRepeatDelaySet(psWidget, ui16Delay) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui16AutoRepeatDelay = ui16Delay; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables auto-repeat for a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function disables the auto-repeat behavior of a image button.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonAutoRepeatOff(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style &= ~(IB_STYLE_AUTO_REPEAT); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables auto-repeat for a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function enables the auto-repeat behavior of a image button.
+//! Unpredictable behavior will occur if this is called while the image button
+//! is pressed.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonAutoRepeatOn(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style |= IB_STYLE_AUTO_REPEAT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the auto-repeat rate for a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//! \param ui16Rate is the number of pointer events between auto-repeat events.
+//!
+//! This function sets the rate at which auto-repeat events occur.
+//! Unpredictable behavior will occur if this is called while the image button
+//! is pressed.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonAutoRepeatRateSet(psWidget, ui16Rate) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui16AutoRepeatRate = ui16Rate; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the function to call when this image button widget is pressed.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//! \param pfnOnClik is a pointer to the function to call.
+//!
+//! This function sets the function to be called when this image button is
+//! pressed. The supplied function is called when the image button is first
+//! pressed, and then repeated while the image button is pressed if auto-repeat
+//! is enabled.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonCallbackSet(psWidget, pfnOnClik) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->pfnOnClick = pfnOnClik; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the fill color of a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to fill the image button.
+//!
+//! This function changes the color used to fill the background of the image
+//! button on the display. This is a duplicate of
+//! ImageButtonBackgroundColorSet which is left for backwards compatibility.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonFillColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32BackgroundColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables filling of a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function disables the filling of a image button widget. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonFillOff(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style &= ~(IB_STYLE_FILL); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables filling of a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function enables the filling of a image button widget. The display is
+//! not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonFillOn(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style |= IB_STYLE_FILL; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the background image for an image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function enables the drawing of the background image on an image
+//! button widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonImageOn(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style &= ~(IB_STYLE_IMAGE_OFF); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the background image for an image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function disables the drawing of the background image on an image
+//! button widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonImageOff(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style |= IB_STYLE_IMAGE_OFF; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the keycap image for an image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function enables the drawing of the keycap image on an image button
+//! widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonKeycapOn(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style &= ~(IB_STYLE_KEYCAP_OFF); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the keycap image for an image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function disables the drawing of the keycap image on an image button
+//! widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonKeycapOff(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style |= IB_STYLE_KEYCAP_OFF; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the image drawn on a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param pImg is a pointer to the image to draw onto the image button.
+//!
+//! This function changes the image that is drawn onto the background of the
+//! image button in its unpressed state. The display is not updated until the
+//! next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonImageSet(psWidget, pImg) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ const uint8_t *pI = pImg; \
+ psW->pui8Image = pI; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the image drawn on a image button widget when it is pressed.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param pImg is a pointer to the image to draw onto the image button when it
+//! is pressed.
+//!
+//! This function changes the image that is drawn onto the background of the
+//! image button in its pressed state. The display is not updated until the
+//! next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonImagePressedSet(psWidget, pImg) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ const uint8_t *pI = pImg; \
+ psW->pui8PressImage = pI; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the keycap image drawn on a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param pImg is a pointer to the image to draw onto the image button.
+//!
+//! This function changes the image that is drawn onto the top of the push
+//! button. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonImageKeycapSet(psWidget, pImg) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ const uint8_t *pI = (pImg); \
+ psW->pui8KeycapImage = pI; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the keycap image offset position on an image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param i16X is the signed horizontal position offset for the keycap image
+//! when the image button is pressed. Positive values move the image right.
+//! \param i16Y is the signed vertical position offset for the keycap image
+//! when the image button is pressed. Positive values move the image down.
+//!
+//! This function changes the position that the keycap image is drawn at when
+//! the image button is pressed. The keycap image is moved iX pixels right and
+//! iY pixels down from the center position if the image button is pressed.
+//! This feature can be used to support 3D buttons. The display is not
+//! updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonKeycapOffsetSet(psWidget, i16X, i16Y) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->i16XOffset = (int16_t)(i16X); \
+ psW->i16YOffset = (int16_t)(i16Y); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the color of background pixels when using 1bpp images.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param ui32Color is the background color to use.
+//!
+//! This function changes the color that is used to draw background pixels when
+//! a 1bpp image is rendered on the button and the button is in the released
+//! state. The value is ignored for all other image bit depths. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonBackgroundColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32BackgroundColor = (ui32Color); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the color of foreground pixels when using 1bpp images.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param ui32Color is the foreground color to use.
+//!
+//! This function changes the color that is used to draw foreground pixels when
+//! a 1bpp image or text string is rendered on the button. The value is
+//! ignored for all other image bit depths. The display is not updated until
+//! the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonForegroundColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32ForegroundColor = (ui32Color); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the color of foreground pixels when the button is pressed and when
+//! using 1bpp images.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param ui32Color is the pressed foreground color to use.
+//!
+//! This function changes the color that is used to draw foreground pixels when
+//! a 1bpp image is rendered on the button and the button is in the pressed
+//! state. The value is ignored for all other image bit depths. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonPressedColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32PressedColor = (ui32Color); \
+ } \
+ while(0)
+
+
+//*****************************************************************************
+//
+//! Changes the text drawn on a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to be modified.
+//! \param pcTxt is a pointer to the text to draw onto the image button.
+//!
+//! This function changes the text that is drawn onto the image button. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonTextSet(psWidget, pcTxt) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ const char *pcT = pcTxt; \
+ psW->pcText = pcT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the text on a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function disables the drawing of text on a image button widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonTextOff(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style &= ~(IB_STYLE_TEXT); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the text on a image button widget.
+//!
+//! \param psWidget is a pointer to the image button widget to modify.
+//!
+//! This function enables the drawing of text on a image button widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ImageButtonTextOn(psWidget) \
+ do \
+ { \
+ tImageButtonWidget *psW = (tImageButtonWidget *)(psWidget); \
+ psW->ui32Style |= IB_STYLE_TEXT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+// Prototypes for the image button widget APIs.
+//
+//*****************************************************************************
+extern int32_t ImageButtonMsgProc(tWidget *psWidget, uint32_t ui32Msg,
+ uint32_t ui32Param1,
+ uint32_t ui32Param2);
+extern void ImageButtonInit(tImageButtonWidget *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 // __IMGBUTTON_H__