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