//***************************************************************************** // // stripchartwidget.h - Prototypes for a strip chart widget. // // Copyright (c) 2011-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 EK-LM4F232 Firmware Package. // //***************************************************************************** #ifndef __STRIPCHARTWIDGET_H__ #define __STRIPCHARTWIDGET_H__ //***************************************************************************** // //! \addtogroup stripchartwidget_api //! @{ // //***************************************************************************** //***************************************************************************** // // If building with a C++ compiler, make all of the definitions in this header // have a C binding. // //***************************************************************************** #ifdef __cplusplus extern "C" { #endif //***************************************************************************** // //! A structure that represents a data series to be shown on the strip chart. // //***************************************************************************** typedef struct _StripChartSeries { // //! A pointer to the next series in the chart. // struct _StripChartSeries *psNextSeries; // //! A pointer to the brief name of the data set // char *pcName; // //! The color of the data series. // uint32_t ui32Color; // //! The number of bytes of the data type (1, 2, or 4) // uint8_t ui8DataTypeSize; // //! The stride of the data. This can be used when this data set is //! part of a larger set of samples that appear in a large array //! interleaved at a regular interval. Use a value of 1 if the data set //! is not interleaved. // uint8_t ui8Stride; // //! The number of items in the data set // uint16_t ui16NumItems; // //! A pointer to the first data item. // void *pvData; } tStripChartSeries; //***************************************************************************** // //! A structure that represents an axis of the strip chart. // //***************************************************************************** typedef struct _StripChartAxis { // //! A brief name for the axis. Leave null for no name to be shown. // char *pcName; // //! Label for the minimum extent of the axis. Leave null for no label. // char *pcMinLabel; // //! Label for the max extent of the axis. Leave null for no label. // char *pcMaxLabel; // //! The minimum units value for the axis. // int32_t i32Min; // //! The maximum units value for the axis // int32_t i32Max; // //! The grid interval for the axis. Use 0 for no grid. // int32_t i32GridInterval; } tStripChartAxis; //***************************************************************************** // //! A structure that represents a strip chart widget. // //***************************************************************************** typedef struct _StripChartWidget { // //! The generic widget information. // tWidget sBase; // //! The title for the strip chart. Leave null for no title. // char *pcTitle; // //! The font to use for drawing text on the chart. // const tFont *psFont; // //! The background color of the chart. // uint32_t ui32BackgroundColor; // //! The color for text that is drawn on the chart (titles, etc). // uint32_t ui32TextColor; // //! The color of the Y-axis 0-crossing line. // uint32_t ui32Y0Color; // //! The color of the grid lines. // uint32_t ui32GridColor; // //! The X axis // tStripChartAxis *psAxisX; // //! The Y axis // tStripChartAxis *psAxisY; // //! A pointer to the first data series for the strip chart. // tStripChartSeries *psSeries; // //! A pointer to an off-screen display to be used for rendering the chart. // const tDisplay *psOffscreenDisplay; // //! The current X-grid alignment. This value changes in order to give the //! appearance of the grid moving as the strip chart advances. // int32_t i32GridX; } tStripChartWidget; //***************************************************************************** // //! Declares an initialized strip chart 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 off-screen display on which to draw. //! \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 pcTitle is a string for the chart title, NULL for no title. //! \param psFont is the font used for rendering text on the chart. //! \param ui32BackgroundColor is the background color for the chart. //! \param ui32TextColor is the color of text (titles, labels, etc.) //! \param ui32Y0Color is the color of the Y-axis gridline at Y=0 //! \param ui32GridColor is the color of grid lines. //! \param psAxisX is a pointer to the axis structure for the X-axis. //! \param psAxisY is a pointer to the axis structure for the Y-axis. //! \param psOffscreenDisplay is a buffer for rendering the chart before //! showing on the physical display. The dimensions of the off-screen display //! should match the drawing area of psDisplay. //! //! This macro provides an initialized strip chart 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 //! tStripChartWidget g_sStripChart = StripChartStruct(...); //! \endverbatim //! //! Or, in an array of variables: //! //! \verbatim //! tStripChartWidget g_psStripChart[] = //! { //! StripChartStruct(...), //! StripChartStruct(...) //! }; //! \endverbatim //! //! \return Nothing; this is not a function. // //***************************************************************************** #define StripChartStruct(psParent, psNext, psChild, psDisplay, \ i32X, i32Y, i32Width, i32Height, \ pcTitle, psFont, ui32BackgroundColor, ui32TextColor, \ ui32Y0Color, ui32GridColor, psAxisX, psAxisY, \ psOffscreenDisplay) \ { \ { \ sizeof(tStripChartWidget), \ (tWidget *)(psParent), \ (tWidget *)(psNext), \ (tWidget *)(psChild), \ psDisplay, \ { \ i32X, \ i32Y, \ (i32X) + (i32Width) - 1, \ (i32Y) + (i32Height) - 1 \ }, \ StripChartMsgProc \ }, \ pcTitle, psFont, ui32BackgroundColor, ui32TextColor, ui32Y0Color, \ ui32GridColor, psAxisX, psAxisY, 0, psOffscreenDisplay, 0 \ } //***************************************************************************** // //! Declares an initialized variable containing a strip chart 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 off-screen display on which to draw. //! \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 pcTitle is a string for the chart title, NULL for no title. //! \param psFont is the font used for rendering text on the chart. //! \param ui32BackgroundColor is the background color for the chart. //! \param ui32TextColor is the color of text (titles, labels, etc.) //! \param ui32Y0Color is the color of the Y-axis gridline at Y=0 //! \param ui32GridColor is the color of grid lines. //! \param psAxisX is a pointer to the axis structure for the X-axis. //! \param psAxisY is a pointer to the axis structure for the Y-axis. //! \param psOffscreenDisplay is a buffer for rendering the chart before //! showing on the physical display. The dimensions of the off-screen display //! should match the drawing area of psDisplay. //! //! This macro declares a variable containing an initialized strip chart 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). //! //! \return Nothing; this is not a function. // //***************************************************************************** #define StripChart(sName, psParent, psNext, psChild, psDisplay, \ i32X, i32Y, i32Width, i32Height, \ pcTitle, psFont, ui32BackgroundColor, ui32TextColor, \ ui32Y0Color, ui32GridColor, psAxisX, psAxisY, \ psOffscreenDisplay) \ tStripChartWidget sName = \ StripChartStruct(psParent, psNext, psChild, psDisplay, \ i32X, i32Y, i32Width, i32Height, \ pcTitle, psFont, ui32BackgroundColor, \ ui32TextColor, ui32Y0Color, ui32GridColor, \ psAxisX, psAxisY, psOffscreenDisplay) //***************************************************************************** // //! Sets the X-axis of the strip chart. //! //! \param psStripChartWidget is a pointer to the strip chart widget to modify. //! \param psAxis is the new X-axis structure for the strip chart. //! //! This function sets the X-axis for the widget. //! //! \return None. // //***************************************************************************** #define StripChartXAxisSet(psStripChartWidget, psAxis) \ do \ { \ (psStripChartWidget)->psAxisX = psAxis; \ } while(0) //***************************************************************************** // //! Sets the Y-axis of the strip chart. //! //! \param psStripChartWidget is a pointer to the strip chart widget to modify. //! \param psAxis is the new Y-axis structure for the strip chart. //! //! This function sets the Y-axis for the widget. //! //! \return None. // //***************************************************************************** #define StripChartYAxisSet(psStripChartWidget, psAxis) \ do \ { \ (psStripChartWidget)->psAxisY = psAxis; \ } while(0) //***************************************************************************** // // Prototypes for the strip chart widget APIs. // //***************************************************************************** extern int32_t StripChartMsgProc(tWidget *psWidget, uint32_t ui32Msg, uint32_t ui32Param1, uint32_t ui32Param2); extern void StripChartInit(tStripChartWidget *psWidget, const tDisplay *psDisplay, int32_t i32X, int32_t i32Y, int32_t i32Width, int32_t i32Height, char * pcTitle, tFont *psFont, uint32_t ui32BackgroundColor, uint32_t ui32TextColor, uint32_t ui32Y0Color, uint32_t ui32GridColor, tStripChartAxis *psAxisX, tStripChartAxis *psAxisY, tDisplay *psOffscreenDisplay); extern void StripChartSeriesAdd(tStripChartWidget *psWidget, tStripChartSeries *psSeries); extern void StripChartSeriesRemove(tStripChartWidget *psWidget, tStripChartSeries *psSeries); extern void StripChartAdvance(tStripChartWidget *psChartWidget, int32_t i32Count); //***************************************************************************** // // Mark the end of the C bindings section for C++ compilers. // //***************************************************************************** #ifdef __cplusplus } #endif //***************************************************************************** // // Close the Doxygen group. //! @} // //***************************************************************************** #endif // __STRIPCHARTWIDGET_H__