From 788db64b8642bf31de6930d18a62177c64163ee0 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Fri, 13 Mar 2015 12:24:02 +0200 Subject: Add grlib, fixes #5 --- grlib/imgbutton.h | 914 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 914 insertions(+) create mode 100644 grlib/imgbutton.h (limited to 'grlib/imgbutton.h') 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__ -- cgit v1.3.1