NuMaker emWin HMI

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?

UserRevisionLine numberNew 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 ****************************/