//***************************************************************************** // // pushbutton.h - Prototypes for the push buttons. // // Copyright (c) 2008-2010 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 6288 of the Stellaris Graphics Library. // //***************************************************************************** #ifndef __PUSHBUTTON_H__ #define __PUSHBUTTON_H__ //***************************************************************************** // //! \addtogroup pushbutton_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 push button widget. // //***************************************************************************** typedef struct { // //! The generic widget information. // tWidget sBase; // //! The style for this widget. This is a set of flags defined by //! PB_STYLE_xxx. // unsigned int ulStyle; // //! The 24-bit RGB color used to fill this push button, if PB_STYLE_FILL is //! selected, and to use as the background color if PB_STYLE_TEXT_OPAQUE is //! selected. // unsigned int ulFillColor; // //! The 24-bit RGB color used to fill this push button when it is pressed, //! if PB_STYLE_FILL is selected, and to use as the background color if //! PB_STYLE_TEXT_OPAQUE is selected. // unsigned int ulPressFillColor; // //! The 24-bit RGB color used to outline this push button, if //! PB_STYLE_OUTLINE is selected. // unsigned int ulOutlineColor; // //! The 24-bit RGB color used to draw text on this push button, if //! PB_STYLE_TEXT is selected. // unsigned int ulTextColor; // //! A pointer to the font used to render the push button text, if //! PB_STYLE_TEXT is selected. // const tFont *pFont; // //! A pointer to the text to draw on this push button, if PB_STYLE_TEXT is //! selected. // const char *pcText; // //! A pointer to the image to be drawn onto this push button, if //! PB_STYLE_IMG is selected. // const unsigned char *pucImage; // //! A pointer to the image to be drawn onto this push button when it is //! pressed, if PB_STYLE_IMG is selected. // const unsigned char *pucPressImage; // //! The number of pointer events to delay before starting to auto-repeat, //! if PB_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. // unsigned short usAutoRepeatDelay; // //! The number of pointer events between button presses generated by the //! auto-repeat function, if PB_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. // unsigned short usAutoRepeatRate; // //! The number of pointer events that have occurred. This is used when //! PB_STYLE_AUTO_REPEAT is selected to generate the auto-repeat events. // unsigned int ulAutoRepeatCount; // //! A pointer to the function to be called when the button is pressed. //! This is repeatedly called when PB_STYLE_AUTO_REPEAT is selected. // void (*pfnOnClick)(tWidget *pWidget); } tPushButtonWidget; //***************************************************************************** // //! This flag indicates that the push button should be outlined. // //***************************************************************************** #define PB_STYLE_OUTLINE 0x00000001 //***************************************************************************** // //! This flag indicates that the push button should be filled. // //***************************************************************************** #define PB_STYLE_FILL 0x00000002 //***************************************************************************** // //! This flag indicates that the push button should have text drawn on it. // //***************************************************************************** #define PB_STYLE_TEXT 0x00000004 //***************************************************************************** // //! This flag indicates that the push button should have an image drawn on it. // //***************************************************************************** #define PB_STYLE_IMG 0x00000008 //***************************************************************************** // //! This flag indicates that the push button text should be drawn opaque (in //! other words, drawing the background pixels as well as the foreground //! pixels). // //***************************************************************************** #define PB_STYLE_TEXT_OPAQUE 0x00000010 //***************************************************************************** // //! This flag indicates that the push button should auto-repeat, generating //! repeated click events while it is pressed. // //***************************************************************************** #define PB_STYLE_AUTO_REPEAT 0x00000020 //***************************************************************************** // //! This flag indicates that the push button is pressed. // //***************************************************************************** #define PB_STYLE_PRESSED 0x00000040 //***************************************************************************** // //! This flag indicates that the push 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 PB_STYLE_RELEASE_NOTIFY 0x00000080 //***************************************************************************** // //! Declares an initialized circular push button widget data structure. //! //! \param pParent is a pointer to the parent widget. //! \param pNext is a pointer to the sibling widget. //! \param pChild is a pointer to the first child widget. //! \param pDisplay is a pointer to the display on which to draw the push //! button. //! \param lX is the X coordinate of the center of the push button. //! \param lY is the Y coordinate of the center of the push button. //! \param lR is the radius of the push button. //! \param ulStyle is the style to be applied to the push button. //! \param ulFillColor is the color used to fill in the push button. //! \param ulPressFillColor is the color used to fill in the push button when //! it is pressed. //! \param ulOutlineColor is the color used to outline the push button. //! \param ulTextColor is the color used to draw text on the push button. //! \param pFont is a pointer to the font to be used to draw text on the push //! button. //! \param pcText is a pointer to the text to draw on this push button. //! \param pucImage is a pointer to the image to draw on this push button. //! \param pucPressImage is a pointer to the image to draw on this push button //! when it is pressed. //! \param usAutoRepeatDelay is the delay before starting auto-repeat. //! \param usAutoRepeatRate 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 circular push 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 //! tPushButtonWidget g_sPushButton = CircularButtonStruct(...); //! \endverbatim //! //! Or, in an array of variables: //! //! \verbatim //! tPushButtonWidget g_psPushButtons[] = //! { //! CircularButtonStruct(...), //! CircularButtonStruct(...) //! }; //! \endverbatim //! //! \e ulStyle is the logical OR of the following: //! //! - \b #PB_STYLE_OUTLINE to indicate that the push button should be outlined. //! - \b #PB_STYLE_FILL to indicate that the push button should be filled. //! - \b #PB_STYLE_TEXT to indicate that the push button should have text drawn //! on it (using \e pFont and \e pcText). //! - \b #PB_STYLE_IMG to indicate that the push button should have an image //! drawn on it (using \e pucImage). //! - \b #PB_STYLE_TEXT_OPAQUE to indicate that the push button text should be //! drawn opaque (in other words, drawing the background pixels). //! - \b #PB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used. //! - \b #PB_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 CircularButtonStruct(pParent, pNext, pChild, pDisplay, lX, lY, lR, \ ulStyle, ulFillColor, ulPressFillColor, \ ulOutlineColor, ulTextColor, pFont, pcText, \ pucImage, pucPressImage, usAutoRepeatDelay, \ usAutoRepeatRate, pfnOnClick) \ { \ { \ sizeof(tPushButtonWidget), \ (tWidget *)(pParent), \ (tWidget *)(pNext), \ (tWidget *)(pChild), \ pDisplay, \ { \ (lX) - (lR), \ (lY) - (lR), \ (lX) + (lR), \ (lY) + (lR) \ }, \ CircularButtonMsgProc \ }, \ ulStyle, \ ulFillColor, \ ulPressFillColor, \ ulOutlineColor, \ ulTextColor, \ pFont, \ pcText, \ pucImage, \ pucPressImage, \ usAutoRepeatDelay, \ usAutoRepeatRate, \ 0, \ pfnOnClick \ } //***************************************************************************** // //! Declares an initialized variable containing a circular push button widget //! data structure. //! //! \param sName is the name of the variable to be declared. //! \param pParent is a pointer to the parent widget. //! \param pNext is a pointer to the sibling widget. //! \param pChild is a pointer to the first child widget. //! \param pDisplay is a pointer to the display on which to draw the push //! button. //! \param lX is the X coordinate of the center of the push button. //! \param lY is the Y coordinate of the center of the push button. //! \param lR is the radius of the push button. //! \param ulStyle is the style to be applied to the push button. //! \param ulFillColor is the color used to fill in the push button. //! \param ulPressFillColor is the color used to fill in the push button when //! it is pressed. //! \param ulOutlineColor is the color used to outline the push button. //! \param ulTextColor is the color used to draw text on the push button. //! \param pFont is a pointer to the font to be used to draw text on the push //! button. //! \param pcText is a pointer to the text to draw on this push button. //! \param pucImage is a pointer to the image to draw on this push button. //! \param pucPressImage is a pointer to the image to draw on this push button //! when it is pressed. //! \param usAutoRepeatDelay is the delay before starting auto-repeat. //! \param usAutoRepeatRate 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 circular push 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 ulStyle is the logical OR of the following: //! //! - \b #PB_STYLE_OUTLINE to indicate that the push button should be outlined. //! - \b #PB_STYLE_FILL to indicate that the push button should be filled. //! - \b #PB_STYLE_TEXT to indicate that the push button should have text drawn //! on it (using \e pFont and \e pcText). //! - \b #PB_STYLE_IMG to indicate that the push button should have an image //! drawn on it (using \e pucImage). //! - \b #PB_STYLE_TEXT_OPAQUE to indicate that the push button text should be //! drawn opaque (in other words, drawing the background pixels). //! - \b #PB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used. //! - \b #PB_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 CircularButton(sName, pParent, pNext, pChild, pDisplay, lX, lY, lR, \ ulStyle, ulFillColor, ulPressFillColor, \ ulOutlineColor, ulTextColor, pFont, pcText, pucImage, \ pucPressImage, usAutoRepeatDelay, usAutoRepeatRate, \ pfnOnClick) \ tPushButtonWidget sName = \ CircularButtonStruct(pParent, pNext, pChild, pDisplay, lX, lY, \ lR, ulStyle, ulFillColor, ulPressFillColor, \ ulOutlineColor, ulTextColor, pFont, pcText, \ pucImage, pucPressImage, usAutoRepeatDelay, \ usAutoRepeatRate, pfnOnClick) //***************************************************************************** // //! Declares an initialized rectangular push button widget data structure. //! //! \param pParent is a pointer to the parent widget. //! \param pNext is a pointer to the sibling widget. //! \param pChild is a pointer to the first child widget. //! \param pDisplay is a pointer to the display on which to draw the push //! button. //! \param lX is the X coordinate of the upper left corner of the push button. //! \param lY is the Y coordinate of the upper left corner of the push button. //! \param lWidth is the width of the push button. //! \param lHeight is the height of the push button. //! \param ulStyle is the style to be applied to the push button. //! \param ulFillColor is the color used to fill in the push button. //! \param ulPressFillColor is the color used to fill in the push button when //! it is pressed. //! \param ulOutlineColor is the color used to outline the push button. //! \param ulTextColor is the color used to draw text on the push button. //! \param pFont is a pointer to the font to be used to draw text on the push //! button. //! \param pcText is a pointer to the text to draw on this push button. //! \param pucImage is a pointer to the image to draw on this push button. //! \param pucPressImage is a pointer to the image to draw on this push button //! when it is pressed. //! \param usAutoRepeatDelay is the delay before starting auto-repeat. //! \param usAutoRepeatRate 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 rectangular push 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 //! tPushButtonWidget g_sPushButton = RectangularButtonStruct(...); //! \endverbatim //! //! Or, in an array of variables: //! //! \verbatim //! tPushButtonWidget g_psPushButtons[] = //! { //! RectangularButtonStruct(...), //! RectangularButtonStruct(...) //! }; //! \endverbatim //! //! \e ulStyle is the logical OR of the following: //! //! - \b #PB_STYLE_OUTLINE to indicate that the push button should be outlined. //! - \b #PB_STYLE_FILL to indicate that the push button should be filled. //! - \b #PB_STYLE_TEXT to indicate that the push button should have text drawn //! on it (using \e pFont and \e pcText). //! - \b #PB_STYLE_IMG to indicate that the push button should have an image //! drawn on it (using \e pucImage). //! - \b #PB_STYLE_TEXT_OPAQUE to indicate that the push button text should be //! drawn opaque (in other words, drawing the background pixels). //! - \b #PB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used. //! - \b #PB_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 RectangularButtonStruct(pParent, pNext, pChild, pDisplay, lX, lY, \ lWidth, lHeight, ulStyle, ulFillColor, \ ulPressFillColor, ulOutlineColor, \ ulTextColor, pFont, pcText, pucImage, \ pucPressImage, usAutoRepeatDelay, \ usAutoRepeatRate, pfnOnClick) \ { \ { \ sizeof(tPushButtonWidget), \ (tWidget *)(pParent), \ (tWidget *)(pNext), \ (tWidget *)(pChild), \ pDisplay, \ { \ lX, \ lY, \ (lX) + (lWidth) - 1, \ (lY) + (lHeight) - 1 \ }, \ RectangularButtonMsgProc \ }, \ ulStyle, \ ulFillColor, \ ulPressFillColor, \ ulOutlineColor, \ ulTextColor, \ pFont, \ pcText, \ pucImage, \ pucPressImage, \ usAutoRepeatDelay, \ usAutoRepeatRate, \ 0, \ pfnOnClick \ } //***************************************************************************** // //! Declares an initialized variable containing a rectangular push button //! widget data structure. //! //! \param sName is the name of the variable to be declared. //! \param pParent is a pointer to the parent widget. //! \param pNext is a pointer to the sibling widget. //! \param pChild is a pointer to the first child widget. //! \param pDisplay is a pointer to the display on which to draw the push //! button. //! \param lX is the X coordinate of the upper left corner of the push button. //! \param lY is the Y coordinate of the upper left corner of the push button. //! \param lWidth is the width of the push button. //! \param lHeight is the height of the push button. //! \param ulStyle is the style to be applied to the push button. //! \param ulFillColor is the color used to fill in the push button. //! \param ulPressFillColor is the color used to fill in the push button when //! it is pressed. //! \param ulOutlineColor is the color used to outline the push button. //! \param ulTextColor is the color used to draw text on the push button. //! \param pFont is a pointer to the font to be used to draw text on the push //! button. //! \param pcText is a pointer to the text to draw on this push button. //! \param pucImage is a pointer to the image to draw on this push button. //! \param pucPressImage is a pointer to the image to draw on this push button //! when it is pressed. //! \param usAutoRepeatDelay is the delay before starting auto-repeat. //! \param usAutoRepeatRate 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 rectangular push 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 ulStyle is the logical OR of the following: //! //! - \b #PB_STYLE_OUTLINE to indicate that the push button should be outlined. //! - \b #PB_STYLE_FILL to indicate that the push button should be filled. //! - \b #PB_STYLE_TEXT to indicate that the push button should have text drawn //! on it (using \e pFont and \e pcText). //! - \b #PB_STYLE_IMG to indicate that the push button should have an image //! drawn on it (using \e pucImage). //! - \b #PB_STYLE_TEXT_OPAQUE to indicate that the push button text should be //! drawn opaque (in other words, drawing the background pixels). //! - \b #PB_STYLE_AUTO_REPEAT to indicate that auto-repeat should be used. //! - \b #PB_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 RectangularButton(sName, pParent, pNext, pChild, pDisplay, lX, lY, \ lWidth, lHeight, ulStyle, ulFillColor, \ ulPressFillColor, ulOutlineColor, ulTextColor, \ pFont, pcText, pucImage, pucPressImage, \ usAutoRepeatDelay, usAutoRepeatRate, pfnOnClick) \ tPushButtonWidget sName = \ RectangularButtonStruct(pParent, pNext, pChild, pDisplay, lX, lY, \ lWidth, lHeight, ulStyle, ulFillColor, \ ulPressFillColor, ulOutlineColor, \ ulTextColor, pFont, pcText, pucImage, \ pucPressImage, usAutoRepeatDelay, \ usAutoRepeatRate, pfnOnClick) //***************************************************************************** // //! Sets the auto-repeat delay for a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! \param usDelay 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 push button is pressed. //! //! \return None. // //***************************************************************************** #define PushButtonAutoRepeatDelaySet(pWidget, usDelay) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->usAutoRepeatDelay = usDelay; \ } \ while(0) //***************************************************************************** // //! Disables auto-repeat for a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function disables the auto-repeat behavior of a push button. //! //! \return None. // //***************************************************************************** #define PushButtonAutoRepeatOff(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle &= ~(PB_STYLE_AUTO_REPEAT); \ } \ while(0) //***************************************************************************** // //! Enables auto-repeat for a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function enables the auto-repeat behavior of a push button. //! Unpredictable behavior will occur if this is called while the push button //! is pressed. //! //! \return None. // //***************************************************************************** #define PushButtonAutoRepeatOn(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle |= PB_STYLE_AUTO_REPEAT; \ } \ while(0) //***************************************************************************** // //! Sets the auto-repeat rate for a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! \param usRate 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 push button //! is pressed. //! //! \return None. // //***************************************************************************** #define PushButtonAutoRepeatRateSet(pWidget, usRate) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->usAutoRepeatRate = usRate; \ } \ while(0) //***************************************************************************** // //! Sets the function to call when this push button widget is pressed. //! //! \param pWidget is a pointer to the push button widget to modify. //! \param pfnOnClik is a pointer to the function to call. //! //! This function sets the function to be called when this push button is //! pressed. The supplied function is called when the push button is first //! pressed, and then repeated while the push button is pressed if auto-repeat //! is enabled. //! //! \return None. // //***************************************************************************** #define PushButtonCallbackSet(pWidget, pfnOnClik) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->pfnOnClick = pfnOnClik; \ } \ while(0) //***************************************************************************** // //! Sets the fill color of a push button widget. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param ulColor is the 24-bit RGB color to use to fill the push button. //! //! This function changes the color used to fill the push button on the //! display. The display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonFillColorSet(pWidget, ulColor) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulFillColor = ulColor; \ } \ while(0) //***************************************************************************** // //! Sets the fill color of a push button widget when it is pressed. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param ulColor is the 24-bit RGB color to use to fill the push button when //! it is pressed. //! //! This function changes the color used to fill the push button on the //! display when it is pressed. The display is not updated until the next //! paint request. //! //! \return None. // //***************************************************************************** #define PushButtonFillColorPressedSet(pWidget, ulColor) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulPressFillColor = ulColor; \ } \ while(0) //***************************************************************************** // //! Disables filling of a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function disables the filling of a push button widget. The display is //! not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonFillOff(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle &= ~(PB_STYLE_FILL); \ } \ while(0) //***************************************************************************** // //! Enables filling of a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function enables the filling of a push button widget. The display is //! not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonFillOn(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle |= PB_STYLE_FILL; \ } \ while(0) //***************************************************************************** // //! Sets the font for a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! \param pFnt is a pointer to the font to use to draw text on the push //! button. //! //! This function changes the font used to draw text on the push button. The //! display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonFontSet(pWidget, pFnt) \ do \ { \ tPushButtonWidget *pW = pWidget; \ const tFont *pF = pFnt; \ pW->pFont = pF; \ } \ while(0) //***************************************************************************** // //! Changes the image drawn on a push button widget. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param pImg is a pointer to the image to draw onto the push button. //! //! This function changes the image that is drawn onto the push button. The //! display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonImageSet(pWidget, pImg) \ do \ { \ tPushButtonWidget *pW = pWidget; \ const unsigned char *pI = pImg; \ pW->pucImage = pI; \ } \ while(0) //***************************************************************************** // //! Changes the image drawn on a push button widget when it is pressed. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param pImg is a pointer to the image to draw onto the push button when it //! is pressed. //! //! This function changes the image that is drawn onto the push button when it //! is pressed. The display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonImagePressedSet(pWidget, pImg) \ do \ { \ tPushButtonWidget *pW = pWidget; \ const unsigned char *pI = pImg; \ pW->pucPressImage = pI; \ } \ while(0) //***************************************************************************** // //! Disables the image on a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function disables the drawing of an image on a push button widget. //! The display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonImageOff(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle &= ~(PB_STYLE_IMG); \ } \ while(0) //***************************************************************************** // //! Enables the image on a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function enables the drawing of an image on a push button widget. The //! display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonImageOn(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle |= PB_STYLE_IMG; \ } \ while(0) //***************************************************************************** // //! Sets the outline color of a push button widget. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param ulColor is the 24-bit RGB color to use to outline the push button. //! //! This function changes the color used to outline the push button on the //! display. The display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonOutlineColorSet(pWidget, ulColor) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulOutlineColor = ulColor; \ } \ while(0) //***************************************************************************** // //! Disables outlining of a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function disables the outlining of a push button widget. The display //! is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonOutlineOff(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle &= ~(PB_STYLE_OUTLINE); \ } \ while(0) //***************************************************************************** // //! Enables outlining of a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function enables the outlining of a push button widget. The display //! is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonOutlineOn(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle |= PB_STYLE_OUTLINE; \ } \ while(0) //***************************************************************************** // //! Sets the text color of a push button widget. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param ulColor is the 24-bit RGB color to use to draw text on the push //! button. //! //! This function changes the color used to draw text on the push button on the //! display. The display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonTextColorSet(pWidget, ulColor) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulTextColor = ulColor; \ } \ while(0) //***************************************************************************** // //! Disables the text on a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function disables the drawing of text on a push button widget. The //! display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonTextOff(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle &= ~(PB_STYLE_TEXT); \ } \ while(0) //***************************************************************************** // //! Enables the text on a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function enables the drawing of text on a push button widget. The //! display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonTextOn(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle |= PB_STYLE_TEXT; \ } \ while(0) //***************************************************************************** // //! Disables opaque text on a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function disables the use of opaque text on this push button. 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 push button //! image) to show through the text. //! //! \return None. // //***************************************************************************** #define PushButtonTextOpaqueOff(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle &= ~(PB_STYLE_TEXT_OPAQUE); \ } \ while(0) //***************************************************************************** // //! Enables opaque text on a push button widget. //! //! \param pWidget is a pointer to the push button widget to modify. //! //! This function enables the use of opaque text on this push button. When //! using opaque text, both the foreground and background pixels of the text //! are drawn on the screen, blocking out the previously drawn pixels. //! //! \return None. // //***************************************************************************** #define PushButtonTextOpaqueOn(pWidget) \ do \ { \ tPushButtonWidget *pW = pWidget; \ pW->ulStyle |= PB_STYLE_TEXT_OPAQUE; \ } \ while(0) //***************************************************************************** // //! Changes the text drawn on a push button widget. //! //! \param pWidget is a pointer to the push button widget to be modified. //! \param pcTxt is a pointer to the text to draw onto the push button. //! //! This function changes the text that is drawn onto the push button. The //! display is not updated until the next paint request. //! //! \return None. // //***************************************************************************** #define PushButtonTextSet(pWidget, pcTxt) \ do \ { \ tPushButtonWidget *pW = pWidget; \ const char *pcT = pcTxt; \ pW->pcText = pcT; \ } \ while(0) //***************************************************************************** // // Prototypes for the push button widget APIs. // //***************************************************************************** extern int RectangularButtonMsgProc(tWidget *pWidget, unsigned int ulMsg, unsigned int ulParam1, unsigned int ulParam2); extern void RectangularButtonInit(tPushButtonWidget *pWidget, const tDisplay *pDisplay, int lX, int lY, int lWidth, int lHeight); extern int CircularButtonMsgProc(tWidget *pWidget, unsigned int ulMsg, unsigned int ulParam1, unsigned int ulParam2); extern void CircularButtonInit(tPushButtonWidget *pWidget, const tDisplay *pDisplay, int lX, int lY, int lR); //***************************************************************************** // // Mark the end of the C bindings section for C++ compilers. // //***************************************************************************** #ifdef __cplusplus } #endif //***************************************************************************** // // Close the Doxygen group. //! @} // //***************************************************************************** #endif // __PUSHBUTTON_H__