NXP
/
rt1050_emwin_gui_demo
RT1050 GUI demo using emWin library
emwin/emWin_header/WIDGET.h@0:dd702039127a, 2018-09-20 (annotated)
- Committer:
- alejandroRL
- Date:
- Thu Sep 20 19:16:34 2018 +0000
- Revision:
- 0:dd702039127a
emWin GUI Demo for RT1050
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alejandroRL | 0:dd702039127a | 1 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 2 | * SEGGER Microcontroller GmbH & Co. KG * |
alejandroRL | 0:dd702039127a | 3 | * Solutions for real time microcontroller applications * |
alejandroRL | 0:dd702039127a | 4 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 5 | * * |
alejandroRL | 0:dd702039127a | 6 | * (c) 1996 - 2016 SEGGER Microcontroller GmbH & Co. KG * |
alejandroRL | 0:dd702039127a | 7 | * * |
alejandroRL | 0:dd702039127a | 8 | * Internet: www.segger.com Support: support@segger.com * |
alejandroRL | 0:dd702039127a | 9 | * * |
alejandroRL | 0:dd702039127a | 10 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 11 | |
alejandroRL | 0:dd702039127a | 12 | ** emWin V5.38 - Graphical user interface for embedded applications ** |
alejandroRL | 0:dd702039127a | 13 | All Intellectual Property rights in the Software belongs to SEGGER. |
alejandroRL | 0:dd702039127a | 14 | emWin is protected by international copyright laws. Knowledge of the |
alejandroRL | 0:dd702039127a | 15 | source code may not be used to write a similar product. This file may |
alejandroRL | 0:dd702039127a | 16 | only be used in accordance with the following terms: |
alejandroRL | 0:dd702039127a | 17 | |
alejandroRL | 0:dd702039127a | 18 | The software has been licensed to NXP Semiconductors USA, Inc. whose |
alejandroRL | 0:dd702039127a | 19 | registered office is situated at 411 E. Plumeria Drive, San Jose, |
alejandroRL | 0:dd702039127a | 20 | CA 95134, USA solely for the purposes of creating libraries for |
alejandroRL | 0:dd702039127a | 21 | NXPs M0, M3/M4 and ARM7/9 processor-based devices, sublicensed and |
alejandroRL | 0:dd702039127a | 22 | distributed under the terms and conditions of the NXP End User License |
alejandroRL | 0:dd702039127a | 23 | Agreement. |
alejandroRL | 0:dd702039127a | 24 | Full source code is available at: www.segger.com |
alejandroRL | 0:dd702039127a | 25 | |
alejandroRL | 0:dd702039127a | 26 | We appreciate your understanding and fairness. |
alejandroRL | 0:dd702039127a | 27 | ---------------------------------------------------------------------- |
alejandroRL | 0:dd702039127a | 28 | Licensing information |
alejandroRL | 0:dd702039127a | 29 | |
alejandroRL | 0:dd702039127a | 30 | Licensor: SEGGER Microcontroller Systems LLC |
alejandroRL | 0:dd702039127a | 31 | Licensed to: NXP Semiconductors, 1109 McKay Dr, M/S 76, San Jose, CA 95131, USA |
alejandroRL | 0:dd702039127a | 32 | Licensed SEGGER software: emWin |
alejandroRL | 0:dd702039127a | 33 | License number: GUI-00186 |
alejandroRL | 0:dd702039127a | 34 | License model: emWin License Agreement, dated August 20th 2011 |
alejandroRL | 0:dd702039127a | 35 | Licensed product: - |
alejandroRL | 0:dd702039127a | 36 | Licensed platform: NXP's ARM 7/9, Cortex-M0,M3,M4 |
alejandroRL | 0:dd702039127a | 37 | Licensed number of seats: - |
alejandroRL | 0:dd702039127a | 38 | ---------------------------------------------------------------------- |
alejandroRL | 0:dd702039127a | 39 | File : WIDGET.h |
alejandroRL | 0:dd702039127a | 40 | Purpose : Widget interface |
alejandroRL | 0:dd702039127a | 41 | ---------------------------END-OF-HEADER------------------------------ |
alejandroRL | 0:dd702039127a | 42 | */ |
alejandroRL | 0:dd702039127a | 43 | |
alejandroRL | 0:dd702039127a | 44 | #ifndef WIDGET_H /* Avoid multiple inclusion */ |
alejandroRL | 0:dd702039127a | 45 | #define WIDGET_H |
alejandroRL | 0:dd702039127a | 46 | |
alejandroRL | 0:dd702039127a | 47 | #if defined(__cplusplus) |
alejandroRL | 0:dd702039127a | 48 | extern "C" { /* Make sure we have C-declarations in C++ programs */ |
alejandroRL | 0:dd702039127a | 49 | #endif |
alejandroRL | 0:dd702039127a | 50 | |
alejandroRL | 0:dd702039127a | 51 | #include "WM_Intern.h" /* Window manager, including some internals, which speed things up */ |
alejandroRL | 0:dd702039127a | 52 | |
alejandroRL | 0:dd702039127a | 53 | #if GUI_WINSUPPORT |
alejandroRL | 0:dd702039127a | 54 | |
alejandroRL | 0:dd702039127a | 55 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 56 | * |
alejandroRL | 0:dd702039127a | 57 | * Typedefs |
alejandroRL | 0:dd702039127a | 58 | * |
alejandroRL | 0:dd702039127a | 59 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 60 | */ |
alejandroRL | 0:dd702039127a | 61 | typedef struct { |
alejandroRL | 0:dd702039127a | 62 | WM_HWIN hWin; |
alejandroRL | 0:dd702039127a | 63 | int Cmd; /* WIDGET_ITEM_GET_XSIZE, WIDGET_ITEM_GET_YSIZE, WIDGET_ITEM_DRAW, */ |
alejandroRL | 0:dd702039127a | 64 | int ItemIndex; |
alejandroRL | 0:dd702039127a | 65 | int Col; |
alejandroRL | 0:dd702039127a | 66 | int x0, y0, x1, y1; |
alejandroRL | 0:dd702039127a | 67 | void * p; |
alejandroRL | 0:dd702039127a | 68 | } WIDGET_ITEM_DRAW_INFO; |
alejandroRL | 0:dd702039127a | 69 | |
alejandroRL | 0:dd702039127a | 70 | typedef int WIDGET_DRAW_ITEM_FUNC(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo); |
alejandroRL | 0:dd702039127a | 71 | typedef void WIDGET_PAINT (WM_HWIN hObj); |
alejandroRL | 0:dd702039127a | 72 | typedef void WIDGET_CREATE (WM_HWIN hObj); |
alejandroRL | 0:dd702039127a | 73 | |
alejandroRL | 0:dd702039127a | 74 | typedef struct { |
alejandroRL | 0:dd702039127a | 75 | WIDGET_PAINT * pfPaint; |
alejandroRL | 0:dd702039127a | 76 | WIDGET_CREATE * pfCreate; |
alejandroRL | 0:dd702039127a | 77 | void * pSkinPrivate; |
alejandroRL | 0:dd702039127a | 78 | } WIDGET_SKIN; |
alejandroRL | 0:dd702039127a | 79 | |
alejandroRL | 0:dd702039127a | 80 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 81 | * |
alejandroRL | 0:dd702039127a | 82 | * Important: WIDGET_DRAW_ITEM_FUNC needs to be defined |
alejandroRL | 0:dd702039127a | 83 | * in SCROLLBAR.h! |
alejandroRL | 0:dd702039127a | 84 | * |
alejandroRL | 0:dd702039127a | 85 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 86 | */ |
alejandroRL | 0:dd702039127a | 87 | #include "SCROLLBAR.h" |
alejandroRL | 0:dd702039127a | 88 | |
alejandroRL | 0:dd702039127a | 89 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 90 | * |
alejandroRL | 0:dd702039127a | 91 | * Defines |
alejandroRL | 0:dd702039127a | 92 | * |
alejandroRL | 0:dd702039127a | 93 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 94 | */ |
alejandroRL | 0:dd702039127a | 95 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 96 | * |
alejandroRL | 0:dd702039127a | 97 | * Unique widget id's |
alejandroRL | 0:dd702039127a | 98 | */ |
alejandroRL | 0:dd702039127a | 99 | #define BUTTON_ID 0x42555454UL /* BUTT */ |
alejandroRL | 0:dd702039127a | 100 | #define CHECKBOX_ID 0x43484543UL /* CHEC */ |
alejandroRL | 0:dd702039127a | 101 | #define DROPDOWN_ID 0x44524f50UL /* DROP */ |
alejandroRL | 0:dd702039127a | 102 | #define EDIT_ID 0x45444954UL /* EDIT */ |
alejandroRL | 0:dd702039127a | 103 | #define FRAMEWIN_ID 0x4652414dUL /* FRAM */ |
alejandroRL | 0:dd702039127a | 104 | #define FRAMECLNT_ID 0x46524143UL /* FRAC */ |
alejandroRL | 0:dd702039127a | 105 | #define GRAPH_ID 0x47524150UL /* GRAP */ |
alejandroRL | 0:dd702039127a | 106 | #define HEADER_ID 0x48454144UL /* HEAD */ |
alejandroRL | 0:dd702039127a | 107 | #define LISTBOX_ID 0x4C495342UL /* LISB */ |
alejandroRL | 0:dd702039127a | 108 | #define LISTVIEW_ID 0x4C495356UL /* LISV */ |
alejandroRL | 0:dd702039127a | 109 | #define LISTWHEEL_ID 0x4C495357UL /* LISW */ |
alejandroRL | 0:dd702039127a | 110 | #define MENU_ID 0x4d454e55UL /* MENU */ |
alejandroRL | 0:dd702039127a | 111 | #define MULTIEDIT_ID 0x4d554c45UL /* MULE */ |
alejandroRL | 0:dd702039127a | 112 | #define MULTIPAGE_ID 0x4d554c50UL /* MULP */ |
alejandroRL | 0:dd702039127a | 113 | #define MPAGECLNT_ID 0x4d50434CUL /* MPCL */ |
alejandroRL | 0:dd702039127a | 114 | #define PROGBAR_ID 0x50524f47UL /* PROG */ |
alejandroRL | 0:dd702039127a | 115 | #define RADIO_ID 0x52414449UL /* RADI */ |
alejandroRL | 0:dd702039127a | 116 | #define SCROLLBAR_ID 0x5343524fUL /* SCRO */ |
alejandroRL | 0:dd702039127a | 117 | #define SLIDER_ID 0x534c4944UL /* SLID */ |
alejandroRL | 0:dd702039127a | 118 | #define SWIPELIST_ID 0x53574950UL /* SWIP */ |
alejandroRL | 0:dd702039127a | 119 | #define TEXT_ID 0x54455854UL /* TEXT */ |
alejandroRL | 0:dd702039127a | 120 | #define TREEVIEW_ID 0x54524545UL /* TREE */ |
alejandroRL | 0:dd702039127a | 121 | #define ICONVIEW_ID 0x49434f4eUL /* ICON */ |
alejandroRL | 0:dd702039127a | 122 | #define IMAGE_ID 0x494d4147UL /* IMAG */ |
alejandroRL | 0:dd702039127a | 123 | #define SPINBOX_ID 0x5350494eUL /* SPIN */ |
alejandroRL | 0:dd702039127a | 124 | #define KNOB_ID 0x4b4e4f42UL /* KNOB */ |
alejandroRL | 0:dd702039127a | 125 | #define WINDOW_ID 0x57494e44UL /* WIND */ |
alejandroRL | 0:dd702039127a | 126 | |
alejandroRL | 0:dd702039127a | 127 | #define WIDGET_LOCK(hWin) ((WIDGET*)GUI_LOCK_H(hWin)) |
alejandroRL | 0:dd702039127a | 128 | |
alejandroRL | 0:dd702039127a | 129 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 130 | * |
alejandroRL | 0:dd702039127a | 131 | * Config switches |
alejandroRL | 0:dd702039127a | 132 | */ |
alejandroRL | 0:dd702039127a | 133 | |
alejandroRL | 0:dd702039127a | 134 | #ifndef WIDGET_USE_PARENT_EFFECT |
alejandroRL | 0:dd702039127a | 135 | #define WIDGET_USE_PARENT_EFFECT 0 |
alejandroRL | 0:dd702039127a | 136 | #endif |
alejandroRL | 0:dd702039127a | 137 | #ifndef WIDGET_USE_FLEX_SKIN |
alejandroRL | 0:dd702039127a | 138 | #define WIDGET_USE_FLEX_SKIN 1 |
alejandroRL | 0:dd702039127a | 139 | #endif |
alejandroRL | 0:dd702039127a | 140 | #if !defined(WIDGET_USE_SCHEME_SMALL) && !defined(WIDGET_USE_SCHEME_MEDIUM) && !defined(WIDGET_USE_SCHEME_LARGE) |
alejandroRL | 0:dd702039127a | 141 | #define WIDGET_USE_SCHEME_SMALL 1 |
alejandroRL | 0:dd702039127a | 142 | #define WIDGET_USE_SCHEME_MEDIUM 0 |
alejandroRL | 0:dd702039127a | 143 | #define WIDGET_USE_SCHEME_LARGE 0 |
alejandroRL | 0:dd702039127a | 144 | #endif |
alejandroRL | 0:dd702039127a | 145 | #ifndef WIDGET_USE_SCHEME_SMALL |
alejandroRL | 0:dd702039127a | 146 | #define WIDGET_USE_SCHEME_SMALL 0 |
alejandroRL | 0:dd702039127a | 147 | #endif |
alejandroRL | 0:dd702039127a | 148 | #ifndef WIDGET_USE_SCHEME_MEDIUM |
alejandroRL | 0:dd702039127a | 149 | #define WIDGET_USE_SCHEME_MEDIUM 0 |
alejandroRL | 0:dd702039127a | 150 | #endif |
alejandroRL | 0:dd702039127a | 151 | #ifndef WIDGET_USE_SCHEME_LARGE |
alejandroRL | 0:dd702039127a | 152 | #define WIDGET_USE_SCHEME_LARGE 0 |
alejandroRL | 0:dd702039127a | 153 | #endif |
alejandroRL | 0:dd702039127a | 154 | #if (WIDGET_USE_SCHEME_SMALL + WIDGET_USE_SCHEME_MEDIUM + WIDGET_USE_SCHEME_LARGE) > 1 |
alejandroRL | 0:dd702039127a | 155 | #error Only one scheme can be selected! |
alejandroRL | 0:dd702039127a | 156 | #endif |
alejandroRL | 0:dd702039127a | 157 | |
alejandroRL | 0:dd702039127a | 158 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 159 | * |
alejandroRL | 0:dd702039127a | 160 | * States |
alejandroRL | 0:dd702039127a | 161 | */ |
alejandroRL | 0:dd702039127a | 162 | |
alejandroRL | 0:dd702039127a | 163 | #define WIDGET_STATE_FOCUS (1 << 0) |
alejandroRL | 0:dd702039127a | 164 | #define WIDGET_STATE_VERTICAL (1 << 3) |
alejandroRL | 0:dd702039127a | 165 | #define WIDGET_STATE_FOCUSSABLE (1 << 4) |
alejandroRL | 0:dd702039127a | 166 | |
alejandroRL | 0:dd702039127a | 167 | #define WIDGET_STATE_USER0 (1 << 8) /* Freely available for derived widget */ |
alejandroRL | 0:dd702039127a | 168 | #define WIDGET_STATE_USER1 (1 << 9) /* Freely available for derived widget */ |
alejandroRL | 0:dd702039127a | 169 | #define WIDGET_STATE_USER2 (1 << 10) /* Freely available for derived widget */ |
alejandroRL | 0:dd702039127a | 170 | |
alejandroRL | 0:dd702039127a | 171 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 172 | * |
alejandroRL | 0:dd702039127a | 173 | * Skinning message identifiers |
alejandroRL | 0:dd702039127a | 174 | */ |
alejandroRL | 0:dd702039127a | 175 | #define WIDGET_ITEM_CREATE 0 |
alejandroRL | 0:dd702039127a | 176 | #define WIDGET_ITEM_DRAW 1 |
alejandroRL | 0:dd702039127a | 177 | #define WIDGET_ITEM_DRAW_ARROW 2 |
alejandroRL | 0:dd702039127a | 178 | #define WIDGET_ITEM_DRAW_ARROW_L 3 |
alejandroRL | 0:dd702039127a | 179 | #define WIDGET_ITEM_DRAW_ARROW_R 4 |
alejandroRL | 0:dd702039127a | 180 | #define WIDGET_ITEM_DRAW_BACKGROUND 5 |
alejandroRL | 0:dd702039127a | 181 | #define WIDGET_ITEM_DRAW_BITMAP 6 |
alejandroRL | 0:dd702039127a | 182 | #define WIDGET_ITEM_DRAW_BUTTON 7 |
alejandroRL | 0:dd702039127a | 183 | #define WIDGET_ITEM_DRAW_BUTTON_L 8 |
alejandroRL | 0:dd702039127a | 184 | #define WIDGET_ITEM_DRAW_BUTTON_R 9 |
alejandroRL | 0:dd702039127a | 185 | #define WIDGET_ITEM_DRAW_FOCUS 10 |
alejandroRL | 0:dd702039127a | 186 | #define WIDGET_ITEM_DRAW_FRAME 11 |
alejandroRL | 0:dd702039127a | 187 | #define WIDGET_ITEM_DRAW_OVERLAP 12 |
alejandroRL | 0:dd702039127a | 188 | #define WIDGET_ITEM_DRAW_OVERLAY 13 |
alejandroRL | 0:dd702039127a | 189 | #define WIDGET_ITEM_DRAW_SEP 14 |
alejandroRL | 0:dd702039127a | 190 | #define WIDGET_ITEM_DRAW_SHAFT 15 |
alejandroRL | 0:dd702039127a | 191 | #define WIDGET_ITEM_DRAW_SHAFT_L 16 |
alejandroRL | 0:dd702039127a | 192 | #define WIDGET_ITEM_DRAW_SHAFT_R 17 |
alejandroRL | 0:dd702039127a | 193 | #define WIDGET_ITEM_DRAW_TEXT 18 |
alejandroRL | 0:dd702039127a | 194 | #define WIDGET_ITEM_DRAW_THUMB 19 |
alejandroRL | 0:dd702039127a | 195 | #define WIDGET_ITEM_DRAW_TICKS 20 |
alejandroRL | 0:dd702039127a | 196 | #define WIDGET_ITEM_GET_BORDERSIZE_B 21 |
alejandroRL | 0:dd702039127a | 197 | #define WIDGET_ITEM_GET_BORDERSIZE_L 22 |
alejandroRL | 0:dd702039127a | 198 | #define WIDGET_ITEM_GET_BORDERSIZE_R 23 |
alejandroRL | 0:dd702039127a | 199 | #define WIDGET_ITEM_GET_BORDERSIZE_T 24 |
alejandroRL | 0:dd702039127a | 200 | #define WIDGET_ITEM_GET_BUTTONSIZE 25 |
alejandroRL | 0:dd702039127a | 201 | #define WIDGET_ITEM_GET_XSIZE 26 |
alejandroRL | 0:dd702039127a | 202 | #define WIDGET_ITEM_GET_YSIZE 27 |
alejandroRL | 0:dd702039127a | 203 | #define WIDGET_ITEM_GET_RADIUS 28 |
alejandroRL | 0:dd702039127a | 204 | #define WIDGET_ITEM_APPLY_PROPS 29 // Not to be documented. Use this message identifier to update the |
alejandroRL | 0:dd702039127a | 205 | // properties of attached widgets from <WIDGET>_DrawSkinFlex(). |
alejandroRL | 0:dd702039127a | 206 | |
alejandroRL | 0:dd702039127a | 207 | #define WIDGET_DRAW_OVERLAY WIDGET_ITEM_DRAW_OVERLAY |
alejandroRL | 0:dd702039127a | 208 | #define WIDGET_DRAW_BACKGROUND WIDGET_ITEM_DRAW_BACKGROUND |
alejandroRL | 0:dd702039127a | 209 | |
alejandroRL | 0:dd702039127a | 210 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 211 | * |
alejandroRL | 0:dd702039127a | 212 | * Messages |
alejandroRL | 0:dd702039127a | 213 | */ |
alejandroRL | 0:dd702039127a | 214 | |
alejandroRL | 0:dd702039127a | 215 | #define WM_WIDGET_SET_EFFECT (WM_WIDGET + 0) |
alejandroRL | 0:dd702039127a | 216 | |
alejandroRL | 0:dd702039127a | 217 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 218 | * |
alejandroRL | 0:dd702039127a | 219 | * Create flags |
alejandroRL | 0:dd702039127a | 220 | */ |
alejandroRL | 0:dd702039127a | 221 | |
alejandroRL | 0:dd702039127a | 222 | #define WIDGET_CF_VERTICAL WIDGET_STATE_VERTICAL |
alejandroRL | 0:dd702039127a | 223 | |
alejandroRL | 0:dd702039127a | 224 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 225 | * |
alejandroRL | 0:dd702039127a | 226 | * Widget object |
alejandroRL | 0:dd702039127a | 227 | * |
alejandroRL | 0:dd702039127a | 228 | * The widget object is the base class for most widgets |
alejandroRL | 0:dd702039127a | 229 | */ |
alejandroRL | 0:dd702039127a | 230 | typedef struct { |
alejandroRL | 0:dd702039127a | 231 | int EffectSize; |
alejandroRL | 0:dd702039127a | 232 | void (* pfDrawUp) (void); |
alejandroRL | 0:dd702039127a | 233 | void (* pfDrawUpRect) (const GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 234 | void (* pfDrawDown) (void); |
alejandroRL | 0:dd702039127a | 235 | void (* pfDrawDownRect)(const GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 236 | void (* pfDrawFlat) (void); |
alejandroRL | 0:dd702039127a | 237 | void (* pfDrawFlatRect)(const GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 238 | } WIDGET_EFFECT; |
alejandroRL | 0:dd702039127a | 239 | |
alejandroRL | 0:dd702039127a | 240 | typedef struct { |
alejandroRL | 0:dd702039127a | 241 | WM_Obj Win; |
alejandroRL | 0:dd702039127a | 242 | const WIDGET_EFFECT* pEffect; |
alejandroRL | 0:dd702039127a | 243 | I16 Id; |
alejandroRL | 0:dd702039127a | 244 | U16 State; |
alejandroRL | 0:dd702039127a | 245 | #if GUI_DEBUG_LEVEL > 1 |
alejandroRL | 0:dd702039127a | 246 | U32 DebugId; |
alejandroRL | 0:dd702039127a | 247 | #endif |
alejandroRL | 0:dd702039127a | 248 | } WIDGET; |
alejandroRL | 0:dd702039127a | 249 | |
alejandroRL | 0:dd702039127a | 250 | |
alejandroRL | 0:dd702039127a | 251 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 252 | * |
alejandroRL | 0:dd702039127a | 253 | * GUI_DRAW |
alejandroRL | 0:dd702039127a | 254 | * |
alejandroRL | 0:dd702039127a | 255 | * The GUI_DRAW object is used as base class for selfdrawing, |
alejandroRL | 0:dd702039127a | 256 | * non-windows objects. They are used as content of different widgets, |
alejandroRL | 0:dd702039127a | 257 | * such as the bitmap or header widgets. |
alejandroRL | 0:dd702039127a | 258 | */ |
alejandroRL | 0:dd702039127a | 259 | /* Declare Object struct */ |
alejandroRL | 0:dd702039127a | 260 | typedef struct GUI_DRAW GUI_DRAW; |
alejandroRL | 0:dd702039127a | 261 | typedef void GUI_DRAW_SELF_CB (WM_HWIN hWin); |
alejandroRL | 0:dd702039127a | 262 | typedef WM_HMEM GUI_DRAW_HANDLE; |
alejandroRL | 0:dd702039127a | 263 | |
alejandroRL | 0:dd702039127a | 264 | /* Declare Object constants (member functions etc) */ |
alejandroRL | 0:dd702039127a | 265 | typedef struct { |
alejandroRL | 0:dd702039127a | 266 | void (* pfDraw) (GUI_DRAW_HANDLE hDrawObj, WM_HWIN hObj, int x, int y); |
alejandroRL | 0:dd702039127a | 267 | int (* pfGetXSize)(GUI_DRAW_HANDLE hDrawObj); |
alejandroRL | 0:dd702039127a | 268 | int (* pfGetYSize)(GUI_DRAW_HANDLE hDrawObj); |
alejandroRL | 0:dd702039127a | 269 | } GUI_DRAW_CONSTS; |
alejandroRL | 0:dd702039127a | 270 | |
alejandroRL | 0:dd702039127a | 271 | /* Declare Object */ |
alejandroRL | 0:dd702039127a | 272 | struct GUI_DRAW { |
alejandroRL | 0:dd702039127a | 273 | const GUI_DRAW_CONSTS* pConsts; |
alejandroRL | 0:dd702039127a | 274 | union { |
alejandroRL | 0:dd702039127a | 275 | const void * pData; |
alejandroRL | 0:dd702039127a | 276 | GUI_DRAW_SELF_CB* pfDraw; |
alejandroRL | 0:dd702039127a | 277 | } Data; |
alejandroRL | 0:dd702039127a | 278 | I16 xOff, yOff; |
alejandroRL | 0:dd702039127a | 279 | }; |
alejandroRL | 0:dd702039127a | 280 | |
alejandroRL | 0:dd702039127a | 281 | /* GUI_DRAW_ API */ |
alejandroRL | 0:dd702039127a | 282 | void GUI_DRAW__Draw (GUI_DRAW_HANDLE hDrawObj, WM_HWIN hObj, int x, int y); |
alejandroRL | 0:dd702039127a | 283 | int GUI_DRAW__GetXSize(GUI_DRAW_HANDLE hDrawObj); |
alejandroRL | 0:dd702039127a | 284 | int GUI_DRAW__GetYSize(GUI_DRAW_HANDLE hDrawObj); |
alejandroRL | 0:dd702039127a | 285 | |
alejandroRL | 0:dd702039127a | 286 | /* GUI_DRAW_ Constructurs for different objects */ |
alejandroRL | 0:dd702039127a | 287 | WM_HMEM GUI_DRAW_BITMAP_Create (const GUI_BITMAP* pBitmap, int x, int y); |
alejandroRL | 0:dd702039127a | 288 | WM_HMEM GUI_DRAW_BMP_Create (const void* pBMP, int x, int y); |
alejandroRL | 0:dd702039127a | 289 | WM_HMEM GUI_DRAW_STREAMED_Create(const GUI_BITMAP_STREAM * pBitmap, int x, int y); |
alejandroRL | 0:dd702039127a | 290 | WM_HMEM GUI_DRAW_SELF_Create(GUI_DRAW_SELF_CB* pfDraw, int x, int y); |
alejandroRL | 0:dd702039127a | 291 | |
alejandroRL | 0:dd702039127a | 292 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 293 | * |
alejandroRL | 0:dd702039127a | 294 | * Global data |
alejandroRL | 0:dd702039127a | 295 | * |
alejandroRL | 0:dd702039127a | 296 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 297 | */ |
alejandroRL | 0:dd702039127a | 298 | |
alejandroRL | 0:dd702039127a | 299 | extern const WIDGET_EFFECT WIDGET_Effect_3D; |
alejandroRL | 0:dd702039127a | 300 | extern const WIDGET_EFFECT WIDGET_Effect_3D1L; |
alejandroRL | 0:dd702039127a | 301 | extern const WIDGET_EFFECT WIDGET_Effect_3D2L; |
alejandroRL | 0:dd702039127a | 302 | extern const WIDGET_EFFECT WIDGET_Effect_None; |
alejandroRL | 0:dd702039127a | 303 | extern const WIDGET_EFFECT WIDGET_Effect_Simple; |
alejandroRL | 0:dd702039127a | 304 | |
alejandroRL | 0:dd702039127a | 305 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 306 | * |
alejandroRL | 0:dd702039127a | 307 | * Internal API routines |
alejandroRL | 0:dd702039127a | 308 | * |
alejandroRL | 0:dd702039127a | 309 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 310 | */ |
alejandroRL | 0:dd702039127a | 311 | |
alejandroRL | 0:dd702039127a | 312 | void WIDGET__DrawFocusRect (WIDGET * pWidget, const GUI_RECT * pRect, int Dist); |
alejandroRL | 0:dd702039127a | 313 | void WIDGET__DrawHLine (WIDGET * pWidget, int y, int x0, int x1); |
alejandroRL | 0:dd702039127a | 314 | void WIDGET__DrawTriangle (WIDGET * pWidget, int x, int y, int Size, int Inc); |
alejandroRL | 0:dd702039127a | 315 | void WIDGET__DrawVLine (WIDGET * pWidget, int x, int y0, int y1); |
alejandroRL | 0:dd702039127a | 316 | void WIDGET__EFFECT_DrawDownRect(WIDGET * pWidget, GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 317 | void WIDGET__EFFECT_DrawDown (WIDGET * pWidget); |
alejandroRL | 0:dd702039127a | 318 | void WIDGET__EFFECT_DrawUpRect (WIDGET * pWidget, GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 319 | void WIDGET__FillRectEx (WIDGET * pWidget, const GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 320 | int WIDGET__GetWindowSizeX (WM_HWIN hWin); |
alejandroRL | 0:dd702039127a | 321 | GUI_COLOR WIDGET__GetBkColor (WM_HWIN hObj); |
alejandroRL | 0:dd702039127a | 322 | int WIDGET__GetXSize (const WIDGET * pWidget); |
alejandroRL | 0:dd702039127a | 323 | int WIDGET__GetYSize (const WIDGET * pWidget); |
alejandroRL | 0:dd702039127a | 324 | void WIDGET__GetClientRect (WIDGET * pWidget, GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 325 | void WIDGET__GetInsideRect (WIDGET * pWidget, GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 326 | void WIDGET__Init (WIDGET * pWidget, int Id, U16 State); |
alejandroRL | 0:dd702039127a | 327 | void WIDGET__RotateRect90 (WIDGET * pWidget, GUI_RECT * pDest, const GUI_RECT * pRect); |
alejandroRL | 0:dd702039127a | 328 | void WIDGET__SetScrollState (WM_HWIN hWin, const WM_SCROLL_STATE * pVState, const WM_SCROLL_STATE * pState); |
alejandroRL | 0:dd702039127a | 329 | void WIDGET__FillStringInRect (const char * pText, const GUI_RECT * pFillRect, const GUI_RECT * pTextRectMax, const GUI_RECT * pTextRectAct); |
alejandroRL | 0:dd702039127a | 330 | |
alejandroRL | 0:dd702039127a | 331 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 332 | * |
alejandroRL | 0:dd702039127a | 333 | * API routines |
alejandroRL | 0:dd702039127a | 334 | * |
alejandroRL | 0:dd702039127a | 335 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 336 | */ |
alejandroRL | 0:dd702039127a | 337 | void WIDGET_SetState (WM_HWIN hObj, int State); |
alejandroRL | 0:dd702039127a | 338 | void WIDGET_AndState (WM_HWIN hObj, int State); |
alejandroRL | 0:dd702039127a | 339 | void WIDGET_OrState (WM_HWIN hObj, int State); |
alejandroRL | 0:dd702039127a | 340 | int WIDGET_HandleActive (WM_HWIN hObj, WM_MESSAGE* pMsg); |
alejandroRL | 0:dd702039127a | 341 | int WIDGET_GetState (WM_HWIN hObj); |
alejandroRL | 0:dd702039127a | 342 | int WIDGET_SetWidth (WM_HWIN hObj, int Width); |
alejandroRL | 0:dd702039127a | 343 | |
alejandroRL | 0:dd702039127a | 344 | void WIDGET_EFFECT_3D_DrawUp(void); |
alejandroRL | 0:dd702039127a | 345 | |
alejandroRL | 0:dd702039127a | 346 | const WIDGET_EFFECT* WIDGET_SetDefaultEffect(const WIDGET_EFFECT* pEffect); |
alejandroRL | 0:dd702039127a | 347 | |
alejandroRL | 0:dd702039127a | 348 | void WIDGET_SetEffect (WM_HWIN hObj, const WIDGET_EFFECT* pEffect); |
alejandroRL | 0:dd702039127a | 349 | |
alejandroRL | 0:dd702039127a | 350 | const WIDGET_EFFECT* WIDGET_GetDefaultEffect(void); |
alejandroRL | 0:dd702039127a | 351 | |
alejandroRL | 0:dd702039127a | 352 | void WIDGET_EFFECT_3D_SetColor (unsigned Index, GUI_COLOR Color); |
alejandroRL | 0:dd702039127a | 353 | void WIDGET_EFFECT_3D1L_SetColor (unsigned Index, GUI_COLOR Color); |
alejandroRL | 0:dd702039127a | 354 | void WIDGET_EFFECT_3D2L_SetColor (unsigned Index, GUI_COLOR Color); |
alejandroRL | 0:dd702039127a | 355 | void WIDGET_EFFECT_Simple_SetColor(unsigned Index, GUI_COLOR Color); |
alejandroRL | 0:dd702039127a | 356 | |
alejandroRL | 0:dd702039127a | 357 | GUI_COLOR WIDGET_EFFECT_3D_GetColor (unsigned Index); |
alejandroRL | 0:dd702039127a | 358 | GUI_COLOR WIDGET_EFFECT_3D1L_GetColor (unsigned Index); |
alejandroRL | 0:dd702039127a | 359 | GUI_COLOR WIDGET_EFFECT_3D2L_GetColor (unsigned Index); |
alejandroRL | 0:dd702039127a | 360 | GUI_COLOR WIDGET_EFFECT_Simple_GetColor(unsigned Index); |
alejandroRL | 0:dd702039127a | 361 | |
alejandroRL | 0:dd702039127a | 362 | int WIDGET_EFFECT_3D_GetNumColors(void); |
alejandroRL | 0:dd702039127a | 363 | int WIDGET_EFFECT_3D1L_GetNumColors(void); |
alejandroRL | 0:dd702039127a | 364 | int WIDGET_EFFECT_3D2L_GetNumColors(void); |
alejandroRL | 0:dd702039127a | 365 | int WIDGET_EFFECT_Simple_GetNumColors(void); |
alejandroRL | 0:dd702039127a | 366 | |
alejandroRL | 0:dd702039127a | 367 | /********************************************************************* |
alejandroRL | 0:dd702039127a | 368 | * |
alejandroRL | 0:dd702039127a | 369 | * Compatibility macros |
alejandroRL | 0:dd702039127a | 370 | * |
alejandroRL | 0:dd702039127a | 371 | ********************************************************************** |
alejandroRL | 0:dd702039127a | 372 | */ |
alejandroRL | 0:dd702039127a | 373 | #define WIDGET_SetDefaultEffect_3D() WIDGET_SetDefaultEffect(&WIDGET_Effect_3D) |
alejandroRL | 0:dd702039127a | 374 | #define WIDGET_SetDefaultEffect_3D1L() WIDGET_SetDefaultEffect(&WIDGET_Effect_3D1L) |
alejandroRL | 0:dd702039127a | 375 | #define WIDGET_SetDefaultEffect_3D2L() WIDGET_SetDefaultEffect(&WIDGET_Effect_3D2L) |
alejandroRL | 0:dd702039127a | 376 | #define WIDGET_SetDefaultEffect_None() WIDGET_SetDefaultEffect(&WIDGET_Effect_None) |
alejandroRL | 0:dd702039127a | 377 | #define WIDGET_SetDefaultEffect_Simple() WIDGET_SetDefaultEffect(&WIDGET_Effect_Simple) |
alejandroRL | 0:dd702039127a | 378 | |
alejandroRL | 0:dd702039127a | 379 | #endif /* GUI_WINSUPPORT */ |
alejandroRL | 0:dd702039127a | 380 | |
alejandroRL | 0:dd702039127a | 381 | #if defined(__cplusplus) |
alejandroRL | 0:dd702039127a | 382 | } |
alejandroRL | 0:dd702039127a | 383 | #endif |
alejandroRL | 0:dd702039127a | 384 | |
alejandroRL | 0:dd702039127a | 385 | #endif /* SLIDER_H */ |
alejandroRL | 0:dd702039127a | 386 | |
alejandroRL | 0:dd702039127a | 387 | |
alejandroRL | 0:dd702039127a | 388 | |
alejandroRL | 0:dd702039127a | 389 |