summaryrefslogtreecommitdiff
path: root/grlib/canvas.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/canvas.h
parentc686407d271989d5c4bcc1b3c4f5bb6fcd1846a8 (diff)
Add grlib, fixes #5
Diffstat (limited to 'grlib/canvas.h')
-rw-r--r--grlib/canvas.h837
1 files changed, 837 insertions, 0 deletions
diff --git a/grlib/canvas.h b/grlib/canvas.h
new file mode 100644
index 0000000..05c8abc
--- /dev/null
+++ b/grlib/canvas.h
@@ -0,0 +1,837 @@
+//*****************************************************************************
+//
+// canvas.h - Prototypes for the canvas 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 __CANVAS_H__
+#define __CANVAS_H__
+
+//*****************************************************************************
+//
+//! \addtogroup canvas_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 canvas widget.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ //! The generic widget information.
+ //
+ tWidget sBase;
+
+ //
+ //! The style for this widget. This is a set of flags defined by
+ //! CANVAS_STYLE_xxx.
+ //
+ uint32_t ui32Style;
+
+ //
+ //! The 24-bit RGB color used to fill this canvas, if CANVAS_STYLE_FILL is
+ //! selected, and to use as the background color if
+ //! CANVAS_STYLE_TEXT_OPAQUE is selected.
+ //
+ uint32_t ui32FillColor;
+
+ //
+ //! The 24-bit RGB color used to outline this canvas, if
+ //! CANVAS_STYLE_OUTLINE is selected.
+ //
+ uint32_t ui32OutlineColor;
+
+ //
+ //! The 24-bit RGB color used to draw text on this canvas, if
+ //! CANVAS_STYLE_TEXT is selected.
+ //
+ uint32_t ui32TextColor;
+
+ //
+ //! A pointer to the font used to render the canvas text, if
+ //! CANVAS_STYLE_TEXT is selected.
+ //
+ const tFont *psFont;
+
+ //
+ //! A pointer to the text to draw on this canvas, if CANVAS_STYLE_TEXT is
+ //! selected.
+ //
+ const char *pcText;
+
+ //
+ //! A pointer to the image to be drawn onto this canvas, if
+ //! CANVAS_STYLE_IMG is selected.
+ //
+ const uint8_t *pui8Image;
+
+ //
+ //! A pointer to the application-supplied drawing function used to draw
+ //! onto this canvas, if CANVAS_STYLE_APP_DRAWN is selected.
+ //
+ void (*pfnOnPaint)(tWidget *psWidget, tContext *psContext);
+}
+tCanvasWidget;
+
+//*****************************************************************************
+//
+//! This flag indicates that the canvas should be outlined.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_OUTLINE 0x00000001
+
+//*****************************************************************************
+//
+//! This flag indicates that the canvas should be filled.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_FILL 0x00000002
+
+//*****************************************************************************
+//
+//! This flag indicates that the canvas should have text drawn on it.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT 0x00000004
+
+//*****************************************************************************
+//
+//! This flag indicates that the canvas should have an image drawn on it.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_IMG 0x00000008
+
+//*****************************************************************************
+//
+//! This flag indicates that the canvas is drawn using the application-supplied
+//! drawing function.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_APP_DRAWN 0x00000010
+
+//*****************************************************************************
+//
+//! This flag indicates that the canvas text should be drawn opaque (in other
+//! words, drawing the background pixels as well as the foreground pixels).
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_OPAQUE \
+ 0x00000020
+
+//*****************************************************************************
+//
+//! This flag indicates that canvas text should be left-aligned. By default,
+//! text is centered in both X and Y within the canvas bounding rectangle.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_LEFT \
+ 0x00000040
+
+//*****************************************************************************
+//
+//! This flag indicates that canvas text should be right-aligned. By default,
+//! text is centered in both X and Y within the canvas bounding rectangle.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_RIGHT \
+ 0x00000080
+
+//*****************************************************************************
+//
+//! This flag indicates that canvas text should be top-aligned. By default,
+//! text is centered in both X and Y within the canvas bounding rectangle.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_TOP \
+ 0x00000100
+
+//*****************************************************************************
+//
+//! This flag indicates that canvas text should be bottom-aligned. By default,
+//! text is centered in both X and Y within the canvas bounding rectangle.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_BOTTOM \
+ 0x00000200
+
+//*****************************************************************************
+//
+//! This flag indicates that canvas text should be centered horizontally. By
+//! default, text is centered in both X and Y within the canvas bounding
+//! rectangle.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_HCENTER \
+ 0x00000000
+
+//*****************************************************************************
+//
+//! This flag indicates that canvas text should be centered vertically. By
+//! default, text is centered in both X and Y within the canvas bounding
+//! rectangle.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_TEXT_VCENTER \
+ 0x00000000
+
+//*****************************************************************************
+//
+// Masks used to extract the text alignment flags from the widget style.
+//
+//*****************************************************************************
+#define CANVAS_STYLE_ALIGN_MASK (CANVAS_STYLE_TEXT_LEFT | \
+ CANVAS_STYLE_TEXT_RIGHT | \
+ CANVAS_STYLE_TEXT_TOP | \
+ CANVAS_STYLE_TEXT_BOTTOM)
+#define CANVAS_STYLE_ALIGN_HMASK \
+ (CANVAS_STYLE_TEXT_LEFT | \
+ CANVAS_STYLE_TEXT_RIGHT)
+#define CANVAS_STYLE_ALIGN_VMASK \
+ (CANVAS_STYLE_TEXT_TOP | \
+ CANVAS_STYLE_TEXT_BOTTOM)
+
+//*****************************************************************************
+//
+//! Declares an initialized canvas 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 canvas.
+//! \param i32X is the X coordinate of the upper left corner of the canvas.
+//! \param i32Y is the Y coordinate of the upper left corner of the canvas.
+//! \param i32Width is the width of the canvas.
+//! \param i32Height is the height of the canvas.
+//! \param ui32Style is the style to be applied to the canvas.
+//! \param ui32FillColor is the color used to fill in the canvas.
+//! \param ui32OutlineColor is the color used to outline the canvas.
+//! \param ui32TextColor is the color used to draw text on the canvas.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! canvas.
+//! \param pcText is a pointer to the text to draw on this canvas.
+//! \param pui8Image is a pointer to the image to draw on this canvas.
+//! \param pfnOnPaint is a pointer to the application function to draw onto
+//! this canvas.
+//!
+//! This macro provides an initialized canvas 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
+//! tCanvasWidget g_sCanvas = CanvasStruct(...);
+//! \endverbatim
+//!
+//! Or, in an array of variables:
+//!
+//! \verbatim
+//! tCanvasWidget g_psCanvas[] =
+//! {
+//! CanvasStruct(...),
+//! CanvasStruct(...)
+//! };
+//! \endverbatim
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b #CANVAS_STYLE_OUTLINE to indicate that the canvas should be outlined.
+//! - \b #CANVAS_STYLE_FILL to indicate that the canvas should be filled.
+//! - \b #CANVAS_STYLE_TEXT to indicate that the canvas should have text drawn
+//! on it (using \e psFont and \e pcText).
+//! - \b #CANVAS_STYLE_IMG to indicate that the canvas should have an image
+//! drawn on it (using \e pui8Image).
+//! - \b #CANVAS_STYLE_APP_DRAWN to indicate that the canvas should be drawn
+//! with the application-supplied drawing function (using \e pfnOnPaint).
+//! - \b #CANVAS_STYLE_TEXT_OPAQUE to indicate that the canvas text should be
+//! drawn opaque (in other words, drawing the background pixels).
+//! - \b #CANVAS_STYLE_TEXT_LEFT to indicate that the canvas text should be
+//! left aligned within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_HCENTER to indicate that the canvas text should be
+//! horizontally centered within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_RIGHT to indicate that the canvas text should be
+//! right aligned within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_TOP to indicate that the canvas text should be
+//! top aligned within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_VCENTER to indicate that the canvas text should be
+//! vertically centered within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_BOTTOM to indicate that the canvas text should be
+//! bottom aligned within the widget bounding rectangle.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define CanvasStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, i32Width, \
+ i32Height, ui32Style, ui32FillColor, ui32OutlineColor, \
+ ui32TextColor, psFont, pcText, pui8Image, pfnOnPaint) \
+ { \
+ { \
+ sizeof(tCanvasWidget), \
+ (tWidget *)(psParent), \
+ (tWidget *)(psNext), \
+ (tWidget *)(psChild), \
+ psDisplay, \
+ { \
+ i32X, \
+ i32Y, \
+ (i32X) + (i32Width) - 1, \
+ (i32Y) + (i32Height) - 1 \
+ }, \
+ CanvasMsgProc \
+ }, \
+ ui32Style, \
+ ui32FillColor, \
+ ui32OutlineColor, \
+ ui32TextColor, \
+ psFont, \
+ pcText, \
+ pui8Image, \
+ pfnOnPaint \
+ }
+
+//*****************************************************************************
+//
+//! Declares an initialized variable containing a canvas 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 canvas.
+//! \param i32X is the X coordinate of the upper left corner of the canvas.
+//! \param i32Y is the Y coordinate of the upper left corner of the canvas.
+//! \param i32Width is the width of the canvas.
+//! \param i32Height is the height of the canvas.
+//! \param ui32Style is the style to be applied to the canvas.
+//! \param ui32FillColor is the color used to fill in the canvas.
+//! \param ui32OutlineColor is the color used to outline the canvas.
+//! \param ui32TextColor is the color used to draw text on the canvas.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! canvas.
+//! \param pcText is a pointer to the text to draw on this canvas.
+//! \param pui8Image is a pointer to the image to draw on this canvas.
+//! \param pfnOnPaint is a pointer to the application function to draw onto
+//! this canvas.
+//!
+//! This macro declares a variable containing an initialized canvas 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 #CANVAS_STYLE_OUTLINE to indicate that the canvas should be outlined.
+//! - \b #CANVAS_STYLE_FILL to indicate that the canvas should be filled.
+//! - \b #CANVAS_STYLE_TEXT to indicate that the canvas should have text drawn
+//! on it (using \e psFont and \e pcText).
+//! - \b #CANVAS_STYLE_IMG to indicate that the canvas should have an image
+//! drawn on it (using \e pui8Image).
+//! - \b #CANVAS_STYLE_APP_DRAWN to indicate that the canvas should be drawn
+//! with the application-supplied drawing function (using \e pfnOnPaint).
+//! - \b #CANVAS_STYLE_TEXT_OPAQUE to indicate that the canvas text should be
+//! drawn opaque (in other words, drawing the background pixels).
+//! - \b #CANVAS_STYLE_TEXT_LEFT to indicate that the canvas text should be
+//! left aligned within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_HCENTER to indicate that the canvas text should be
+//! horizontally centered within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_RIGHT to indicate that the canvas text should be
+//! right aligned within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_TOP to indicate that the canvas text should be
+//! top aligned within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_VCENTER to indicate that the canvas text should be
+//! vertically centered within the widget bounding rectangle.
+//! - \b #CANVAS_STYLE_TEXT_BOTTOM to indicate that the canvas text should be
+//! bottom aligned within the widget bounding rectangle.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define Canvas(sName, psParent, psNext, psChild, psDisplay, i32X, i32Y, i32Width,\
+ i32Height, ui32Style, ui32FillColor, ui32OutlineColor, \
+ ui32TextColor, psFont, pcText, pui8Image, pfnOnPaint) \
+ tCanvasWidget sName = \
+ CanvasStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32FillColor, \
+ ui32OutlineColor, ui32TextColor, psFont, pcText, \
+ pui8Image, pfnOnPaint)
+
+//*****************************************************************************
+//
+//! Disables application drawing of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function disables the use of the application callback to draw on a
+//! canvas widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasAppDrawnOff(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~(CANVAS_STYLE_APP_DRAWN); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables application drawing of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function enables the use of the application callback to draw on a
+//! canvas widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasAppDrawnOn(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style |= CANVAS_STYLE_APP_DRAWN; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the function to call when this canvas widget is drawn.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//! \param pfnOnPnt is a pointer to the function to call.
+//!
+//! This function sets the function to be called when this canvas is drawn and
+//! \b CANVAS_STYLE_APP_DRAWN is selected.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasCallbackSet(psWidget, pfnOnPnt) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->pfnOnPaint = pfnOnPnt; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the fill color of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to fill the canvas.
+//!
+//! This function changes the color used to fill the canvas on the display.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasFillColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32FillColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables filling of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function disables the filling of a canvas widget. The display is not
+//! updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasFillOff(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~(CANVAS_STYLE_FILL); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables filling of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function enables the filling of a canvas widget. The display is not
+//! updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasFillOn(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style |= CANVAS_STYLE_FILL; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the font for a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//! \param pFnt is a pointer to the font to use to draw text on the canvas.
+//!
+//! This function changes the font used to draw text on the canvas. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasFontSet(psWidget, pFnt) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ const tFont *pF = pFnt; \
+ pW->psFont = pF; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the image drawn on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to be modified.
+//! \param pImg is a pointer to the image to draw onto the canvas.
+//!
+//! This function changes the image that is drawn onto the canvas. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasImageSet(psWidget, pImg) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ const uint8_t *pI = pImg; \
+ pW->pui8Image = pI; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the image on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function disables the drawing of an image on a canvas widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasImageOff(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~(CANVAS_STYLE_IMG); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the image on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function enables the drawing of an image on a canvas widget. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasImageOn(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style |= CANVAS_STYLE_IMG; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the outline color of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to outline the canvas.
+//!
+//! This function changes the color used to outline the canvas on the display.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasOutlineColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32OutlineColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables outlining of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function disables the outlining of a canvas widget. The display is
+//! not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasOutlineOff(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~(CANVAS_STYLE_OUTLINE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables outlining of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function enables the outlining of a canvas widget. The display is not
+//! updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasOutlineOn(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style |= CANVAS_STYLE_OUTLINE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the text color of a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to draw text on the canvas.
+//!
+//! This function changes the color used to draw text on the canvas on the
+//! display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasTextColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32TextColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables the text on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function disables the drawing of text on a canvas widget. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasTextOff(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~(CANVAS_STYLE_TEXT); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables the text on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function enables the drawing of text on a canvas widget. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasTextOn(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style |= CANVAS_STYLE_TEXT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables opaque text on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function disables the use of opaque text on this canvas. 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 canvas image) to
+//! show through the text.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasTextOpaqueOff(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~(CANVAS_STYLE_TEXT_OPAQUE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables opaque text on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//!
+//! This function enables the use of opaque text on this canvas. 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 CanvasTextOpaqueOn(psWidget) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style |= CANVAS_STYLE_TEXT_OPAQUE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the text alignment for a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to modify.
+//! \param ui32Align contains the required text alignment setting. This is a
+//! logical OR of style values \b #CANVAS_STYLE_TEXT_LEFT, \b
+//! #CANVAS_STYLE_TEXT_RIGHT, \b #CANVAS_STYLE_TEXT_HCENTER,
+//! \b #CANVAS_STYLE_TEXT_VCENTER, \b #CANVAS_STYLE_TEXT_TOP and
+//! \b #CANVAS_STYLE_TEXT_BOTTOM.
+//!
+//! This function sets the alignment of the text drawn inside the widget.
+//! Independent alignment options for horizontal and vertical placement allow
+//! the text to be positioned in one of 9 positions within the boinding box
+//! of the widget. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasTextAlignment(psWidget, ui32Align) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ pW->ui32Style &= ~CANVAS_STYLE_ALIGN_MASK; \
+ pW->ui32Style |= ((ui32Align) & CANVAS_STYLE_ALIGN_MASK); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the text drawn on a canvas widget.
+//!
+//! \param psWidget is a pointer to the canvas widget to be modified.
+//! \param pcTxt is a pointer to the text to draw onto the canvas.
+//!
+//! This function changes the text that is drawn onto the canvas. The display
+//! is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define CanvasTextSet(psWidget, pcTxt) \
+ do \
+ { \
+ tCanvasWidget *pW = psWidget; \
+ const char *pcT = pcTxt; \
+ pW->pcText = pcT; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+// Prototypes for the canvas widget APIs.
+//
+//*****************************************************************************
+extern int32_t CanvasMsgProc(tWidget *psWidget, uint32_t ui32Msg,
+ uint32_t ui32Param1, uint32_t ui32Param2);
+extern void CanvasInit(tCanvasWidget *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 // __CANVAS_H__