NuMaker emWin HMI

Committer:
csyang2
Date:
Wed Feb 27 14:34:09 2019 +0800
Revision:
1:c0f972361605
Add emWin related materials

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 : GUI.h
csyang2 1:c0f972361605 40 Purpose : GUI API include file
csyang2 1:c0f972361605 41 ---------------------------END-OF-HEADER------------------------------
csyang2 1:c0f972361605 42 */
csyang2 1:c0f972361605 43
csyang2 1:c0f972361605 44 #ifndef GUI_H
csyang2 1:c0f972361605 45 #define GUI_H
csyang2 1:c0f972361605 46
csyang2 1:c0f972361605 47 #include <stddef.h>
csyang2 1:c0f972361605 48
csyang2 1:c0f972361605 49 #include "GUI_ConfDefaults.h"
csyang2 1:c0f972361605 50 #include "GUI_Type.h"
csyang2 1:c0f972361605 51 #include "GUI_Version.h"
csyang2 1:c0f972361605 52
csyang2 1:c0f972361605 53 #if defined(__cplusplus)
csyang2 1:c0f972361605 54 extern "C" { /* Make sure we have C-declarations in C++ programs */
csyang2 1:c0f972361605 55 #endif
csyang2 1:c0f972361605 56
csyang2 1:c0f972361605 57 /*********************************************************************
csyang2 1:c0f972361605 58 *
csyang2 1:c0f972361605 59 * Disable string function warning with newer MSVC versions
csyang2 1:c0f972361605 60 */
csyang2 1:c0f972361605 61 #if defined (_MSC_VER)
csyang2 1:c0f972361605 62 #if (_MSC_VER > 1200)
csyang2 1:c0f972361605 63 #pragma warning( disable : 4996)
csyang2 1:c0f972361605 64 #endif
csyang2 1:c0f972361605 65 #endif
csyang2 1:c0f972361605 66
csyang2 1:c0f972361605 67 /*********************************************************************
csyang2 1:c0f972361605 68 *
csyang2 1:c0f972361605 69 * Macros, function replacement
csyang2 1:c0f972361605 70 */
csyang2 1:c0f972361605 71 #define GUI_COUNTOF(a) (sizeof(a) / sizeof(a[0]))
csyang2 1:c0f972361605 72 #define GUI_MIN(a,b) (((a) < (b)) ? (a) : (b))
csyang2 1:c0f972361605 73 #define GUI_MAX(a,b) (((a) > (b)) ? (a) : (b))
csyang2 1:c0f972361605 74 #define GUI_ZEROFILL(p, Size) (memset(p, 0, Size)) /**/
csyang2 1:c0f972361605 75
csyang2 1:c0f972361605 76 /*********************************************************************
csyang2 1:c0f972361605 77 *
csyang2 1:c0f972361605 78 * Support for multitasking systems (locking)
csyang2 1:c0f972361605 79 */
csyang2 1:c0f972361605 80 typedef struct GUI_CONTEXT GUI_CONTEXT;
csyang2 1:c0f972361605 81
csyang2 1:c0f972361605 82 #if !GUI_OS
csyang2 1:c0f972361605 83 #define GUI_LOCK()
csyang2 1:c0f972361605 84 #define GUI_UNLOCK()
csyang2 1:c0f972361605 85 #define GUITASK_INIT()
csyang2 1:c0f972361605 86 #define GUITASK_COPY_CONTEXT()
csyang2 1:c0f972361605 87 #else
csyang2 1:c0f972361605 88 void GUI_Lock(void);
csyang2 1:c0f972361605 89 void GUI_Unlock(void);
csyang2 1:c0f972361605 90 void GUITASK_Init(void);
csyang2 1:c0f972361605 91 void GUITASK_CopyContext(void);
csyang2 1:c0f972361605 92 void GUITASK_SetMaxTask(int MaxTask);
csyang2 1:c0f972361605 93 int GUITASK_GetMaxTask(void);
csyang2 1:c0f972361605 94 GUI_CONTEXT * GUITASK_GetpContext(int Index);
csyang2 1:c0f972361605 95 #define GUI_LOCK() GUI_Lock()
csyang2 1:c0f972361605 96 #define GUI_UNLOCK() GUI_Unlock()
csyang2 1:c0f972361605 97 #define GUITASK_INIT() GUITASK_Init()
csyang2 1:c0f972361605 98 #define GUITASK_COPY_CONTEXT() GUITASK_CopyContext()
csyang2 1:c0f972361605 99 #endif
csyang2 1:c0f972361605 100
csyang2 1:c0f972361605 101 /*********************************************************************
csyang2 1:c0f972361605 102 *
csyang2 1:c0f972361605 103 * API table of a display driver
csyang2 1:c0f972361605 104 */
csyang2 1:c0f972361605 105 struct GUI_DEVICE_API {
csyang2 1:c0f972361605 106 //
csyang2 1:c0f972361605 107 // Data
csyang2 1:c0f972361605 108 //
csyang2 1:c0f972361605 109 int DeviceClassIndex;
csyang2 1:c0f972361605 110 //
csyang2 1:c0f972361605 111 // Drawing functions
csyang2 1:c0f972361605 112 //
csyang2 1:c0f972361605 113 void (* pfDrawBitmap )(GUI_DEVICE * pDevice, int x0, int y0, int xsize, int ysize, int BitsPerPixel, int BytesPerLine, const U8 * pData, int Diff, const LCD_PIXELINDEX * pTrans);
csyang2 1:c0f972361605 114 void (* pfDrawHLine )(GUI_DEVICE * pDevice, int x0, int y0, int x1);
csyang2 1:c0f972361605 115 void (* pfDrawVLine )(GUI_DEVICE * pDevice, int x , int y0, int y1);
csyang2 1:c0f972361605 116 void (* pfFillRect )(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 117 LCD_PIXELINDEX (* pfGetPixelIndex)(GUI_DEVICE * pDevice, int x, int y);
csyang2 1:c0f972361605 118 void (* pfSetPixelIndex)(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX ColorIndex);
csyang2 1:c0f972361605 119 void (* pfXorPixel )(GUI_DEVICE * pDevice, int x, int y);
csyang2 1:c0f972361605 120 //
csyang2 1:c0f972361605 121 // Set origin
csyang2 1:c0f972361605 122 //
csyang2 1:c0f972361605 123 void (* pfSetOrg )(GUI_DEVICE * pDevice, int x, int y);
csyang2 1:c0f972361605 124 //
csyang2 1:c0f972361605 125 // Request information
csyang2 1:c0f972361605 126 //
csyang2 1:c0f972361605 127 void (*(* pfGetDevFunc) (GUI_DEVICE ** ppDevice, int Index))(void);
csyang2 1:c0f972361605 128 I32 (* pfGetDevProp )(GUI_DEVICE * pDevice, int Index);
csyang2 1:c0f972361605 129 void *(* pfGetDevData )(GUI_DEVICE * pDevice, int Index);
csyang2 1:c0f972361605 130 void (* pfGetRect )(GUI_DEVICE * pDevice, LCD_RECT * pRect);
csyang2 1:c0f972361605 131 };
csyang2 1:c0f972361605 132
csyang2 1:c0f972361605 133 /*********************************************************************
csyang2 1:c0f972361605 134 *
csyang2 1:c0f972361605 135 * Device classes
csyang2 1:c0f972361605 136 */
csyang2 1:c0f972361605 137 typedef enum {
csyang2 1:c0f972361605 138 DEVICE_CLASS_DRIVER = 0,
csyang2 1:c0f972361605 139 DEVICE_CLASS_DRIVER_MODIFIER, // Zoom or delta-pixel modifier
csyang2 1:c0f972361605 140 DEVICE_CLASS_VNC,
csyang2 1:c0f972361605 141 DEVICE_CLASS_SPRITE,
csyang2 1:c0f972361605 142 DEVICE_CLASS_MEMDEV,
csyang2 1:c0f972361605 143 DEVICE_CLASS_ALPHA,
csyang2 1:c0f972361605 144 DEVICE_CLASS_AUTOALPHA,
csyang2 1:c0f972361605 145 DEVICE_CLASS_MEASDEV
csyang2 1:c0f972361605 146 } DEVICE_CLASS;
csyang2 1:c0f972361605 147
csyang2 1:c0f972361605 148 #define GUI_DEVICE_STAYONTOP 1
csyang2 1:c0f972361605 149
csyang2 1:c0f972361605 150 /*********************************************************************
csyang2 1:c0f972361605 151 *
csyang2 1:c0f972361605 152 * Display drivers
csyang2 1:c0f972361605 153 */
csyang2 1:c0f972361605 154 //
csyang2 1:c0f972361605 155 // Addresses
csyang2 1:c0f972361605 156 //
csyang2 1:c0f972361605 157 extern const GUI_DEVICE_API GUIDRV_Win_API;
csyang2 1:c0f972361605 158 extern const GUI_DEVICE_API GUIDRV_Template_API;
csyang2 1:c0f972361605 159
csyang2 1:c0f972361605 160 //
csyang2 1:c0f972361605 161 // Macros to be used in configuration files
csyang2 1:c0f972361605 162 //
csyang2 1:c0f972361605 163 #define GUIDRV_WIN32 &GUIDRV_Win_API
csyang2 1:c0f972361605 164
csyang2 1:c0f972361605 165 #if defined(WIN32) && !defined(LCD_SIMCONTROLLER)
csyang2 1:c0f972361605 166 #define GUIDRV_TEMPLATE &GUIDRV_Win_API
csyang2 1:c0f972361605 167 #else
csyang2 1:c0f972361605 168 #define GUIDRV_TEMPLATE &GUIDRV_Template_API
csyang2 1:c0f972361605 169 #endif
csyang2 1:c0f972361605 170
csyang2 1:c0f972361605 171 /*********************************************************************
csyang2 1:c0f972361605 172 *
csyang2 1:c0f972361605 173 * Definition of GUI_DEVICE structure
csyang2 1:c0f972361605 174 */
csyang2 1:c0f972361605 175 struct GUI_DEVICE {
csyang2 1:c0f972361605 176 //
csyang2 1:c0f972361605 177 // Linking
csyang2 1:c0f972361605 178 //
csyang2 1:c0f972361605 179 GUI_DEVICE * pNext;
csyang2 1:c0f972361605 180 GUI_DEVICE * pPrev;
csyang2 1:c0f972361605 181 //
csyang2 1:c0f972361605 182 // Data
csyang2 1:c0f972361605 183 //
csyang2 1:c0f972361605 184 union {
csyang2 1:c0f972361605 185 GUI_HMEM hContext; // Handle of payload data like sprite- or memory device context
csyang2 1:c0f972361605 186 void * pContext; // Pointer for context data in a fixed block
csyang2 1:c0f972361605 187 } u;
csyang2 1:c0f972361605 188 //
csyang2 1:c0f972361605 189 // API pointers
csyang2 1:c0f972361605 190 //
csyang2 1:c0f972361605 191 const GUI_DEVICE_API * pDeviceAPI;
csyang2 1:c0f972361605 192 const LCD_API_COLOR_CONV * pColorConvAPI;
csyang2 1:c0f972361605 193 U16 Flags;
csyang2 1:c0f972361605 194 int LayerIndex;
csyang2 1:c0f972361605 195 };
csyang2 1:c0f972361605 196
csyang2 1:c0f972361605 197 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_1;
csyang2 1:c0f972361605 198 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_8;
csyang2 1:c0f972361605 199 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_16;
csyang2 1:c0f972361605 200 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_32;
csyang2 1:c0f972361605 201
csyang2 1:c0f972361605 202 /*********************************************************************
csyang2 1:c0f972361605 203 *
csyang2 1:c0f972361605 204 * GUI_CONTEXT
csyang2 1:c0f972361605 205 *
csyang2 1:c0f972361605 206 * This structure is public for one reason only:
csyang2 1:c0f972361605 207 * To allow the application to save and restore the context.
csyang2 1:c0f972361605 208 */
csyang2 1:c0f972361605 209 typedef union {
csyang2 1:c0f972361605 210 U8 aColorIndex8[2];
csyang2 1:c0f972361605 211 U16 aColorIndex16[2];
csyang2 1:c0f972361605 212 U32 aColorIndex32[2];
csyang2 1:c0f972361605 213 } LCD_COLORINDEX_UNION;
csyang2 1:c0f972361605 214
csyang2 1:c0f972361605 215 struct GUI_CONTEXT {
csyang2 1:c0f972361605 216 //
csyang2 1:c0f972361605 217 // Variables in LCD module
csyang2 1:c0f972361605 218 //
csyang2 1:c0f972361605 219 LCD_COLORINDEX_UNION uLCD;
csyang2 1:c0f972361605 220 LCD_RECT ClipRect;
csyang2 1:c0f972361605 221 U8 DrawMode;
csyang2 1:c0f972361605 222 U8 SelLayer;
csyang2 1:c0f972361605 223 U8 TextStyle;
csyang2 1:c0f972361605 224 //
csyang2 1:c0f972361605 225 // Variables in GL module
csyang2 1:c0f972361605 226 //
csyang2 1:c0f972361605 227 GUI_RECT * pClipRect_HL; // High level clip rectangle ... Speed optimization so drawing routines can optimize
csyang2 1:c0f972361605 228 U8 PenSize;
csyang2 1:c0f972361605 229 U8 PenShape;
csyang2 1:c0f972361605 230 U8 LineStyle;
csyang2 1:c0f972361605 231 U8 StrikeWidth;
csyang2 1:c0f972361605 232 //
csyang2 1:c0f972361605 233 // Variables in GUICHAR module
csyang2 1:c0f972361605 234 //
csyang2 1:c0f972361605 235 const GUI_FONT * pAFont;
csyang2 1:c0f972361605 236 I16P LBorder;
csyang2 1:c0f972361605 237 I16P DispPosX, DispPosY;
csyang2 1:c0f972361605 238 I16P DrawPosX, DrawPosY;
csyang2 1:c0f972361605 239 I16P TextMode, TextAlign;
csyang2 1:c0f972361605 240 GUI_COLOR Color, BkColor; // Required only when changing devices and for speed opt (caching)
csyang2 1:c0f972361605 241 //
csyang2 1:c0f972361605 242 // Pointer to color indices
csyang2 1:c0f972361605 243 //
csyang2 1:c0f972361605 244 LCD_PIXELINDEX * LCD_pBkColorIndex;
csyang2 1:c0f972361605 245 LCD_PIXELINDEX * LCD_pColorIndex;
csyang2 1:c0f972361605 246 //
csyang2 1:c0f972361605 247 // Variables in WM module
csyang2 1:c0f972361605 248 //
csyang2 1:c0f972361605 249 #if GUI_WINSUPPORT
csyang2 1:c0f972361605 250 const GUI_RECT * WM__pUserClipRect;
csyang2 1:c0f972361605 251 GUI_HWIN hAWin;
csyang2 1:c0f972361605 252 int xOff, yOff;
csyang2 1:c0f972361605 253 U8 WM_IsActive;
csyang2 1:c0f972361605 254 #endif
csyang2 1:c0f972361605 255 //
csyang2 1:c0f972361605 256 // Array of pointers to device chains
csyang2 1:c0f972361605 257 //
csyang2 1:c0f972361605 258 GUI_DEVICE * apDriver[GUI_NUM_LAYERS];
csyang2 1:c0f972361605 259 //
csyang2 1:c0f972361605 260 // Variables in MEMDEV module (with memory devices only)
csyang2 1:c0f972361605 261 //
csyang2 1:c0f972361605 262 GUI_HMEM hDevData;
csyang2 1:c0f972361605 263 //
csyang2 1:c0f972361605 264 // Variables in Anitaliasing module
csyang2 1:c0f972361605 265 //
csyang2 1:c0f972361605 266 const tLCD_HL_APIList * pLCD_HL; // Required to reroute drawing (HLine & Pixel) to the AA module
csyang2 1:c0f972361605 267 U8 AA_Factor;
csyang2 1:c0f972361605 268 U8 AA_HiResEnable;
csyang2 1:c0f972361605 269 void (* AA_pfSetPixelAA)(int x, int y, U8 Intens); // Function to be used for drawing a single pixel
csyang2 1:c0f972361605 270 //
csyang2 1:c0f972361605 271 // Used to reference and link in the copyright string for libraries.
csyang2 1:c0f972361605 272 //
csyang2 1:c0f972361605 273 const char * sCopyright;
csyang2 1:c0f972361605 274 };
csyang2 1:c0f972361605 275
csyang2 1:c0f972361605 276 /* Rename GUI_SaveContext in order to avoid crashes if wrong GUIConf is used */
csyang2 1:c0f972361605 277 #if (GUI_WINSUPPORT == 1)
csyang2 1:c0f972361605 278 #define GUI_SaveContext GUI_SaveContext_W
csyang2 1:c0f972361605 279 #else
csyang2 1:c0f972361605 280 #define GUI_SaveContext GUI_SaveContext_
csyang2 1:c0f972361605 281 #endif
csyang2 1:c0f972361605 282
csyang2 1:c0f972361605 283 /*********************************************************************
csyang2 1:c0f972361605 284 *
csyang2 1:c0f972361605 285 * Device management
csyang2 1:c0f972361605 286 */
csyang2 1:c0f972361605 287 GUI_DEVICE * GUI_DEVICE_Create (const GUI_DEVICE_API * pDeviceAPI, const LCD_API_COLOR_CONV * pColorConvAPI, U16 Flags, int LayerIndex);
csyang2 1:c0f972361605 288 GUI_DEVICE * GUI_DEVICE_CreateAndLink(const GUI_DEVICE_API * pDeviceAPI, const LCD_API_COLOR_CONV * pColorConvAPI, U16 Flags, int LayerIndex);
csyang2 1:c0f972361605 289 void GUI_DEVICE_Delete (GUI_DEVICE * pDevice);
csyang2 1:c0f972361605 290 int GUI_DEVICE_Link (GUI_DEVICE * pDevice);
csyang2 1:c0f972361605 291 void GUI_DEVICE_Unlink (GUI_DEVICE * pDevice);
csyang2 1:c0f972361605 292 GUI_DEVICE * GUI_DEVICE__GetpDriver (int LayerIndex);
csyang2 1:c0f972361605 293 GUI_DEVICE * GUI_DEVICE__GetpDevice (int LayerIndex, int DeviceClass);
csyang2 1:c0f972361605 294
csyang2 1:c0f972361605 295 GUI_DEVICE * GUI_DEVICE_UnlinkTaskDevices(void);
csyang2 1:c0f972361605 296 void GUI_DEVICE_LinkDevices (GUI_DEVICE * pDevice);
csyang2 1:c0f972361605 297
csyang2 1:c0f972361605 298 /*********************************************************************
csyang2 1:c0f972361605 299 *
csyang2 1:c0f972361605 300 * GUI_DIRTYDEVICE
csyang2 1:c0f972361605 301 */
csyang2 1:c0f972361605 302 typedef struct {
csyang2 1:c0f972361605 303 void * pData; // Pointer to first pixel
csyang2 1:c0f972361605 304 int x0, y0; // Coordinates of the upper left pixel
csyang2 1:c0f972361605 305 int xSize, ySize; // Size of dirty rectangle
csyang2 1:c0f972361605 306 int LineOff; // Virtual xSize in pixels
csyang2 1:c0f972361605 307 int BytesPerPixel; // Number of bytes required per pixel
csyang2 1:c0f972361605 308 int IsDirty; // Indicates if dirty pixels exist
csyang2 1:c0f972361605 309 } GUI_DIRTYDEVICE_INFO;
csyang2 1:c0f972361605 310
csyang2 1:c0f972361605 311 int GUI_DIRTYDEVICE_Create (void);
csyang2 1:c0f972361605 312 int GUI_DIRTYDEVICE_CreateEx (int LayerIndex);
csyang2 1:c0f972361605 313 int GUI_DIRTYDEVICE_CreateExInfo(GUI_DIRTYDEVICE_INFO * pInfo, int LayerIndex);
csyang2 1:c0f972361605 314 int GUI_DIRTYDEVICE_Delete (void);
csyang2 1:c0f972361605 315 int GUI_DIRTYDEVICE_DeleteEx (int LayerIndex);
csyang2 1:c0f972361605 316 int GUI_DIRTYDEVICE_Fetch (GUI_DIRTYDEVICE_INFO * pInfo);
csyang2 1:c0f972361605 317 int GUI_DIRTYDEVICE_FetchEx (GUI_DIRTYDEVICE_INFO * pInfo, int LayerIndex);
csyang2 1:c0f972361605 318
csyang2 1:c0f972361605 319 /*********************************************************************
csyang2 1:c0f972361605 320 *
csyang2 1:c0f972361605 321 * GUI_GCACHE
csyang2 1:c0f972361605 322 */
csyang2 1:c0f972361605 323 int GUI_GCACHE_4_Create(const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 324 int GUI_GCACHE_4_CreateEx(int LayerIndex, const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 325
csyang2 1:c0f972361605 326 /*********************************************************************
csyang2 1:c0f972361605 327 *
csyang2 1:c0f972361605 328 * GUI_DCACHE
csyang2 1:c0f972361605 329 */
csyang2 1:c0f972361605 330 void GUI_DCACHE_SetClearCacheHook(void (* pFunc)(U32 LayerMask));
csyang2 1:c0f972361605 331 void GUI_DCACHE_Clear (U32 LayerMask);
csyang2 1:c0f972361605 332
csyang2 1:c0f972361605 333 extern void (* GUI_DCACHE__pfClearCacheHook)(U32 LayerMask);
csyang2 1:c0f972361605 334
csyang2 1:c0f972361605 335 /*********************************************************************
csyang2 1:c0f972361605 336 *
csyang2 1:c0f972361605 337 * GUI_SOFTLAYER
csyang2 1:c0f972361605 338 */
csyang2 1:c0f972361605 339 typedef struct {
csyang2 1:c0f972361605 340 int xPos;
csyang2 1:c0f972361605 341 int yPos;
csyang2 1:c0f972361605 342 int xSize;
csyang2 1:c0f972361605 343 int ySize;
csyang2 1:c0f972361605 344 int Visible;
csyang2 1:c0f972361605 345 } GUI_SOFTLAYER_CONFIG;
csyang2 1:c0f972361605 346
csyang2 1:c0f972361605 347 int GUI_SOFTLAYER_Enable (GUI_SOFTLAYER_CONFIG * pConfig, int NumLayers, GUI_COLOR CompositeColor);
csyang2 1:c0f972361605 348 int GUI_SOFTLAYER_Refresh (void);
csyang2 1:c0f972361605 349 void GUI_SOFTLAYER_SetCompositeColor(U32 Color);
csyang2 1:c0f972361605 350 int GUI_SOFTLAYER_MULTIBUF_Enable (int OnOff);
csyang2 1:c0f972361605 351
csyang2 1:c0f972361605 352 /*********************************************************************
csyang2 1:c0f972361605 353 *
csyang2 1:c0f972361605 354 * General routines
csyang2 1:c0f972361605 355 */
csyang2 1:c0f972361605 356 void GUI_Exit (void);
csyang2 1:c0f972361605 357 GUI_COLOR GUI_GetDefaultBkColor (void);
csyang2 1:c0f972361605 358 GUI_COLOR GUI_GetDefaultColor (void);
csyang2 1:c0f972361605 359 const GUI_FONT * GUI_GetDefaultFont (void);
csyang2 1:c0f972361605 360 int GUI_GetScreenSizeX (void);
csyang2 1:c0f972361605 361 int GUI_GetScreenSizeY (void);
csyang2 1:c0f972361605 362 const char * GUI_GetVersionString (void);
csyang2 1:c0f972361605 363 int GUI_Init (void);
csyang2 1:c0f972361605 364 int GUI_IsInitialized (void);
csyang2 1:c0f972361605 365 void GUI_SetAfterInitHook (void (* pFunc)(void));
csyang2 1:c0f972361605 366 void GUI_RegisterAfterInitHook(void (* pFunc)(void), GUI_REGISTER_INIT * pRegisterInit);
csyang2 1:c0f972361605 367 void GUI_RestoreContext (const GUI_CONTEXT * pContext);
csyang2 1:c0f972361605 368 void GUI_SaveContext (GUI_CONTEXT * pContext);
csyang2 1:c0f972361605 369 const GUI_RECT * GUI_SetClipRect (const GUI_RECT * pRect);
csyang2 1:c0f972361605 370 void GUI_SetControlHook (void (* pFunc)(int LayerIndex, int Cmd));
csyang2 1:c0f972361605 371 void GUI_SetDefault (void);
csyang2 1:c0f972361605 372 void GUI_SetDefaultBkColor (GUI_COLOR Color);
csyang2 1:c0f972361605 373 void GUI_SetDefaultColor (GUI_COLOR Color);
csyang2 1:c0f972361605 374 void GUI_SetDefaultFont (const GUI_FONT * pFont);
csyang2 1:c0f972361605 375 GUI_DRAWMODE GUI_SetDrawMode (GUI_DRAWMODE dm);
csyang2 1:c0f972361605 376 void GUI_SetScreenSizeX (int xSize);
csyang2 1:c0f972361605 377 void GUI_SetScreenSizeY (int ySize);
csyang2 1:c0f972361605 378 void GUI_SetRefreshHook (void (* pFunc)(void));
csyang2 1:c0f972361605 379 void MainTask (void);
csyang2 1:c0f972361605 380
csyang2 1:c0f972361605 381 #define GUI_PID_SetInitFunc(x) GUI_SetAfterInitHook(x) // Compatibility
csyang2 1:c0f972361605 382
csyang2 1:c0f972361605 383 /*********************************************************************
csyang2 1:c0f972361605 384 *
csyang2 1:c0f972361605 385 * Function replacement
csyang2 1:c0f972361605 386 */
csyang2 1:c0f972361605 387 void GUI_SetpfMemset(void * (* pFunc)(void * pDest, int c, size_t Cnt));
csyang2 1:c0f972361605 388 void GUI_SetpfMemcpy(void * (* pFunc)(void * pDest, const void * pSrc, size_t Cnt));
csyang2 1:c0f972361605 389 void GUI_SetpfStrcmp(int (* pFunc)(const char *, const char *));
csyang2 1:c0f972361605 390 void GUI_SetpfStrlen(size_t (* pFunc)(const char *));
csyang2 1:c0f972361605 391 void GUI_SetpfStrcpy(char * (* pFunc)(char *, const char *));
csyang2 1:c0f972361605 392
csyang2 1:c0f972361605 393 /*********************************************************************
csyang2 1:c0f972361605 394 *
csyang2 1:c0f972361605 395 * Rectangle helper functions
csyang2 1:c0f972361605 396 */
csyang2 1:c0f972361605 397 void GUI_AddRect (GUI_RECT * pDest, const GUI_RECT * pRect, int Dist);
csyang2 1:c0f972361605 398 int GUI_RectsIntersect(const GUI_RECT * pr0, const GUI_RECT * pr1);
csyang2 1:c0f972361605 399 void GUI_MoveRect (GUI_RECT * pRect, int x, int y);
csyang2 1:c0f972361605 400 void GUI_MergeRect (GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1);
csyang2 1:c0f972361605 401 int GUI__IntersectRects(GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1);
csyang2 1:c0f972361605 402 void GUI__IntersectRect (GUI_RECT * pDest, const GUI_RECT * pr0);
csyang2 1:c0f972361605 403 void GUI__ReduceRect (GUI_RECT * pDest, const GUI_RECT * pRect, int Dist);
csyang2 1:c0f972361605 404
csyang2 1:c0f972361605 405 /*********************************************************************
csyang2 1:c0f972361605 406 *
csyang2 1:c0f972361605 407 * Misc helper functions
csyang2 1:c0f972361605 408 */
csyang2 1:c0f972361605 409 I32 GUI__ATan2(I32 x, I32 y, I32 * ph);
csyang2 1:c0f972361605 410 I32 GUI__ASinHQ(I32 SinHQ);
csyang2 1:c0f972361605 411 int GUI__CompactPixelIndices (LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel);
csyang2 1:c0f972361605 412 int GUI__CompactPixelIndicesEx(LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 413 int GUI__ConvertColor2Index (LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI, void * pResult);
csyang2 1:c0f972361605 414 void GUI__Config(void);
csyang2 1:c0f972361605 415 I32 GUI__CosHQ(I32 Ang1000);
csyang2 1:c0f972361605 416 int GUI__DivideRound (int a, int b);
csyang2 1:c0f972361605 417 I32 GUI__DivideRound32 (I32 a, I32 b);
csyang2 1:c0f972361605 418 void GUI__ExpandPixelIndices (void * pBuffer, int NumPixels, int BitsPerPixel);
csyang2 1:c0f972361605 419 void GUI__ExpandPixelIndicesEx (void * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 420 int GUI__SetText(GUI_HMEM * phText, const char * s);
csyang2 1:c0f972361605 421 I32 GUI__SinHQ(I32 Ang1000);
csyang2 1:c0f972361605 422 I32 GUI__sqrt32(I32 Square);
csyang2 1:c0f972361605 423 void GUI__DrawTwinArc2(int xl, int xr, int y0, int r, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorFill);
csyang2 1:c0f972361605 424 void GUI__DrawTwinArc4(int x0, int y0, int x1, int y1, int r, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorFill);
csyang2 1:c0f972361605 425 void GUI__FillTrippleArc(int x0, int y0, int Size, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorR2, GUI_COLOR ColorFill);
csyang2 1:c0f972361605 426 void GUI__RegisterExit(GUI_REGISTER_EXIT * pRegisterExit);
csyang2 1:c0f972361605 427 void GUI__RegisterInit(GUI_REGISTER_INIT * pRegisterInit);
csyang2 1:c0f972361605 428
csyang2 1:c0f972361605 429 /*********************************************************************
csyang2 1:c0f972361605 430 *
csyang2 1:c0f972361605 431 * Optional function replacement
csyang2 1:c0f972361605 432 */
csyang2 1:c0f972361605 433 void * GUI__memcpy(void * pDest, const void * pSrc, size_t NumBytes);
csyang2 1:c0f972361605 434 void * GUI__memset(void * pDest, int c, size_t Cnt);
csyang2 1:c0f972361605 435
csyang2 1:c0f972361605 436 /*********************************************************************
csyang2 1:c0f972361605 437 *
csyang2 1:c0f972361605 438 * Get / Set Attributes
csyang2 1:c0f972361605 439 */
csyang2 1:c0f972361605 440 GUI_COLOR GUI_GetBkColor (void);
csyang2 1:c0f972361605 441 int GUI_GetBkColorIndex(void);
csyang2 1:c0f972361605 442 GUI_COLOR GUI_GetColor (void);
csyang2 1:c0f972361605 443 int GUI_GetColorIndex (void);
csyang2 1:c0f972361605 444 U8 GUI_GetLineStyle (void);
csyang2 1:c0f972361605 445 U8 GUI_GetPenSize (void);
csyang2 1:c0f972361605 446 U8 GUI_GetPenShape (void);
csyang2 1:c0f972361605 447 unsigned GUI_GetPixelIndex (int x, int y);
csyang2 1:c0f972361605 448
csyang2 1:c0f972361605 449 void GUI_SetBkColor (GUI_COLOR);
csyang2 1:c0f972361605 450 void GUI_SetColor (GUI_COLOR);
csyang2 1:c0f972361605 451 void GUI_SetBkColorIndex(int Index);
csyang2 1:c0f972361605 452 void GUI_SetColorIndex(int Index);
csyang2 1:c0f972361605 453
csyang2 1:c0f972361605 454 U8 GUI_SetPenSize (U8 Size);
csyang2 1:c0f972361605 455 U8 GUI_SetPenShape (U8 Shape);
csyang2 1:c0f972361605 456 U8 GUI_SetLineStyle (U8 Style);
csyang2 1:c0f972361605 457
csyang2 1:c0f972361605 458 /* Get/Set Character used as decimal point (usually '.' or ',') */
csyang2 1:c0f972361605 459 char GUI_GetDecChar(void);
csyang2 1:c0f972361605 460 char GUI_SetDecChar(char c);
csyang2 1:c0f972361605 461
csyang2 1:c0f972361605 462 /*********************************************************************
csyang2 1:c0f972361605 463 *
csyang2 1:c0f972361605 464 * Color / Index related functions
csyang2 1:c0f972361605 465 */
csyang2 1:c0f972361605 466 int GUI_Color2Index(GUI_COLOR color);
csyang2 1:c0f972361605 467 GUI_COLOR GUI_Color2VisColor(GUI_COLOR color);
csyang2 1:c0f972361605 468 char GUI_ColorIsAvailable(GUI_COLOR color);
csyang2 1:c0f972361605 469 GUI_COLOR GUI_Index2Color(int Index);
csyang2 1:c0f972361605 470 U32 GUI_CalcColorDist (GUI_COLOR Color0, GUI_COLOR Color1);
csyang2 1:c0f972361605 471 U32 GUI_CalcVisColorError(GUI_COLOR color);
csyang2 1:c0f972361605 472
csyang2 1:c0f972361605 473 /*********************************************************************
csyang2 1:c0f972361605 474 *
csyang2 1:c0f972361605 475 * Error handler
csyang2 1:c0f972361605 476 */
csyang2 1:c0f972361605 477 void GUI_SetOnErrorFunc(void (* pFunc)(const char * s));
csyang2 1:c0f972361605 478
csyang2 1:c0f972361605 479 /*********************************************************************
csyang2 1:c0f972361605 480 *
csyang2 1:c0f972361605 481 * Logging (for debugging primarily)
csyang2 1:c0f972361605 482 */
csyang2 1:c0f972361605 483 void GUI_Log (const char * s);
csyang2 1:c0f972361605 484 void GUI_Log1 (const char * s, I32 p0);
csyang2 1:c0f972361605 485 void GUI_Log2 (const char * s, I32 p0, I32 p1);
csyang2 1:c0f972361605 486 void GUI_Log3 (const char * s, I32 p0, I32 p1, I32 p2);
csyang2 1:c0f972361605 487 void GUI_Log4 (const char * s, I32 p0, I32 p1, I32 p2,I32 p3);
csyang2 1:c0f972361605 488 void GUI_Warn (const char * s);
csyang2 1:c0f972361605 489 void GUI_Warn1 (const char * s, I32 p0);
csyang2 1:c0f972361605 490 void GUI_Warn2 (const char * s, I32 p0, I32 p1);
csyang2 1:c0f972361605 491 void GUI_Warn3 (const char * s, I32 p0, I32 p1, I32 p2);
csyang2 1:c0f972361605 492 void GUI_Warn4 (const char * s, I32 p0, I32 p1, I32 p2, I32 p3);
csyang2 1:c0f972361605 493 void GUI_ErrorOut (const char * s);
csyang2 1:c0f972361605 494 void GUI_ErrorOut1(const char * s, I32 p0);
csyang2 1:c0f972361605 495 void GUI_ErrorOut2(const char * s, I32 p0, I32 p1);
csyang2 1:c0f972361605 496 void GUI_ErrorOut3(const char * s, I32 p0, I32 p1, I32 p2);
csyang2 1:c0f972361605 497 void GUI_ErrorOut4(const char * s, I32 p0, I32 p1, I32 p2, I32 p3);
csyang2 1:c0f972361605 498
csyang2 1:c0f972361605 499 /*********************************************************************
csyang2 1:c0f972361605 500 *
csyang2 1:c0f972361605 501 * 2d - GL
csyang2 1:c0f972361605 502 */
csyang2 1:c0f972361605 503 void GUI_Clear (void);
csyang2 1:c0f972361605 504 void GUI_ClearRect (int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 505 void GUI_ClearRectEx (const GUI_RECT * pRect);
csyang2 1:c0f972361605 506 void GUI_CopyRect (int x0, int y0, int x1, int y1, int dx, int dy);
csyang2 1:c0f972361605 507 void GUI_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1);
csyang2 1:c0f972361605 508 void GUI_DrawBitmap (const GUI_BITMAP * pBM, int x0, int y0);
csyang2 1:c0f972361605 509 void GUI_DrawBitmapMag (const GUI_BITMAP * pBM, int x0, int y0, int XMul, int YMul);
csyang2 1:c0f972361605 510 void GUI_DrawBitmapEx (const GUI_BITMAP * pBM, int x0, int y0, int xCenter, int yCenter, int xMag, int yMag);
csyang2 1:c0f972361605 511 void GUI_DrawBitmapExp (int x0, int y0, int XSize, int YSize, int XMul, int YMul, int BitsPerPixel, int BytesPerLine, const U8 * pData, const GUI_LOGPALETTE * pPal);
csyang2 1:c0f972361605 512 void GUI_DrawBitmapHWAlpha(const GUI_BITMAP * pBM, int x0, int y0);
csyang2 1:c0f972361605 513 void GUI_DrawCircle (int x0, int y0, int r);
csyang2 1:c0f972361605 514 void GUI_DrawEllipse (int x0, int y0, int rx, int ry);
csyang2 1:c0f972361605 515 void GUI_DrawGradientH (int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1);
csyang2 1:c0f972361605 516 void GUI_DrawGradientV (int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1);
csyang2 1:c0f972361605 517 void GUI_DrawGradientRoundedH(int x0, int y0, int x1, int y1, int rd, GUI_COLOR Color0, GUI_COLOR Color1);
csyang2 1:c0f972361605 518 void GUI_DrawGradientRoundedV(int x0, int y0, int x1, int y1, int rd, GUI_COLOR Color0, GUI_COLOR Color1);
csyang2 1:c0f972361605 519 void GUI_DrawGraph (I16 * pay, int NumPoints, int x0, int y0);
csyang2 1:c0f972361605 520 void GUI_DrawGraphEx (I16 * pay, int NumPoints, int x0, int y0, int Numerator, int Denominator, int MirrorX);
csyang2 1:c0f972361605 521 void GUI_DrawHLine (int y0, int x0, int x1);
csyang2 1:c0f972361605 522 void GUI_DrawLine (int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 523 void GUI_DrawLineRel (int dx, int dy);
csyang2 1:c0f972361605 524 void GUI_DrawLineTo (int x, int y);
csyang2 1:c0f972361605 525 void GUI_DrawPie (int x0, int y0, int r, int a0, int a1, int Type);
csyang2 1:c0f972361605 526 void GUI_DrawPixel (int x, int y);
csyang2 1:c0f972361605 527 void GUI_DrawPoint (int x, int y);
csyang2 1:c0f972361605 528 void GUI_DrawPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
csyang2 1:c0f972361605 529 void GUI_DrawPolyLine (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
csyang2 1:c0f972361605 530 void GUI_DrawFocusRect (const GUI_RECT * pRect, int Dist);
csyang2 1:c0f972361605 531 void GUI_DrawRect (int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 532 void GUI_DrawRectEx (const GUI_RECT * pRect);
csyang2 1:c0f972361605 533 void GUI_DrawRoundedFrame (int x0, int y0, int x1, int y1, int r, int w);
csyang2 1:c0f972361605 534 void GUI_DrawRoundedRect (int x0, int y0, int x1, int y1, int r);
csyang2 1:c0f972361605 535 void GUI_DrawVLine (int x0, int y0, int y1);
csyang2 1:c0f972361605 536 void GUI_FillCircle (int x0, int y0, int r);
csyang2 1:c0f972361605 537 void GUI_FillEllipse (int x0, int y0, int rx, int ry);
csyang2 1:c0f972361605 538 void GUI_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
csyang2 1:c0f972361605 539 void GUI_FillRect (int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 540 void GUI_FillRectEx (const GUI_RECT * pRect);
csyang2 1:c0f972361605 541 void GUI_FillRoundedFrame (int x0, int y0, int x1, int y1, int r, int w);
csyang2 1:c0f972361605 542 void GUI_FillRoundedRect (int x0, int y0, int x1, int y1, int r);
csyang2 1:c0f972361605 543 void GUI_FillRoundedRectB (int x0, int y0, int x1, int y1, int r);
csyang2 1:c0f972361605 544 void GUI_FillRoundedRectT (int x0, int y0, int x1, int y1, int r);
csyang2 1:c0f972361605 545 void GUI_GetClientRect (GUI_RECT * pRect);
csyang2 1:c0f972361605 546 void GUI_InvertRect (int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 547 void GUI_MoveRel (int dx, int dy);
csyang2 1:c0f972361605 548 void GUI_MoveTo (int x, int y);
csyang2 1:c0f972361605 549 void GUI_SetAlphaMask8888 (U32 OrMask, U32 AndMask);
csyang2 1:c0f972361605 550
csyang2 1:c0f972361605 551 /*********************************************************************
csyang2 1:c0f972361605 552 *
csyang2 1:c0f972361605 553 * IMAGE file support
csyang2 1:c0f972361605 554 */
csyang2 1:c0f972361605 555 typedef int GUI_GET_DATA_FUNC(void * p, const U8 ** ppData, unsigned NumBytes, U32 Off);
csyang2 1:c0f972361605 556
csyang2 1:c0f972361605 557 /*********************************************************************
csyang2 1:c0f972361605 558 *
csyang2 1:c0f972361605 559 * GIF file support
csyang2 1:c0f972361605 560 */
csyang2 1:c0f972361605 561 int GUI_GIF_Draw (const void * pGIF, U32 NumBytes, int x0, int y0);
csyang2 1:c0f972361605 562 int GUI_GIF_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0);
csyang2 1:c0f972361605 563 int GUI_GIF_DrawSub (const void * pGIF, U32 NumBytes, int x0, int y0, int Index);
csyang2 1:c0f972361605 564 int GUI_GIF_DrawSubEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Index);
csyang2 1:c0f972361605 565 int GUI_GIF_DrawSubScaled (const void * pGIF, U32 NumBytes, int x0, int y0, int Index, int Num, int Denom);
csyang2 1:c0f972361605 566 int GUI_GIF_DrawSubScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Index, int Num, int Denom);
csyang2 1:c0f972361605 567 int GUI_GIF_GetComment (const void * pGIF, U32 NumBytes, U8 * pBuffer, int MaxSize, int Index);
csyang2 1:c0f972361605 568 int GUI_GIF_GetCommentEx (GUI_GET_DATA_FUNC * pfGetData, void * p, U8 * pBuffer, int MaxSize, int Index);
csyang2 1:c0f972361605 569 int GUI_GIF_GetImageInfo (const void * pGIF, U32 NumBytes, GUI_GIF_IMAGE_INFO * pInfo, int Index);
csyang2 1:c0f972361605 570 int GUI_GIF_GetImageInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_GIF_IMAGE_INFO * pInfo, int Index);
csyang2 1:c0f972361605 571 int GUI_GIF_GetInfo (const void * pGIF, U32 NumBytes, GUI_GIF_INFO * pInfo);
csyang2 1:c0f972361605 572 int GUI_GIF_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_GIF_INFO * pInfo);
csyang2 1:c0f972361605 573 int GUI_GIF_GetXSize (const void * pGIF);
csyang2 1:c0f972361605 574 int GUI_GIF_GetXSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 575 int GUI_GIF_GetYSize (const void * pGIF);
csyang2 1:c0f972361605 576 int GUI_GIF_GetYSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 577 int GUI_GIF_SetFillTrans (int OnOff);
csyang2 1:c0f972361605 578
csyang2 1:c0f972361605 579 /*********************************************************************
csyang2 1:c0f972361605 580 *
csyang2 1:c0f972361605 581 * BMP file support
csyang2 1:c0f972361605 582 */
csyang2 1:c0f972361605 583 int GUI_BMP_Draw (const void * pFileData, int x0, int y0);
csyang2 1:c0f972361605 584 int GUI_BMP_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0);
csyang2 1:c0f972361605 585 int GUI_BMP_DrawScaled (const void * pFileData, int x0, int y0, int Num, int Denom);
csyang2 1:c0f972361605 586 int GUI_BMP_DrawScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Num, int Denom);
csyang2 1:c0f972361605 587 int GUI_BMP_GetXSize (const void * pFileData);
csyang2 1:c0f972361605 588 int GUI_BMP_GetXSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 589 int GUI_BMP_GetYSize (const void * pFileData);
csyang2 1:c0f972361605 590 int GUI_BMP_GetYSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 591 void GUI_BMP_EnableAlpha (void);
csyang2 1:c0f972361605 592 void GUI_BMP_DisableAlpha(void);
csyang2 1:c0f972361605 593
csyang2 1:c0f972361605 594 /*********************************************************************
csyang2 1:c0f972361605 595 *
csyang2 1:c0f972361605 596 * PNG file support
csyang2 1:c0f972361605 597 */
csyang2 1:c0f972361605 598 int GUI_PNG_Draw (const void * pFileData, int DataSize, int x0, int y0);
csyang2 1:c0f972361605 599 int GUI_PNG_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0);
csyang2 1:c0f972361605 600 int GUI_PNG_GetXSize (const void * pFileData, int FileSize);
csyang2 1:c0f972361605 601 int GUI_PNG_GetXSizeEx(GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 602 int GUI_PNG_GetYSize (const void * pFileData, int FileSize);
csyang2 1:c0f972361605 603 int GUI_PNG_GetYSizeEx(GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 604
csyang2 1:c0f972361605 605 /*********************************************************************
csyang2 1:c0f972361605 606 *
csyang2 1:c0f972361605 607 * JPEG file support
csyang2 1:c0f972361605 608 */
csyang2 1:c0f972361605 609 typedef struct {
csyang2 1:c0f972361605 610 int XSize;
csyang2 1:c0f972361605 611 int YSize;
csyang2 1:c0f972361605 612 } GUI_JPEG_INFO;
csyang2 1:c0f972361605 613
csyang2 1:c0f972361605 614 int GUI_JPEG_Draw (const void * pFileData, int DataSize, int x0, int y0);
csyang2 1:c0f972361605 615 int GUI_JPEG_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0);
csyang2 1:c0f972361605 616 int GUI_JPEG_DrawScaled (const void * pFileData, int DataSize, int x0, int y0, int Num, int Denom);
csyang2 1:c0f972361605 617 int GUI_JPEG_DrawScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Num, int Denom);
csyang2 1:c0f972361605 618 int GUI_JPEG_GetInfo (const void * pFileData, int DataSize, GUI_JPEG_INFO * pInfo);
csyang2 1:c0f972361605 619 int GUI_JPEG_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_JPEG_INFO * pInfo);
csyang2 1:c0f972361605 620
csyang2 1:c0f972361605 621 void GUI_JPEG_SetpfDrawEx(int (* pfDrawEx)(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0));
csyang2 1:c0f972361605 622
csyang2 1:c0f972361605 623 /*********************************************************************
csyang2 1:c0f972361605 624 *
csyang2 1:c0f972361605 625 * MOVIE file support
csyang2 1:c0f972361605 626 */
csyang2 1:c0f972361605 627 #define GUI_MOVIE_NOTIFICATION_PREDRAW 0 // Immediately before frame is drawn
csyang2 1:c0f972361605 628 #define GUI_MOVIE_NOTIFICATION_POSTDRAW 1 // Immediately after a frame is drawn
csyang2 1:c0f972361605 629 #define GUI_MOVIE_NOTIFICATION_START 2 // Send when start playing a movie
csyang2 1:c0f972361605 630 #define GUI_MOVIE_NOTIFICATION_STOP 3 // Movie has stopped
csyang2 1:c0f972361605 631 #define GUI_MOVIE_NOTIFICATION_DELETE 4 // Movie has been deleted
csyang2 1:c0f972361605 632
csyang2 1:c0f972361605 633 typedef GUI_HMEM GUI_MOVIE_HANDLE;
csyang2 1:c0f972361605 634
csyang2 1:c0f972361605 635 typedef void GUI_MOVIE_FUNC(GUI_MOVIE_HANDLE hMovie, int Notification, U32 CurrentFrame);
csyang2 1:c0f972361605 636
csyang2 1:c0f972361605 637 typedef struct {
csyang2 1:c0f972361605 638 int xSize; // X-size of images
csyang2 1:c0f972361605 639 int ySize; // Y-size of images
csyang2 1:c0f972361605 640 int msPerFrame; // Default duration of 1 frame
csyang2 1:c0f972361605 641 U32 NumFrames; // Number of frames
csyang2 1:c0f972361605 642 } GUI_MOVIE_INFO;
csyang2 1:c0f972361605 643
csyang2 1:c0f972361605 644 GUI_MOVIE_HANDLE GUI_MOVIE_Create (const void * pFileData, U32 FileSize, GUI_MOVIE_FUNC * pfNotify);
csyang2 1:c0f972361605 645 GUI_MOVIE_HANDLE GUI_MOVIE_CreateEx (GUI_GET_DATA_FUNC * pfGetData, void * pParam, GUI_MOVIE_FUNC * pfNotify);
csyang2 1:c0f972361605 646 int GUI_MOVIE_Delete (GUI_MOVIE_HANDLE hMovie);
csyang2 1:c0f972361605 647 void GUI_MOVIE_DrawFrame (GUI_MOVIE_HANDLE hMovie, int Index, int x, int y);
csyang2 1:c0f972361605 648 U32 GUI_MOVIE_GetFrameIndex(GUI_MOVIE_HANDLE hMovie);
csyang2 1:c0f972361605 649 int GUI_MOVIE_GetInfo (const void * pFileData, U32 FileSize, GUI_MOVIE_INFO * pInfo);
csyang2 1:c0f972361605 650 int GUI_MOVIE_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * pParam, GUI_MOVIE_INFO * pInfo);
csyang2 1:c0f972361605 651 int GUI_MOVIE_GetNumFrames (GUI_MOVIE_HANDLE hMovie);
csyang2 1:c0f972361605 652 int GUI_MOVIE_GetPos (GUI_MOVIE_HANDLE hMovie, int * pxPos, int * pyPos, int * pxSize, int * pySize);
csyang2 1:c0f972361605 653 int GUI_MOVIE_GotoFrame (GUI_MOVIE_HANDLE hMovie, U32 Frame);
csyang2 1:c0f972361605 654 int GUI_MOVIE_Pause (GUI_MOVIE_HANDLE hMovie);
csyang2 1:c0f972361605 655 int GUI_MOVIE_Play (GUI_MOVIE_HANDLE hMovie);
csyang2 1:c0f972361605 656 int GUI_MOVIE_SetPeriod (GUI_MOVIE_HANDLE hMovie, unsigned Period);
csyang2 1:c0f972361605 657 void GUI_MOVIE_SetpfNotify (GUI_MOVIE_FUNC * pfNotify);
csyang2 1:c0f972361605 658 int GUI_MOVIE_SetPos (GUI_MOVIE_HANDLE hMovie, int xPos, int yPos);
csyang2 1:c0f972361605 659 int GUI_MOVIE_Show (GUI_MOVIE_HANDLE hMovie, int xPos, int yPos, int DoLoop);
csyang2 1:c0f972361605 660
csyang2 1:c0f972361605 661 /*********************************************************************
csyang2 1:c0f972361605 662 *
csyang2 1:c0f972361605 663 * Splines
csyang2 1:c0f972361605 664 */
csyang2 1:c0f972361605 665 GUI_HMEM GUI_SPLINE_Create (const int * px, const int * py, unsigned NumPoints);
csyang2 1:c0f972361605 666 void GUI_SPLINE_Draw (GUI_HMEM hSpline, int x, int y);
csyang2 1:c0f972361605 667 void GUI_SPLINE_Delete (GUI_HMEM hSpline);
csyang2 1:c0f972361605 668 I16 GUI_SPLINE_GetY (GUI_HMEM hSpline, unsigned Index, float * py);
csyang2 1:c0f972361605 669 unsigned GUI_SPLINE_GetXSize(GUI_HMEM hSpline);
csyang2 1:c0f972361605 670 void GUI_SPLINE_DrawAA (GUI_HMEM hSpline, int x, int y, unsigned Width);
csyang2 1:c0f972361605 671
csyang2 1:c0f972361605 672 /*********************************************************************
csyang2 1:c0f972361605 673 *
csyang2 1:c0f972361605 674 * Cursor routines
csyang2 1:c0f972361605 675 */
csyang2 1:c0f972361605 676 #define GUI_CURSOR_SHOW 0
csyang2 1:c0f972361605 677 #define GUI_CURSOR_HIDE 1
csyang2 1:c0f972361605 678
csyang2 1:c0f972361605 679 typedef struct {
csyang2 1:c0f972361605 680 const GUI_BITMAP * pBitmap;
csyang2 1:c0f972361605 681 int xHot;
csyang2 1:c0f972361605 682 int yHot;
csyang2 1:c0f972361605 683 } GUI_CURSOR;
csyang2 1:c0f972361605 684
csyang2 1:c0f972361605 685 typedef struct {
csyang2 1:c0f972361605 686 const GUI_BITMAP ** ppBm;
csyang2 1:c0f972361605 687 int xHot;
csyang2 1:c0f972361605 688 int yHot;
csyang2 1:c0f972361605 689 unsigned Period;
csyang2 1:c0f972361605 690 const unsigned * pPeriod;
csyang2 1:c0f972361605 691 int NumItems;
csyang2 1:c0f972361605 692 } GUI_CURSOR_ANIM;
csyang2 1:c0f972361605 693
csyang2 1:c0f972361605 694 #if GUI_SUPPORT_CURSOR
csyang2 1:c0f972361605 695 int GUI_CURSOR_GetState (void);
csyang2 1:c0f972361605 696 int GUI_CURSOR_GetStateEx (int Layer);
csyang2 1:c0f972361605 697 void GUI_CURSOR_Hide (void);
csyang2 1:c0f972361605 698 void GUI_CURSOR_HideEx (int Layer);
csyang2 1:c0f972361605 699 const GUI_CURSOR * GUI_CURSOR_Select (const GUI_CURSOR * pCursor);
csyang2 1:c0f972361605 700 const GUI_CURSOR * GUI_CURSOR_SelectEx (const GUI_CURSOR * pCursor, int Layer);
csyang2 1:c0f972361605 701 int GUI_CURSOR_SelectAnim (const GUI_CURSOR_ANIM * pCursorAnim);
csyang2 1:c0f972361605 702 int GUI_CURSOR_SelectAnimEx (const GUI_CURSOR_ANIM * pCursorAnim, int LayerIndex);
csyang2 1:c0f972361605 703 int GUI_CURSOR_SetBitmap (const GUI_BITMAP * pBM);
csyang2 1:c0f972361605 704 int GUI_CURSOR_SetBitmapEx (const GUI_BITMAP * pBM, int Layer);
csyang2 1:c0f972361605 705 void GUI_CURSOR_SetPosition (int x, int y);
csyang2 1:c0f972361605 706 void GUI_CURSOR_SetPositionEx(int xNewPos, int yNewPos, int Layer);
csyang2 1:c0f972361605 707 void GUI_CURSOR_Show (void);
csyang2 1:c0f972361605 708 void GUI_CURSOR_ShowEx (int Layer);
csyang2 1:c0f972361605 709 GUI_HSPRITE GUI_CURSOR__GetSpriteEx (int LayerIndex, int * pxPos, int * pyPos);
csyang2 1:c0f972361605 710 void GUI_CURSOR__SetSpriteEx (GUI_HSPRITE hSprite, const GUI_CURSOR * pCursor, int LayerIndex);
csyang2 1:c0f972361605 711 #else
csyang2 1:c0f972361605 712 #define GUI_CURSOR_Show();
csyang2 1:c0f972361605 713 #define GUI_CURSOR_Clear();
csyang2 1:c0f972361605 714 #endif
csyang2 1:c0f972361605 715
csyang2 1:c0f972361605 716 /*********************************************************************
csyang2 1:c0f972361605 717 *
csyang2 1:c0f972361605 718 * Sprite support
csyang2 1:c0f972361605 719 */
csyang2 1:c0f972361605 720 #define GUI_SPRITE_CF_STAYONTOP (1 << 0)
csyang2 1:c0f972361605 721 #define GUI_SPRITE_CF_SHOW (1 << 1)
csyang2 1:c0f972361605 722
csyang2 1:c0f972361605 723 #define GUI_SPRITE_SHOW 0
csyang2 1:c0f972361605 724 #define GUI_SPRITE_HIDE 1
csyang2 1:c0f972361605 725
csyang2 1:c0f972361605 726 GUI_HSPRITE GUI_SPRITE__CreateEx (const GUI_BITMAP * pBM, int x, int y, int Layer, U16 Flags); /* Not to be documented, only used by cursor modul */
csyang2 1:c0f972361605 727 void GUI_SPRITE__SetCallback (GUI_HSPRITE hSprite, GUI_HMEM hContext, void (* pCB)(GUI_HSPRITE, int));
csyang2 1:c0f972361605 728 GUI_HSPRITE GUI_SPRITE_Create (const GUI_BITMAP * pBM, int x, int y);
csyang2 1:c0f972361605 729 GUI_HSPRITE GUI_SPRITE_CreateAnim (const GUI_BITMAP ** ppBm, int x, int y, unsigned Period, const unsigned * pPeriod, int NumItems);
csyang2 1:c0f972361605 730 GUI_HSPRITE GUI_SPRITE_CreateEx (const GUI_BITMAP * pBM, int x, int y, int Layer);
csyang2 1:c0f972361605 731 GUI_HSPRITE GUI_SPRITE_CreateExAnim (const GUI_BITMAP ** ppBm, int x, int y, unsigned Period, const unsigned * pPeriod, int NumItems, int LayerIndex);
csyang2 1:c0f972361605 732 GUI_HSPRITE GUI_SPRITE_CreateHidden (const GUI_BITMAP * pBM, int x, int y);
csyang2 1:c0f972361605 733 GUI_HSPRITE GUI_SPRITE_CreateHiddenEx (const GUI_BITMAP * pBM, int x, int y, int Layer);
csyang2 1:c0f972361605 734 void GUI_SPRITE_Delete (GUI_HSPRITE hSprite);
csyang2 1:c0f972361605 735 int GUI_SPRITE_GetState (GUI_HSPRITE hSprite);
csyang2 1:c0f972361605 736 void GUI_SPRITE_Hide (GUI_HSPRITE hSprite);
csyang2 1:c0f972361605 737 int GUI_SPRITE_SetBitmap (GUI_HSPRITE hSprite, const GUI_BITMAP * pBM);
csyang2 1:c0f972361605 738 int GUI_SPRITE_SetBitmapAndPosition(GUI_HSPRITE hSprite, const GUI_BITMAP * pBM, int x, int y);
csyang2 1:c0f972361605 739 int GUI_SPRITE_SetLoop (GUI_HSPRITE hSprite, int OnOff);
csyang2 1:c0f972361605 740 void GUI_SPRITE_SetPosition (GUI_HSPRITE hSprite, int x, int y);
csyang2 1:c0f972361605 741 int GUI_SPRITE_StartAnim (GUI_HSPRITE hSprite);
csyang2 1:c0f972361605 742 int GUI_SPRITE_StopAnim (GUI_HSPRITE hSprite);
csyang2 1:c0f972361605 743 void GUI_SPRITE_Show (GUI_HSPRITE hSprite);
csyang2 1:c0f972361605 744
csyang2 1:c0f972361605 745 /*********************************************************************
csyang2 1:c0f972361605 746 *
csyang2 1:c0f972361605 747 * Cursors and their bitmaps
csyang2 1:c0f972361605 748 */
csyang2 1:c0f972361605 749 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowS, GUI_CursorArrowSI;
csyang2 1:c0f972361605 750 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowM, GUI_CursorArrowMI;
csyang2 1:c0f972361605 751 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowL, GUI_CursorArrowLI;
csyang2 1:c0f972361605 752 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossS, GUI_CursorCrossSI;
csyang2 1:c0f972361605 753 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossM, GUI_CursorCrossMI;
csyang2 1:c0f972361605 754 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossL, GUI_CursorCrossLI;
csyang2 1:c0f972361605 755 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorHeaderM, GUI_CursorHeaderMI;
csyang2 1:c0f972361605 756 extern GUI_CONST_STORAGE GUI_CURSOR_ANIM GUI_CursorAnimHourglassM;
csyang2 1:c0f972361605 757
csyang2 1:c0f972361605 758 /*********************************************************************
csyang2 1:c0f972361605 759 *
csyang2 1:c0f972361605 760 * Wrap modes
csyang2 1:c0f972361605 761 */
csyang2 1:c0f972361605 762 typedef enum { GUI_WRAPMODE_NONE, GUI_WRAPMODE_WORD, GUI_WRAPMODE_CHAR } GUI_WRAPMODE;
csyang2 1:c0f972361605 763
csyang2 1:c0f972361605 764 /*********************************************************************
csyang2 1:c0f972361605 765 *
csyang2 1:c0f972361605 766 * Text related routines
csyang2 1:c0f972361605 767 */
csyang2 1:c0f972361605 768 void GUI_DispCEOL (void);
csyang2 1:c0f972361605 769 void GUI_DispChar (U16 c);
csyang2 1:c0f972361605 770 void GUI_DispCharAt (U16 c, I16P x, I16P y);
csyang2 1:c0f972361605 771 void GUI_DispChars (U16 c, int Cnt);
csyang2 1:c0f972361605 772 void GUI_DispNextLine (void);
csyang2 1:c0f972361605 773 void GUI_DispString (const char * s);
csyang2 1:c0f972361605 774 void GUI_DispStringAt (const char * s, int x, int y);
csyang2 1:c0f972361605 775 void GUI_DispStringAtCEOL (const char * s, int x, int y);
csyang2 1:c0f972361605 776 void GUI_DispStringHCenterAt (const char * s, int x, int y);
csyang2 1:c0f972361605 777 void GUI__DispStringInRect (const char * s, GUI_RECT * pRect, int TextAlign, int MaxNumChars);
csyang2 1:c0f972361605 778 void GUI_DispStringInRect (const char * s, GUI_RECT * pRect, int TextAlign);
csyang2 1:c0f972361605 779 #if GUI_SUPPORT_ROTATION
csyang2 1:c0f972361605 780 void GUI_DispStringInRectEx (const char * s, GUI_RECT * pRect, int TextAlign, int MaxLen, const GUI_ROTATION * pLCD_Api);
csyang2 1:c0f972361605 781 #endif
csyang2 1:c0f972361605 782 void GUI_DispStringInRectMax (const char * s, GUI_RECT * pRect, int TextAlign, int MaxLen); /* Not to be doc. */
csyang2 1:c0f972361605 783 void GUI_DispStringInRectWrap (const char * s, GUI_RECT * pRect, int TextAlign, GUI_WRAPMODE WrapMode); /* Not to be doc. */
csyang2 1:c0f972361605 784 #if GUI_SUPPORT_ROTATION
csyang2 1:c0f972361605 785 void GUI_DispStringInRectWrapEx(const char * s, GUI_RECT * pRect, int TextAlign, GUI_WRAPMODE WrapMode, const GUI_ROTATION * pLCD_Api);
csyang2 1:c0f972361605 786 #endif
csyang2 1:c0f972361605 787 void GUI_DispStringLen (const char * s, int Len);
csyang2 1:c0f972361605 788 void GUI_GetTextExtend (GUI_RECT* pRect, const char * s, int Len);
csyang2 1:c0f972361605 789 int GUI_GetYAdjust (void);
csyang2 1:c0f972361605 790 int GUI_GetDispPosX (void);
csyang2 1:c0f972361605 791 int GUI_GetDispPosY (void);
csyang2 1:c0f972361605 792 const GUI_FONT * GUI_GetFont (void);
csyang2 1:c0f972361605 793 int GUI_GetCharDistX (U16 c);
csyang2 1:c0f972361605 794 int GUI_GetCharDistXEx (U16 c, int * pSizeX);
csyang2 1:c0f972361605 795 int GUI_GetStringDistX (const char * s);
csyang2 1:c0f972361605 796 GUI_DRAWMODE GUI_GetDrawMode (void);
csyang2 1:c0f972361605 797 int GUI_GetFontDistY (void);
csyang2 1:c0f972361605 798 int GUI_GetFontSizeY (void);
csyang2 1:c0f972361605 799 void GUI_GetFontInfo (const GUI_FONT * pFont, GUI_FONTINFO * pfi);
csyang2 1:c0f972361605 800 void GUI_GetOrg (int * px, int * py);
csyang2 1:c0f972361605 801 int GUI_GetYSizeOfFont (const GUI_FONT * pFont);
csyang2 1:c0f972361605 802 int GUI_GetYDistOfFont (const GUI_FONT * pFont);
csyang2 1:c0f972361605 803 int GUI_GetTextAlign (void);
csyang2 1:c0f972361605 804 int GUI_GetTextMode (void);
csyang2 1:c0f972361605 805 char GUI_IsInFont (const GUI_FONT * pFont, U16 c);
csyang2 1:c0f972361605 806 U8 GUI_SetClearTextRectMode (unsigned OnOff);
csyang2 1:c0f972361605 807 int GUI_SetTextAlign (int Align);
csyang2 1:c0f972361605 808 int GUI_SetTextMode (int Mode);
csyang2 1:c0f972361605 809 char GUI_SetTextStyle (char Style);
csyang2 1:c0f972361605 810 int GUI_SetLBorder (int x);
csyang2 1:c0f972361605 811 U8 GUI_SetStrikeWidth (U8 StrikeWidth);
csyang2 1:c0f972361605 812 const GUI_FONT * GUI_SetFont (const GUI_FONT * pNewFont);
csyang2 1:c0f972361605 813 char GUI_GotoXY (int x, int y);
csyang2 1:c0f972361605 814 char GUI_GotoX (int x);
csyang2 1:c0f972361605 815 char GUI_GotoY (int y);
csyang2 1:c0f972361605 816 int GUI_WrapGetNumLines (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
csyang2 1:c0f972361605 817 int GUI_WrapGetPositions (const char * pText, int xSize, GUI_WRAPMODE WrapMode, int * aPos, int NumItems);
csyang2 1:c0f972361605 818 void GUI_WrapSetSeparators (const U16 * pSep, int NumSeps);
csyang2 1:c0f972361605 819
csyang2 1:c0f972361605 820 int GUI_GetLeadingBlankCols (U16 c);
csyang2 1:c0f972361605 821 int GUI_GetTrailingBlankCols(U16 c);
csyang2 1:c0f972361605 822
csyang2 1:c0f972361605 823
csyang2 1:c0f972361605 824 /*********************************************************************
csyang2 1:c0f972361605 825 *
csyang2 1:c0f972361605 826 * System independent fonts (SIF)
csyang2 1:c0f972361605 827 */
csyang2 1:c0f972361605 828 void GUI_SIF_CreateFont(const void * pFontData, GUI_FONT * pFont, const GUI_SIF_TYPE * pFontType);
csyang2 1:c0f972361605 829 void GUI_SIF_DeleteFont(GUI_FONT * pFont);
csyang2 1:c0f972361605 830
csyang2 1:c0f972361605 831 /*********************************************************************
csyang2 1:c0f972361605 832 *
csyang2 1:c0f972361605 833 * External binary fonts (XBF)
csyang2 1:c0f972361605 834 */
csyang2 1:c0f972361605 835 int GUI_XBF_CreateFont(GUI_FONT * pFont, GUI_XBF_DATA * pXBF, const GUI_XBF_TYPE * pFontType, GUI_XBF_GET_DATA_FUNC * pfGetData, void * pVoid);
csyang2 1:c0f972361605 836 void GUI_XBF_DeleteFont(GUI_FONT * pFont);
csyang2 1:c0f972361605 837
csyang2 1:c0f972361605 838 /*********************************************************************
csyang2 1:c0f972361605 839 *
csyang2 1:c0f972361605 840 * TrueType support (TTF)
csyang2 1:c0f972361605 841 */
csyang2 1:c0f972361605 842 int GUI_TTF_CreateFont (GUI_FONT * pFont, GUI_TTF_CS * pCS);
csyang2 1:c0f972361605 843 int GUI_TTF_CreateFontAA (GUI_FONT * pFont, GUI_TTF_CS * pCS);
csyang2 1:c0f972361605 844 void GUI_TTF_DestroyCache (void);
csyang2 1:c0f972361605 845 void GUI_TTF_Done (void);
csyang2 1:c0f972361605 846 int GUI_TTF_GetFamilyName(GUI_FONT * pFont, char * pBuffer, int NumBytes);
csyang2 1:c0f972361605 847 int GUI_TTF_GetStyleName (GUI_FONT * pFont, char * pBuffer, int NumBytes);
csyang2 1:c0f972361605 848 void GUI_TTF_SetCacheSize (unsigned MaxFaces, unsigned MaxSizes, U32 MaxBytes);
csyang2 1:c0f972361605 849
csyang2 1:c0f972361605 850 /*********************************************************************
csyang2 1:c0f972361605 851 *
csyang2 1:c0f972361605 852 * Resource file support
csyang2 1:c0f972361605 853 */
csyang2 1:c0f972361605 854 int GUI_LANG_GetLang (void);
csyang2 1:c0f972361605 855 int GUI_LANG_GetNumItems (int IndexLang);
csyang2 1:c0f972361605 856 const char * GUI_LANG_GetText (int IndexText);
csyang2 1:c0f972361605 857 int GUI_LANG_GetTextBuffered (int IndexText, char * pBuffer, int SizeOfBuffer);
csyang2 1:c0f972361605 858 int GUI_LANG_GetTextBufferedEx(int IndexText, int IndexLang, char * pBuffer, int SizeOfBuffer);
csyang2 1:c0f972361605 859 const char * GUI_LANG_GetTextEx (int IndexText, int IndexLang);
csyang2 1:c0f972361605 860 int GUI_LANG_LoadCSV (U8 * pFileData, U32 FileSize);
csyang2 1:c0f972361605 861 int GUI_LANG_LoadCSVEx (GUI_GET_DATA_FUNC * pfGetData, void * p);
csyang2 1:c0f972361605 862 int GUI_LANG_LoadText (U8 * pFileData, U32 FileSize, int IndexLang);
csyang2 1:c0f972361605 863 int GUI_LANG_LoadTextEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int IndexLang);
csyang2 1:c0f972361605 864 int GUI_LANG_SetLang (int IndexLang);
csyang2 1:c0f972361605 865 unsigned GUI_LANG_SetMaxNumLang (unsigned MaxNumLang);
csyang2 1:c0f972361605 866 U16 GUI_LANG_SetSep (U16 Sep);
csyang2 1:c0f972361605 867
csyang2 1:c0f972361605 868 /*********************************************************************
csyang2 1:c0f972361605 869 *
csyang2 1:c0f972361605 870 * Unicode support
csyang2 1:c0f972361605 871 */
csyang2 1:c0f972361605 872 int GUI_UC_ConvertUC2UTF8(const U16 * s, int Len, char * pBuffer, int BufferSize);
csyang2 1:c0f972361605 873 int GUI_UC_ConvertUTF82UC(const char * s, int Len, U16 * pBuffer, int BufferSize);
csyang2 1:c0f972361605 874 int GUI_UC_EnableBIDI (int OnOff);
csyang2 1:c0f972361605 875 int GUI_UC_Encode (char * s, U16 Char);
csyang2 1:c0f972361605 876 int GUI_UC_GetCharSize (const char * s);
csyang2 1:c0f972361605 877 U16 GUI_UC_GetCharCode (const char * s);
csyang2 1:c0f972361605 878 void GUI_UC_SetEncodeNone (void);
csyang2 1:c0f972361605 879 void GUI_UC_SetEncodeSJIS (void);
csyang2 1:c0f972361605 880 void GUI_UC_SetEncodeUTF8 (void);
csyang2 1:c0f972361605 881 void GUI_UC_SetBaseDir (int Dir); // Only available with new version of BIDI algorithm (GUI_USE_BIDI2 == 1)
csyang2 1:c0f972361605 882 int GUI_UC_GetBaseDir (void); // Only available with new version of BIDI algorithm (GUI_USE_BIDI2 == 1)
csyang2 1:c0f972361605 883
csyang2 1:c0f972361605 884 void GUI_UC_DispString(const U16 * s);
csyang2 1:c0f972361605 885 void GUI_UC2DB (U16 Code, U8 * pOut);
csyang2 1:c0f972361605 886 U16 GUI_DB2UC (U8 Byte0, U8 Byte1);
csyang2 1:c0f972361605 887
csyang2 1:c0f972361605 888 /*********************************************************************
csyang2 1:c0f972361605 889 *
csyang2 1:c0f972361605 890 * Bidi support
csyang2 1:c0f972361605 891 */
csyang2 1:c0f972361605 892 #define GUI_BIDI_BASEDIR_LTR 0
csyang2 1:c0f972361605 893 #define GUI_BIDI_BASEDIR_RTL 1
csyang2 1:c0f972361605 894 #define GUI_BIDI_BASEDIR_AUTO 2
csyang2 1:c0f972361605 895
csyang2 1:c0f972361605 896 #define GUI_BIDI_LOG2VIS_CALC 0
csyang2 1:c0f972361605 897 #define GUI_BIDI_LOG2VIS_GETCACHE 1
csyang2 1:c0f972361605 898
csyang2 1:c0f972361605 899 /*********************************************************************
csyang2 1:c0f972361605 900 *
csyang2 1:c0f972361605 901 * Drawing of binary, decimal and hexadecimal values
csyang2 1:c0f972361605 902 */
csyang2 1:c0f972361605 903 void GUI_DispBin (U32 v, U8 Len);
csyang2 1:c0f972361605 904 void GUI_DispBinAt(U32 v, I16P x, I16P y, U8 Len);
csyang2 1:c0f972361605 905 void GUI_DispDec (I32 v, U8 Len);
csyang2 1:c0f972361605 906 void GUI_DispDecAt (I32 v, I16P x, I16P y, U8 Len);
csyang2 1:c0f972361605 907 void GUI_DispDecMin(I32 v);
csyang2 1:c0f972361605 908 void GUI_DispDecShift(I32 v, U8 Len, U8 Shift);
csyang2 1:c0f972361605 909 void GUI_DispDecSpace(I32 v, U8 MaxDigits);
csyang2 1:c0f972361605 910 void GUI_DispHex (U32 v, U8 Len);
csyang2 1:c0f972361605 911 void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len);
csyang2 1:c0f972361605 912 void GUI_DispSDec(I32 v, U8 Len);
csyang2 1:c0f972361605 913 void GUI_DispSDecShift(I32 v, U8 Len, U8 Shift);
csyang2 1:c0f972361605 914
csyang2 1:c0f972361605 915 /*********************************************************************
csyang2 1:c0f972361605 916 *
csyang2 1:c0f972361605 917 * Drawing of floating point values
csyang2 1:c0f972361605 918 */
csyang2 1:c0f972361605 919 void GUI_DispFloat (float v, char Len);
csyang2 1:c0f972361605 920 void GUI_DispFloatFix (float v, char Len, char Fract);
csyang2 1:c0f972361605 921 void GUI_DispFloatMin (float v, char Fract);
csyang2 1:c0f972361605 922 void GUI_DispSFloatFix(float v, char Len, char Fract);
csyang2 1:c0f972361605 923 void GUI_DispSFloatMin(float v, char Fract);
csyang2 1:c0f972361605 924
csyang2 1:c0f972361605 925 /*********************************************************************
csyang2 1:c0f972361605 926 *
csyang2 1:c0f972361605 927 * Dynamic memory management
csyang2 1:c0f972361605 928 */
csyang2 1:c0f972361605 929 typedef struct {
csyang2 1:c0f972361605 930 U32 TotalBytes;
csyang2 1:c0f972361605 931 U32 FreeBytes;
csyang2 1:c0f972361605 932 U32 UsedBytes;
csyang2 1:c0f972361605 933 U32 AllocSize;
csyang2 1:c0f972361605 934 U32 NumFixedBytes;
csyang2 1:c0f972361605 935 U32 MaxUsedBytes;
csyang2 1:c0f972361605 936 } GUI_ALLOC_INFO;
csyang2 1:c0f972361605 937
csyang2 1:c0f972361605 938 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumFreeBlocks(void);
csyang2 1:c0f972361605 939 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumFreeBytes (void);
csyang2 1:c0f972361605 940 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumUsedBlocks(void);
csyang2 1:c0f972361605 941 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumUsedBytes (void);
csyang2 1:c0f972361605 942 GUI_ALLOC_DATATYPE GUI_ALLOC_GetMaxUsedBytes (void);
csyang2 1:c0f972361605 943
csyang2 1:c0f972361605 944 void GUI_ALLOC_GetMemInfo (GUI_ALLOC_INFO * pInfo);
csyang2 1:c0f972361605 945 void GUI_ALLOC_SuppressPeak(int OnOff);
csyang2 1:c0f972361605 946
csyang2 1:c0f972361605 947 GUI_HMEM GUI_ALLOC_AllocInit (const void * pInitData, GUI_ALLOC_DATATYPE Size);
csyang2 1:c0f972361605 948 GUI_HMEM GUI_ALLOC_AllocNoInit (GUI_ALLOC_DATATYPE size);
csyang2 1:c0f972361605 949 GUI_HMEM GUI_ALLOC_AllocZero (GUI_ALLOC_DATATYPE size);
csyang2 1:c0f972361605 950 void GUI_ALLOC_AssignMemory (void * p, U32 NumBytes);
csyang2 1:c0f972361605 951 void GUI_ALLOC_Free (GUI_HMEM hMem);
csyang2 1:c0f972361605 952 void GUI_ALLOC_FreeFixedBlock (void * p);
csyang2 1:c0f972361605 953 void GUI_ALLOC_FreePtrArray (GUI_HMEM * pArray, int NumElems);
csyang2 1:c0f972361605 954 void GUI_ALLOC_FreePtr (GUI_HMEM * phMem);
csyang2 1:c0f972361605 955 void * GUI_ALLOC_GetFixedBlock (GUI_ALLOC_DATATYPE Size);
csyang2 1:c0f972361605 956 GUI_ALLOC_DATATYPE GUI_ALLOC_GetMaxSize (void);
csyang2 1:c0f972361605 957 GUI_ALLOC_DATATYPE GUI_ALLOC_GetSize (GUI_HMEM hMem);
csyang2 1:c0f972361605 958 void * GUI_ALLOC_h2p (GUI_HMEM hMem);
csyang2 1:c0f972361605 959 GUI_HMEM GUI_ALLOC_p2h (void * p);
csyang2 1:c0f972361605 960 void GUI_ALLOC_Init (void);
csyang2 1:c0f972361605 961 void GUI_ALLOC_Lock (void);
csyang2 1:c0f972361605 962 void * GUI_ALLOC_LockH (GUI_HMEM hMem);
csyang2 1:c0f972361605 963 GUI_HMEM GUI_ALLOC_Realloc (GUI_HMEM hOld, int NewSize);
csyang2 1:c0f972361605 964 GUI_ALLOC_DATATYPE GUI_ALLOC_RequestSize (void);
csyang2 1:c0f972361605 965 void GUI_ALLOC_SetAvBlockSize (U32 BlockSize);
csyang2 1:c0f972361605 966 void GUI_ALLOC_Unlock (void);
csyang2 1:c0f972361605 967 void * GUI_ALLOC_UnlockH (void ** pp);
csyang2 1:c0f972361605 968 int GUI_ALLOC_SetMaxPercentage(int MaxPercentage);
csyang2 1:c0f972361605 969 void GUI_ALLOC_Exit (void);
csyang2 1:c0f972361605 970
csyang2 1:c0f972361605 971 /*********************************************************************
csyang2 1:c0f972361605 972 *
csyang2 1:c0f972361605 973 * Memory devices: GUI_MEMDEV
csyang2 1:c0f972361605 974 */
csyang2 1:c0f972361605 975 #define GUI_MEMDEV_HASTRANS 0
csyang2 1:c0f972361605 976 #define GUI_MEMDEV_NOTRANS (1 << 0)
csyang2 1:c0f972361605 977
csyang2 1:c0f972361605 978 typedef GUI_HMEM GUI_MEMDEV_Handle;
csyang2 1:c0f972361605 979 typedef void GUI_CALLBACK_VOID_P (void * p);
csyang2 1:c0f972361605 980 typedef int GUI_ANIMATION_CALLBACK_FUNC(int TimeRem, void * pVoid);
csyang2 1:c0f972361605 981 typedef void GUI_DRAWMEMDEV_16BPP_FUNC (void * pDst, const void * pSrc, int xSize, int ySize, int BytesPerLineDst, int BytesPerLineSrc);
csyang2 1:c0f972361605 982
csyang2 1:c0f972361605 983 #define GUI_DRAWMEMDEV_FUNC GUI_DRAWMEMDEV_16BPP_FUNC
csyang2 1:c0f972361605 984
csyang2 1:c0f972361605 985 typedef void GUI_DRAWBITMAP_FUNC (int LayerIndex, int x, int y, const void * p, int xSize, int ySize, int BytesPerLine);
csyang2 1:c0f972361605 986
csyang2 1:c0f972361605 987 int GUI_SetFuncDrawAlpha(GUI_DRAWMEMDEV_FUNC * pfDrawMemdevFunc, GUI_DRAWBITMAP_FUNC * pfDrawBitmapFunc);
csyang2 1:c0f972361605 988 int GUI_SetFuncDrawM565 (GUI_DRAWMEMDEV_FUNC * pfDrawMemdevFunc, GUI_DRAWBITMAP_FUNC * pfDrawBitmapFunc);
csyang2 1:c0f972361605 989
csyang2 1:c0f972361605 990 extern GUI_ANIMATION_CALLBACK_FUNC * GUI_MEMDEV__pCbAnimation;
csyang2 1:c0f972361605 991 extern void * GUI_MEMDEV__pVoid;
csyang2 1:c0f972361605 992
csyang2 1:c0f972361605 993 extern void (* GUI_MEMDEV__pfMEMDEV_Write) (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 994 extern void (* GUI_MEMDEV__pfMEMDEV_CopyToLCD)(GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 995
csyang2 1:c0f972361605 996 typedef struct {
csyang2 1:c0f972361605 997 GUI_RECT rView, rPrev;
csyang2 1:c0f972361605 998 char FirstCall;
csyang2 1:c0f972361605 999 } GUI_AUTODEV;
csyang2 1:c0f972361605 1000
csyang2 1:c0f972361605 1001 typedef struct {
csyang2 1:c0f972361605 1002 char DrawFixed;
csyang2 1:c0f972361605 1003 char IsMeasurement;
csyang2 1:c0f972361605 1004 } GUI_AUTODEV_INFO;
csyang2 1:c0f972361605 1005
csyang2 1:c0f972361605 1006 int GUI_MEMDEV_CreateAuto(GUI_AUTODEV * pAutoDev);
csyang2 1:c0f972361605 1007 void GUI_MEMDEV_DeleteAuto(GUI_AUTODEV * pAutoDev);
csyang2 1:c0f972361605 1008 int GUI_MEMDEV_DrawAuto (GUI_AUTODEV * pAutoDev, GUI_AUTODEV_INFO * pAutoDevInfo, GUI_CALLBACK_VOID_P * pfDraw, void * pData);
csyang2 1:c0f972361605 1009
csyang2 1:c0f972361605 1010 /* Create a memory device which is compatible to the selected LCD */
csyang2 1:c0f972361605 1011 GUI_MEMDEV_Handle GUI_MEMDEV_Create (int x0, int y0, int xSize, int ySize);
csyang2 1:c0f972361605 1012 GUI_MEMDEV_Handle GUI_MEMDEV_CreateEx (int x0, int y0, int xSize, int ySize, int Flags);
csyang2 1:c0f972361605 1013 GUI_MEMDEV_Handle GUI_MEMDEV_CreateFixed (int x0, int y0, int xSize, int ySize, int Flags,
csyang2 1:c0f972361605 1014 const GUI_DEVICE_API * pDeviceAPI,
csyang2 1:c0f972361605 1015 const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 1016 GUI_MEMDEV_Handle GUI_MEMDEV_CreateFixed32(int x0, int y0, int xSize, int ySize);
csyang2 1:c0f972361605 1017
csyang2 1:c0f972361605 1018 void GUI_MEMDEV_Clear (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1019 int GUI_MEMDEV_ClearAlpha (GUI_MEMDEV_Handle hMemData, GUI_MEMDEV_Handle hMemMask);
csyang2 1:c0f972361605 1020 void GUI_MEMDEV_CopyFromLCD (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1021 void GUI_MEMDEV_CopyFromLCDAA (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1022 void GUI_MEMDEV_CopyToLCD (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1023 void GUI_MEMDEV_CopyToLCDAA (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1024 void GUI_MEMDEV_CopyToLCDAt (GUI_MEMDEV_Handle hMem, int x, int y);
csyang2 1:c0f972361605 1025 int GUI_MEMDEV_CompareWithLCD (GUI_MEMDEV_Handle hMem, int * px, int * py, int * pExp, int * pAct);
csyang2 1:c0f972361605 1026 void GUI_MEMDEV_Delete (GUI_MEMDEV_Handle MemDev);
csyang2 1:c0f972361605 1027 void GUI_MEMDEV_DrawPerspectiveX (GUI_MEMDEV_Handle hMem, int x, int y, int h0, int h1, int dx, int dy);
csyang2 1:c0f972361605 1028 int GUI_MEMDEV_GetXPos (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1029 int GUI_MEMDEV_GetXSize (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1030 int GUI_MEMDEV_GetYPos (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1031 int GUI_MEMDEV_GetYSize (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1032 void GUI_MEMDEV_MarkDirty (GUI_MEMDEV_Handle hMem, int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 1033 void GUI_MEMDEV_ReduceYSize (GUI_MEMDEV_Handle hMem, int YSize);
csyang2 1:c0f972361605 1034 void GUI_MEMDEV_Rotate (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag);
csyang2 1:c0f972361605 1035 void GUI_MEMDEV_RotateAlpha (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U8 Alpha);
csyang2 1:c0f972361605 1036 void GUI_MEMDEV_RotateHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag);
csyang2 1:c0f972361605 1037 void GUI_MEMDEV__Rotate (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U32 Mask);
csyang2 1:c0f972361605 1038 void GUI_MEMDEV__RotateHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag, U32 Mask);
csyang2 1:c0f972361605 1039 void GUI_MEMDEV_RotateHQ (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag);
csyang2 1:c0f972361605 1040 void GUI_MEMDEV_RotateHQAlpha (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U8 Alpha);
csyang2 1:c0f972361605 1041 void GUI_MEMDEV_RotateHQHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag);
csyang2 1:c0f972361605 1042 void GUI_MEMDEV_RotateHQT (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag);
csyang2 1:c0f972361605 1043 void GUI_MEMDEV_RotateHQTI (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag);
csyang2 1:c0f972361605 1044 GUI_MEMDEV_Handle GUI_MEMDEV_Select (GUI_MEMDEV_Handle hMem); /* Select (activate) a particular memory device. */
csyang2 1:c0f972361605 1045 void GUI_MEMDEV_SetOrg (GUI_MEMDEV_Handle hMem, int x0, int y0);
csyang2 1:c0f972361605 1046 void GUI_MEMDEV_WriteAt (GUI_MEMDEV_Handle hMem, int x, int y);
csyang2 1:c0f972361605 1047 void GUI_MEMDEV_Write (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1048 void GUI_MEMDEV_WriteAlphaAt (GUI_MEMDEV_Handle hMem, int Alpha, int x, int y);
csyang2 1:c0f972361605 1049 void GUI_MEMDEV_WriteAlpha (GUI_MEMDEV_Handle hMem, int Alpha);
csyang2 1:c0f972361605 1050 void GUI_MEMDEV_WriteExAt (GUI_MEMDEV_Handle hMem, int x, int y, int xMag, int yMag, int Alpha);
csyang2 1:c0f972361605 1051 void GUI_MEMDEV_WriteEx (GUI_MEMDEV_Handle hMem, int xMag, int yMag, int Alpha);
csyang2 1:c0f972361605 1052 void GUI_MEMDEV_WriteOpaque (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1053 void GUI_MEMDEV_WriteOpaqueAt (GUI_MEMDEV_Handle hMem, int x, int y);
csyang2 1:c0f972361605 1054 int GUI_MEMDEV_Draw (GUI_RECT * pRect, GUI_CALLBACK_VOID_P * pfDraw, void * pData, int NumLines, int Flags);
csyang2 1:c0f972361605 1055 void* GUI_MEMDEV_GetDataPtr (GUI_MEMDEV_Handle hMem);
csyang2 1:c0f972361605 1056 void GUI_MEMDEV_SetColorConv (GUI_MEMDEV_Handle hMem, const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 1057 const LCD_API_COLOR_CONV * GUI_MEMDEV_GetColorConv(GUI_MEMDEV_Handle hMemDev);
csyang2 1:c0f972361605 1058 int GUI_MEMDEV_GetBitsPerPixel (GUI_MEMDEV_Handle hMemDev);
csyang2 1:c0f972361605 1059 int GUI_MEMDEV_FadeInDevices (GUI_MEMDEV_Handle hMem0, GUI_MEMDEV_Handle hMem1, int Period);
csyang2 1:c0f972361605 1060 int GUI_MEMDEV_FadeOutDevices (GUI_MEMDEV_Handle hMem0, GUI_MEMDEV_Handle hMem1, int Period);
csyang2 1:c0f972361605 1061 void GUI_MEMDEV_SerializeBMP (GUI_MEMDEV_Handle hDev, GUI_CALLBACK_VOID_U8_P * pfSerialize, void * p);
csyang2 1:c0f972361605 1062 void GUI_MEMDEV_SetAnimationCallback(GUI_ANIMATION_CALLBACK_FUNC * pCbAnimation, void * pVoid);
csyang2 1:c0f972361605 1063 void GUI_MEMDEV__FadeDevice (GUI_MEMDEV_Handle hMemWin, GUI_MEMDEV_Handle hMemBk, GUI_MEMDEV_Handle hMemDst, U8 Intens);
csyang2 1:c0f972361605 1064 void GUI_MEMDEV__FadeDeviceEx (GUI_MEMDEV_Handle hMemWin, GUI_MEMDEV_Handle hMemBk, GUI_MEMDEV_Handle hMemDst, U8 Intens, int xPosWin, int yPosWin);
csyang2 1:c0f972361605 1065 int GUI_MEMDEV_PunchOutDevice (GUI_MEMDEV_Handle hMemData, GUI_MEMDEV_Handle hMemMask);
csyang2 1:c0f972361605 1066 void GUI_MEMDEV_SetTimePerFrame (unsigned TimePerFrame);
csyang2 1:c0f972361605 1067 int GUI_MEMDEV_MULTIBUF_Enable (int OnOff);
csyang2 1:c0f972361605 1068
csyang2 1:c0f972361605 1069 void GUI_SelectLCD(void);
csyang2 1:c0f972361605 1070
csyang2 1:c0f972361605 1071 /* Blurring, dithering and blending */
csyang2 1:c0f972361605 1072 GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32 (GUI_MEMDEV_Handle hMem, U8 Depth);
csyang2 1:c0f972361605 1073 GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32HQ(GUI_MEMDEV_Handle hMem, U8 Depth);
csyang2 1:c0f972361605 1074 GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32LQ(GUI_MEMDEV_Handle hMem, U8 Depth);
csyang2 1:c0f972361605 1075 void GUI_MEMDEV_SetBlurHQ (void);
csyang2 1:c0f972361605 1076 void GUI_MEMDEV_SetBlurLQ (void);
csyang2 1:c0f972361605 1077 int GUI_MEMDEV_BlendColor32 (GUI_MEMDEV_Handle hMem, U32 BlendColor, U8 BlendIntens);
csyang2 1:c0f972361605 1078 int GUI_MEMDEV_Dither32 (GUI_MEMDEV_Handle hMem, const LCD_API_COLOR_CONV * pColorConvAPI);
csyang2 1:c0f972361605 1079
csyang2 1:c0f972361605 1080 /* Optional custom drawing of 16bpp memory devices */
csyang2 1:c0f972361605 1081 void GUI_MEMDEV_SetDrawMemdev16bppFunc(GUI_DRAWMEMDEV_16BPP_FUNC * pfDrawMemdev16bppFunc);
csyang2 1:c0f972361605 1082
csyang2 1:c0f972361605 1083 /*********************************************************************
csyang2 1:c0f972361605 1084 *
csyang2 1:c0f972361605 1085 * Alpha blending
csyang2 1:c0f972361605 1086 */
csyang2 1:c0f972361605 1087 typedef struct {
csyang2 1:c0f972361605 1088 U32 UserAlpha;
csyang2 1:c0f972361605 1089 } GUI_ALPHA_STATE;
csyang2 1:c0f972361605 1090
csyang2 1:c0f972361605 1091 #define GUI_MAKE_ALPHA(Alpha, Color) ((U32)(((U32)Alpha << 24) | (Color & 0xFFFFFF)))
csyang2 1:c0f972361605 1092
csyang2 1:c0f972361605 1093 unsigned GUI_EnableAlpha (unsigned OnOff);
csyang2 1:c0f972361605 1094 U32 GUI_RestoreUserAlpha (GUI_ALPHA_STATE * pAlphaState);
csyang2 1:c0f972361605 1095 unsigned GUI_SetAlpha (U8 Alpha);
csyang2 1:c0f972361605 1096 U32 GUI_SetUserAlpha (GUI_ALPHA_STATE * pAlphaState, U32 UserAlpha);
csyang2 1:c0f972361605 1097 void (* GUI_SetFuncAlphaBlending(void (* pfAlphaBlending)(LCD_COLOR *, LCD_COLOR *, LCD_COLOR *, U32)))
csyang2 1:c0f972361605 1098 (LCD_COLOR *, LCD_COLOR *, LCD_COLOR *, U32);
csyang2 1:c0f972361605 1099 LCD_COLOR (* GUI_SetFuncMixColors (LCD_COLOR (* pFunc)(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens)))
csyang2 1:c0f972361605 1100 (LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
csyang2 1:c0f972361605 1101 void (* GUI_SetFuncMixColorsBulk(void (* pFunc)(U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens)))
csyang2 1:c0f972361605 1102 (U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens);
csyang2 1:c0f972361605 1103 unsigned GUI_PreserveTrans (unsigned OnOff);
csyang2 1:c0f972361605 1104
csyang2 1:c0f972361605 1105 /*********************************************************************
csyang2 1:c0f972361605 1106 *
csyang2 1:c0f972361605 1107 * Multi layer support
csyang2 1:c0f972361605 1108 */
csyang2 1:c0f972361605 1109 unsigned GUI_SelectLayer(unsigned Index);
csyang2 1:c0f972361605 1110 unsigned GUI_GetSelLayer(void);
csyang2 1:c0f972361605 1111
csyang2 1:c0f972361605 1112 int GUI_SetLayerPosEx (unsigned Index, int xPos, int yPos);
csyang2 1:c0f972361605 1113 int GUI_SetLayerSizeEx (unsigned Index, int xSize, int ySize);
csyang2 1:c0f972361605 1114 int GUI_SetLayerVisEx (unsigned Index, int OnOff);
csyang2 1:c0f972361605 1115 int GUI_SetLayerAlphaEx(unsigned Index, int Alpha);
csyang2 1:c0f972361605 1116 int GUI_GetLayerPosEx (unsigned Index, int * pxPos, int * pyPos);
csyang2 1:c0f972361605 1117
csyang2 1:c0f972361605 1118 void GUI_AssignCursorLayer(unsigned Index, unsigned CursorLayer);
csyang2 1:c0f972361605 1119 unsigned GUI_GetCursorLayer (unsigned Index);
csyang2 1:c0f972361605 1120
csyang2 1:c0f972361605 1121 /*********************************************************************
csyang2 1:c0f972361605 1122 *
csyang2 1:c0f972361605 1123 * Multiple buffers and display origin
csyang2 1:c0f972361605 1124 */
csyang2 1:c0f972361605 1125 void GUI_SetOrg(int x, int y);
csyang2 1:c0f972361605 1126
csyang2 1:c0f972361605 1127 void GUI_MULTIBUF_Begin (void);
csyang2 1:c0f972361605 1128 void GUI_MULTIBUF_BeginEx (int LayerIndex);
csyang2 1:c0f972361605 1129 void GUI_MULTIBUF_End (void);
csyang2 1:c0f972361605 1130 void GUI_MULTIBUF_EndEx (int LayerIndex);
csyang2 1:c0f972361605 1131 void GUI_MULTIBUF_Config (int NumBuffers);
csyang2 1:c0f972361605 1132 void GUI_MULTIBUF_ConfigEx (int LayerIndex, int NumBuffers);
csyang2 1:c0f972361605 1133 void GUI_MULTIBUF_Confirm (int Index);
csyang2 1:c0f972361605 1134 void GUI_MULTIBUF_ConfirmEx (int LayerIndex, int BufferIndex);
csyang2 1:c0f972361605 1135 int GUI_MULTIBUF_GetNumBuffers (void);
csyang2 1:c0f972361605 1136 int GUI_MULTIBUF_GetNumBuffersEx(int LayerIndex);
csyang2 1:c0f972361605 1137 void GUI_MULTIBUF_SetLayerMask (U32 LayerMask);
csyang2 1:c0f972361605 1138 void GUI_MULTIBUF_UseSingleBuffer(void);
csyang2 1:c0f972361605 1139
csyang2 1:c0f972361605 1140 /*********************************************************************
csyang2 1:c0f972361605 1141 *
csyang2 1:c0f972361605 1142 * emWinSPY
csyang2 1:c0f972361605 1143 */
csyang2 1:c0f972361605 1144 int GUI_SPY_Process (GUI_tSend pfSend, GUI_tRecv pfRecv, void * pConnectInfo);
csyang2 1:c0f972361605 1145 void GUI_SPY_SetMemHandler(GUI_tMalloc pMalloc, GUI_tFree pFree);
csyang2 1:c0f972361605 1146 int GUI_SPY_StartServer (void);
csyang2 1:c0f972361605 1147 int GUI_SPY_StartServerEx(int (* pGUI_SPY_X_StartServer)(void));
csyang2 1:c0f972361605 1148 int GUI_SPY_X_StartServer(void);
csyang2 1:c0f972361605 1149
csyang2 1:c0f972361605 1150 /*********************************************************************
csyang2 1:c0f972361605 1151 *
csyang2 1:c0f972361605 1152 * QR-Codes
csyang2 1:c0f972361605 1153 */
csyang2 1:c0f972361605 1154 #define GUI_QR_ECLEVEL_L 0
csyang2 1:c0f972361605 1155 #define GUI_QR_ECLEVEL_M 1
csyang2 1:c0f972361605 1156 #define GUI_QR_ECLEVEL_Q 2
csyang2 1:c0f972361605 1157 #define GUI_QR_ECLEVEL_H 3
csyang2 1:c0f972361605 1158
csyang2 1:c0f972361605 1159 typedef struct {
csyang2 1:c0f972361605 1160 int Version; // Version according to QR code documentation
csyang2 1:c0f972361605 1161 int Width; // Number of 'Modules'
csyang2 1:c0f972361605 1162 int Size; // Size of bitmap in pixels
csyang2 1:c0f972361605 1163 } GUI_QR_INFO;
csyang2 1:c0f972361605 1164
csyang2 1:c0f972361605 1165 GUI_HMEM GUI_QR_Create (const char * pText, int PixelSize, int EccLevel, int Version);
csyang2 1:c0f972361605 1166 void GUI_QR_Draw (GUI_HMEM hQR, int xPos, int yPos);
csyang2 1:c0f972361605 1167 void GUI_QR_GetInfo(GUI_HMEM hQR, GUI_QR_INFO * pInfo);
csyang2 1:c0f972361605 1168 void GUI_QR_Delete (GUI_HMEM hQR);
csyang2 1:c0f972361605 1169
csyang2 1:c0f972361605 1170 /*********************************************************************
csyang2 1:c0f972361605 1171 *
csyang2 1:c0f972361605 1172 * Basics for animations
csyang2 1:c0f972361605 1173 */
csyang2 1:c0f972361605 1174 #define ANIM_LINEAR GUI_ANIM__Linear
csyang2 1:c0f972361605 1175 #define ANIM_ACCEL GUI_ANIM__Accel
csyang2 1:c0f972361605 1176 #define ANIM_DECEL GUI_ANIM__Decel
csyang2 1:c0f972361605 1177 #define ANIM_ACCELDECEL GUI_ANIM__AccelDecel
csyang2 1:c0f972361605 1178
csyang2 1:c0f972361605 1179 #define GUI_ANIM_START 0
csyang2 1:c0f972361605 1180 #define GUI_ANIM_RUNNING 1
csyang2 1:c0f972361605 1181 #define GUI_ANIM_END 2
csyang2 1:c0f972361605 1182
csyang2 1:c0f972361605 1183 #ifndef GUI_ANIM_RANGE
csyang2 1:c0f972361605 1184 #define GUI_ANIM_RANGE 32767L
csyang2 1:c0f972361605 1185 #endif
csyang2 1:c0f972361605 1186
csyang2 1:c0f972361605 1187 typedef GUI_HMEM GUI_ANIM_HANDLE;
csyang2 1:c0f972361605 1188
csyang2 1:c0f972361605 1189 typedef I32 (* GUI_ANIM_GETPOS_FUNC)(GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow);
csyang2 1:c0f972361605 1190
csyang2 1:c0f972361605 1191 typedef struct {
csyang2 1:c0f972361605 1192 int Pos;
csyang2 1:c0f972361605 1193 int State;
csyang2 1:c0f972361605 1194 GUI_ANIM_HANDLE hAnim;
csyang2 1:c0f972361605 1195 GUI_TIMER_TIME Period;
csyang2 1:c0f972361605 1196 } GUI_ANIM_INFO;
csyang2 1:c0f972361605 1197
csyang2 1:c0f972361605 1198 typedef void GUI_ANIMATION_FUNC(GUI_ANIM_INFO * pInfo, void * pVoid);
csyang2 1:c0f972361605 1199
csyang2 1:c0f972361605 1200 I32 GUI_ANIM__Linear (GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow);
csyang2 1:c0f972361605 1201 I32 GUI_ANIM__Decel (GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow);
csyang2 1:c0f972361605 1202 I32 GUI_ANIM__Accel (GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow);
csyang2 1:c0f972361605 1203 I32 GUI_ANIM__AccelDecel(GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow);
csyang2 1:c0f972361605 1204
csyang2 1:c0f972361605 1205 int GUI_ANIM_AddItem(GUI_ANIM_HANDLE hAnim, GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_ANIM_GETPOS_FUNC pfGetPos, void * pVoid, GUI_ANIMATION_FUNC * pfAnim);
csyang2 1:c0f972361605 1206 GUI_ANIM_HANDLE GUI_ANIM_Create (GUI_TIMER_TIME Period, unsigned MinTimePerFrame, void * pVoid, void (* pfSliceInfo)(int State, void * _pVoid));
csyang2 1:c0f972361605 1207 void GUI_ANIM_Delete (GUI_ANIM_HANDLE hAnim);
csyang2 1:c0f972361605 1208 int GUI_ANIM_Exec (GUI_ANIM_HANDLE hAnim);
csyang2 1:c0f972361605 1209 void GUI_ANIM_Start (GUI_ANIM_HANDLE hAnim);
csyang2 1:c0f972361605 1210 void GUI_ANIM_StartEx(GUI_ANIM_HANDLE hAnim, int NumLoops, void (* pfOnDelete)(void * pVoid));
csyang2 1:c0f972361605 1211 void GUI_ANIM_Stop (GUI_ANIM_HANDLE hAnim);
csyang2 1:c0f972361605 1212
csyang2 1:c0f972361605 1213 /*********************************************************************
csyang2 1:c0f972361605 1214 *
csyang2 1:c0f972361605 1215 * Display orientation
csyang2 1:c0f972361605 1216 */
csyang2 1:c0f972361605 1217 /*********************************************************************
csyang2 1:c0f972361605 1218 *
csyang2 1:c0f972361605 1219 * GUI_ORIENTATION_API
csyang2 1:c0f972361605 1220 */
csyang2 1:c0f972361605 1221 typedef struct {
csyang2 1:c0f972361605 1222 void (* pfDrawBitmap )(GUI_DEVICE * pDevice, int x0, int y0, int xsize, int ysize, int BitsPerPixel, int BytesPerLine, const U8 * pData, int Diff, const LCD_PIXELINDEX * pTrans);
csyang2 1:c0f972361605 1223 void (* pfDrawHLine )(GUI_DEVICE * pDevice, int x0, int y0, int x1);
csyang2 1:c0f972361605 1224 void (* pfDrawVLine )(GUI_DEVICE * pDevice, int x , int y0, int y1);
csyang2 1:c0f972361605 1225 void (* pfFillRect )(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 1226 LCD_PIXELINDEX (* pfGetPixelIndex)(GUI_DEVICE * pDevice, int x, int y);
csyang2 1:c0f972361605 1227 void (* pfSetPixelIndex)(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX ColorIndex);
csyang2 1:c0f972361605 1228 void (* pfXorPixel )(GUI_DEVICE * pDevice, int x, int y);
csyang2 1:c0f972361605 1229 int BytesPerPixel;
csyang2 1:c0f972361605 1230 } GUI_ORIENTATION_API;
csyang2 1:c0f972361605 1231
csyang2 1:c0f972361605 1232 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C0;
csyang2 1:c0f972361605 1233 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C8;
csyang2 1:c0f972361605 1234 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C16;
csyang2 1:c0f972361605 1235 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C32;
csyang2 1:c0f972361605 1236
csyang2 1:c0f972361605 1237 #define GUI_ORIENTATION_C0 &GUI_OrientationAPI_C0
csyang2 1:c0f972361605 1238 #define GUI_ORIENTATION_C8 &GUI_OrientationAPI_C8
csyang2 1:c0f972361605 1239 #define GUI_ORIENTATION_C16 &GUI_OrientationAPI_C16
csyang2 1:c0f972361605 1240 #define GUI_ORIENTATION_C32 &GUI_OrientationAPI_C32
csyang2 1:c0f972361605 1241
csyang2 1:c0f972361605 1242 int GUI_SetOrientation (int Orientation);
csyang2 1:c0f972361605 1243 int GUI_SetOrientationEx (int Orientation, int LayerIndex);
csyang2 1:c0f972361605 1244 int GUI_SetOrientationExCached(int Orientation, int LayerIndex, const GUI_ORIENTATION_API * pAPI);
csyang2 1:c0f972361605 1245
csyang2 1:c0f972361605 1246 /*********************************************************************
csyang2 1:c0f972361605 1247 *
csyang2 1:c0f972361605 1248 * Measure device: GUI_MEASDEV
csyang2 1:c0f972361605 1249 */
csyang2 1:c0f972361605 1250 typedef GUI_HMEM GUI_MEASDEV_Handle;
csyang2 1:c0f972361605 1251
csyang2 1:c0f972361605 1252 GUI_MEASDEV_Handle GUI_MEASDEV_Create (void);
csyang2 1:c0f972361605 1253 void GUI_MEASDEV_Delete (GUI_MEASDEV_Handle hMemDev);
csyang2 1:c0f972361605 1254 void GUI_MEASDEV_Select (GUI_MEASDEV_Handle hMem);
csyang2 1:c0f972361605 1255 void GUI_MEASDEV_GetRect(GUI_MEASDEV_Handle hMem, GUI_RECT * pRect);
csyang2 1:c0f972361605 1256 void GUI_MEASDEV_ClearRect(GUI_MEASDEV_Handle hMem);
csyang2 1:c0f972361605 1257
csyang2 1:c0f972361605 1258 /*********************************************************************
csyang2 1:c0f972361605 1259 *
csyang2 1:c0f972361605 1260 * Polygon helpers
csyang2 1:c0f972361605 1261 */
csyang2 1:c0f972361605 1262 void GUI_RotatePolygon (GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, float Angle);
csyang2 1:c0f972361605 1263 void GUI_MagnifyPolygon(GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, int Mag);
csyang2 1:c0f972361605 1264 void GUI_EnlargePolygon(GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, int Len);
csyang2 1:c0f972361605 1265
csyang2 1:c0f972361605 1266 /*********************************************************************
csyang2 1:c0f972361605 1267 *
csyang2 1:c0f972361605 1268 * Streamed bitmaps
csyang2 1:c0f972361605 1269 */
csyang2 1:c0f972361605 1270 #define GUI_BITMAPSTREAM_GET_BUFFER 1
csyang2 1:c0f972361605 1271 #define GUI_BITMAPSTREAM_RELEASE_BUFFER 2
csyang2 1:c0f972361605 1272 #define GUI_BITMAPSTREAM_MODIFY_PALETTE 3
csyang2 1:c0f972361605 1273
csyang2 1:c0f972361605 1274 #define DECLARE_CREATE_FROM_STREAM(ID) int GUI_CreateBitmapFromStream##ID(GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const void * p);
csyang2 1:c0f972361605 1275
csyang2 1:c0f972361605 1276 DECLARE_CREATE_FROM_STREAM(IDX)
csyang2 1:c0f972361605 1277 DECLARE_CREATE_FROM_STREAM(RLE4)
csyang2 1:c0f972361605 1278 DECLARE_CREATE_FROM_STREAM(RLE8)
csyang2 1:c0f972361605 1279 DECLARE_CREATE_FROM_STREAM(565)
csyang2 1:c0f972361605 1280 DECLARE_CREATE_FROM_STREAM(M565)
csyang2 1:c0f972361605 1281 DECLARE_CREATE_FROM_STREAM(555)
csyang2 1:c0f972361605 1282 DECLARE_CREATE_FROM_STREAM(M555)
csyang2 1:c0f972361605 1283 DECLARE_CREATE_FROM_STREAM(A565)
csyang2 1:c0f972361605 1284 DECLARE_CREATE_FROM_STREAM(AM565)
csyang2 1:c0f972361605 1285 DECLARE_CREATE_FROM_STREAM(A555)
csyang2 1:c0f972361605 1286 DECLARE_CREATE_FROM_STREAM(AM555)
csyang2 1:c0f972361605 1287 DECLARE_CREATE_FROM_STREAM(RLE16)
csyang2 1:c0f972361605 1288 DECLARE_CREATE_FROM_STREAM(RLEM16)
csyang2 1:c0f972361605 1289 DECLARE_CREATE_FROM_STREAM(24)
csyang2 1:c0f972361605 1290 DECLARE_CREATE_FROM_STREAM(Alpha)
csyang2 1:c0f972361605 1291 DECLARE_CREATE_FROM_STREAM(M8888I)
csyang2 1:c0f972361605 1292 DECLARE_CREATE_FROM_STREAM(RLEAlpha)
csyang2 1:c0f972361605 1293 DECLARE_CREATE_FROM_STREAM(RLE32)
csyang2 1:c0f972361605 1294 DECLARE_CREATE_FROM_STREAM(444_12)
csyang2 1:c0f972361605 1295 DECLARE_CREATE_FROM_STREAM(M444_12)
csyang2 1:c0f972361605 1296 DECLARE_CREATE_FROM_STREAM(444_12_1)
csyang2 1:c0f972361605 1297 DECLARE_CREATE_FROM_STREAM(M444_12_1)
csyang2 1:c0f972361605 1298 DECLARE_CREATE_FROM_STREAM(444_16)
csyang2 1:c0f972361605 1299 DECLARE_CREATE_FROM_STREAM(M444_16)
csyang2 1:c0f972361605 1300
csyang2 1:c0f972361605 1301 int GUI_CreateBitmapFromStream (GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const void * p);
csyang2 1:c0f972361605 1302 void GUI_DrawStreamedBitmap (const void * p, int x, int y);
csyang2 1:c0f972361605 1303 void GUI_DrawStreamedBitmapAuto (const void * p, int x, int y);
csyang2 1:c0f972361605 1304 int GUI_DrawStreamedBitmapEx (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1305 int GUI_DrawStreamedBitmapExAuto (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1306 int GUI_DrawStreamedBitmap555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1307 int GUI_DrawStreamedBitmapM555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1308 int GUI_DrawStreamedBitmap565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1309 int GUI_DrawStreamedBitmapM565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1310 int GUI_DrawStreamedBitmapA555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1311 int GUI_DrawStreamedBitmapAM555Ex(GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1312 int GUI_DrawStreamedBitmapA565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1313 int GUI_DrawStreamedBitmapAM565Ex(GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1314 int GUI_DrawStreamedBitmap24Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y);
csyang2 1:c0f972361605 1315 void GUI_GetStreamedBitmapInfo (const void * p, GUI_BITMAPSTREAM_INFO * pInfo);
csyang2 1:c0f972361605 1316 int GUI_GetStreamedBitmapInfoEx (GUI_GET_DATA_FUNC * pfGetData, const void * p, GUI_BITMAPSTREAM_INFO * pInfo);
csyang2 1:c0f972361605 1317 void GUI_SetStreamedBitmapHook (GUI_BITMAPSTREAM_CALLBACK pfStreamedBitmapHook);
csyang2 1:c0f972361605 1318
csyang2 1:c0f972361605 1319 void LCD__RLE4_SetFunc (GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off, const LCD_LOGPALETTE * pLogPal);
csyang2 1:c0f972361605 1320 void LCD__RLE8_SetFunc (GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off, const LCD_LOGPALETTE * pLogPal);
csyang2 1:c0f972361605 1321 void LCD__RLE16_SetFunc(GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off);
csyang2 1:c0f972361605 1322 void LCD__RLE32_SetFunc(GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off);
csyang2 1:c0f972361605 1323
csyang2 1:c0f972361605 1324 /*********************************************************************
csyang2 1:c0f972361605 1325 *
csyang2 1:c0f972361605 1326 * BMP-export
csyang2 1:c0f972361605 1327 */
csyang2 1:c0f972361605 1328 void GUI_BMP_Serialize (GUI_CALLBACK_VOID_U8_P * pfSerialize, void * p);
csyang2 1:c0f972361605 1329 void GUI_BMP_SerializeEx (GUI_CALLBACK_VOID_U8_P * pfSerialize, int x0, int y0, int xSize, int ySize, void * p);
csyang2 1:c0f972361605 1330 void GUI_BMP_SerializeExBpp(GUI_CALLBACK_VOID_U8_P * pfSerialize, int x0, int y0, int xSize, int ySize, void * p, int BitsPerPixel);
csyang2 1:c0f972361605 1331
csyang2 1:c0f972361605 1332 void GUI_BMP__WriteBitmapHeader(GUI_CALLBACK_VOID_U8_P * pfSerialize, int xSize, int ySize, void * p, int BitsPerPixel, int BytesPerLine, int BytesPerPixel, int NumColors, int Padding);
csyang2 1:c0f972361605 1333
csyang2 1:c0f972361605 1334 /*********************************************************************
csyang2 1:c0f972361605 1335 *
csyang2 1:c0f972361605 1336 * Time / execution related routines
csyang2 1:c0f972361605 1337 */
csyang2 1:c0f972361605 1338 void GUI_Delay (int Period);
csyang2 1:c0f972361605 1339 GUI_TIMER_TIME GUI_GetTime (void);
csyang2 1:c0f972361605 1340 int GUI_GetTimeSlice(void);
csyang2 1:c0f972361605 1341 int GUI_Exec (void); /* Execute all jobs ... Return 0 if nothing was done. */
csyang2 1:c0f972361605 1342 int GUI_Exec1 (void); /* Execute one job ... Return 0 if nothing was done. */
csyang2 1:c0f972361605 1343 void GUI_SetTimeSlice(int TimeSlice);
csyang2 1:c0f972361605 1344
csyang2 1:c0f972361605 1345 /*********************************************************************
csyang2 1:c0f972361605 1346 *
csyang2 1:c0f972361605 1347 * MessageBox
csyang2 1:c0f972361605 1348 */
csyang2 1:c0f972361605 1349 int GUI_MessageBox (const char * sMessage, const char * sCaption, int Flags);
csyang2 1:c0f972361605 1350 #define GUI_MESSAGEBOX_CF_MOVEABLE (1 << 0)
csyang2 1:c0f972361605 1351 #define GUI_MESSAGEBOX_CF_MODAL (1 << 1)
csyang2 1:c0f972361605 1352
csyang2 1:c0f972361605 1353 #define GUI_MB_OK 20
csyang2 1:c0f972361605 1354 #define GUI_MB_WARNING 21
csyang2 1:c0f972361605 1355
csyang2 1:c0f972361605 1356 /*********************************************************************
csyang2 1:c0f972361605 1357 *
csyang2 1:c0f972361605 1358 * GUI_TIMER module
csyang2 1:c0f972361605 1359 */
csyang2 1:c0f972361605 1360 #define GUI_TIMER_CF_WINDOW (1 << 0)
csyang2 1:c0f972361605 1361 #define GUI_TIMER_CF_CURSOR (1 << 1)
csyang2 1:c0f972361605 1362
csyang2 1:c0f972361605 1363 typedef GUI_HMEM GUI_TIMER_HANDLE;
csyang2 1:c0f972361605 1364
csyang2 1:c0f972361605 1365 typedef struct {
csyang2 1:c0f972361605 1366 GUI_TIMER_TIME Time;
csyang2 1:c0f972361605 1367 PTR_ADDR Context;
csyang2 1:c0f972361605 1368 GUI_TIMER_HANDLE hTimer;
csyang2 1:c0f972361605 1369 } GUI_TIMER_MESSAGE;
csyang2 1:c0f972361605 1370
csyang2 1:c0f972361605 1371 typedef void GUI_TIMER_CALLBACK(/*const*/ GUI_TIMER_MESSAGE* pTM);
csyang2 1:c0f972361605 1372
csyang2 1:c0f972361605 1373 GUI_TIMER_HANDLE GUI_TIMER_Create (GUI_TIMER_CALLBACK * cb, GUI_TIMER_TIME Time, PTR_ADDR Context, U16 Flags);
csyang2 1:c0f972361605 1374 void GUI_TIMER_Delete (GUI_TIMER_HANDLE hObj);
csyang2 1:c0f972361605 1375
csyang2 1:c0f972361605 1376 /* Methods changing properties */
csyang2 1:c0f972361605 1377 GUI_TIMER_TIME GUI_TIMER_GetPeriod(GUI_TIMER_HANDLE hObj);
csyang2 1:c0f972361605 1378 void GUI_TIMER_SetPeriod(GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period);
csyang2 1:c0f972361605 1379 void GUI_TIMER_SetTime (GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period);
csyang2 1:c0f972361605 1380 void GUI_TIMER_SetDelay (GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Delay);
csyang2 1:c0f972361605 1381 void GUI_TIMER_Restart (GUI_TIMER_HANDLE hObj);
csyang2 1:c0f972361605 1382 int GUI_TIMER_GetFlag (GUI_TIMER_HANDLE hObj, int Flag); /* Not to be documented */
csyang2 1:c0f972361605 1383 int GUI_TIMER_Exec (void);
csyang2 1:c0f972361605 1384
csyang2 1:c0f972361605 1385 /*********************************************************************
csyang2 1:c0f972361605 1386 *
csyang2 1:c0f972361605 1387 * Anti Aliasing
csyang2 1:c0f972361605 1388 */
csyang2 1:c0f972361605 1389 #define GUI_AA_TRANS 0 // Foreground color mixed up with current content of framebuffer
csyang2 1:c0f972361605 1390 #define GUI_AA_NOTRANS 1 // Foreground color mixed up with current background color
csyang2 1:c0f972361605 1391
csyang2 1:c0f972361605 1392 void GUI_AA_DisableHiRes (void);
csyang2 1:c0f972361605 1393 void GUI_AA_EnableHiRes (void);
csyang2 1:c0f972361605 1394 int GUI_AA_GetFactor (void);
csyang2 1:c0f972361605 1395 void GUI_AA_SetFactor (int Factor);
csyang2 1:c0f972361605 1396 void GUI_AA_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1);
csyang2 1:c0f972361605 1397 void GUI_AA_DrawCircle (int x0, int y0, int r); // Currently not implemented, only for Dave2D
csyang2 1:c0f972361605 1398 void GUI_AA_DrawLine (int x0, int y0, int x1, int y1);
csyang2 1:c0f972361605 1399 void GUI_AA_DrawPolyOutline (const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y);
csyang2 1:c0f972361605 1400 void GUI_AA_DrawPolyOutlineEx(const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y, GUI_POINT * pBuffer);
csyang2 1:c0f972361605 1401 void GUI_AA_DrawRoundedRect (int x0, int y0, int x1, int y1, int r);
csyang2 1:c0f972361605 1402 void GUI_AA_DrawRoundedRectEx(GUI_RECT * pRect, int r);
csyang2 1:c0f972361605 1403 void GUI_AA_FillCircle (int x0, int y0, int r);
csyang2 1:c0f972361605 1404 void GUI_AA_FillEllipse (int x0, int y0, int rx, int ry);
csyang2 1:c0f972361605 1405 void GUI_AA_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
csyang2 1:c0f972361605 1406 void GUI_AA_FillRoundedRect (int x0, int y0, int x1, int y1, int r);
csyang2 1:c0f972361605 1407 void GUI_AA_FillRoundedRectEx(GUI_RECT * pRect, int r);
csyang2 1:c0f972361605 1408 int GUI_AA_SetDrawMode (int Mode);
csyang2 1:c0f972361605 1409 void GUI_AA_SetpfDrawCharAA4 (int (* pfDrawChar)(int LayerIndex, int x, int y, U8 const * p, int xSize, int ySize, int BytesPerLine));
csyang2 1:c0f972361605 1410 void GUI_AA_SetGammaAA4 (U8 * pGamma);
csyang2 1:c0f972361605 1411 void GUI_AA_GetGammaAA4 (U8 * pGamma);
csyang2 1:c0f972361605 1412 void GUI_AA_EnableGammaAA4 (int OnOff);
csyang2 1:c0f972361605 1413
csyang2 1:c0f972361605 1414 #define GUI_AA_PreserveTrans(OnOff) GUI_PreserveTrans(OnOff) // For compatibility only
csyang2 1:c0f972361605 1415
csyang2 1:c0f972361605 1416 void GUI_AA_SetFuncDrawArc (int (* pfDrawArc) (int x0, int y0, int rx, int ry, int a0, int a1));
csyang2 1:c0f972361605 1417 void GUI_AA_SetFuncDrawCircle (int (* pfDrawCircle) (int x0, int y0, int r));
csyang2 1:c0f972361605 1418 void GUI_AA_SetFuncDrawLine (int (* pfDrawLine) (int x0, int y0, int x1, int y1));
csyang2 1:c0f972361605 1419 void GUI_AA_SetFuncDrawPolyOutline(int (* pfDrawPolyOutline)(const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y));
csyang2 1:c0f972361605 1420 void GUI_AA_SetFuncFillCircle (int (* pfFillCircle) (int x0, int y0, int r));
csyang2 1:c0f972361605 1421 void GUI_AA_SetFuncFillPolygon (int (* pfFillPolygon)(const GUI_POINT * pPoints, int NumPoints, int x0, int y0));
csyang2 1:c0f972361605 1422
csyang2 1:c0f972361605 1423 /*********************************************************************
csyang2 1:c0f972361605 1424 *
csyang2 1:c0f972361605 1425 * Keyboard
csyang2 1:c0f972361605 1426 */
csyang2 1:c0f972361605 1427 /* Message layer */
csyang2 1:c0f972361605 1428 void GUI_StoreKeyMsg(int Key, int Pressed);
csyang2 1:c0f972361605 1429 void GUI_SendKeyMsg (int Key, int Pressed);
csyang2 1:c0f972361605 1430 int GUI_PollKeyMsg (void);
csyang2 1:c0f972361605 1431 void GUI_GetKeyState(GUI_KEY_STATE * pState);
csyang2 1:c0f972361605 1432
csyang2 1:c0f972361605 1433 void GUI_KEY__SetHook(void (* pfHook)(const GUI_KEY_STATE *));
csyang2 1:c0f972361605 1434
csyang2 1:c0f972361605 1435 /* Application layer */
csyang2 1:c0f972361605 1436 int GUI_GetKey(void);
csyang2 1:c0f972361605 1437 int GUI_WaitKey(void);
csyang2 1:c0f972361605 1438 void GUI_StoreKey(int c);
csyang2 1:c0f972361605 1439 void GUI_ClearKeyBuffer(void);
csyang2 1:c0f972361605 1440
csyang2 1:c0f972361605 1441 /*********************************************************************
csyang2 1:c0f972361605 1442 *
csyang2 1:c0f972361605 1443 * Task synchronization
csyang2 1:c0f972361605 1444 */
csyang2 1:c0f972361605 1445 void GUI_WaitEvent (void);
csyang2 1:c0f972361605 1446 void GUI_SignalEvent (void);
csyang2 1:c0f972361605 1447 void GUI_SetSignalEventFunc (GUI_SIGNAL_EVENT_FUNC pfSignalEvent);
csyang2 1:c0f972361605 1448 void GUI_SetWaitEventFunc (GUI_WAIT_EVENT_FUNC pfWaitEvent);
csyang2 1:c0f972361605 1449 void GUI_SetWaitEventTimedFunc(GUI_WAIT_EVENT_TIMED_FUNC pfWaitEventTimed);
csyang2 1:c0f972361605 1450
csyang2 1:c0f972361605 1451 /*********************************************************************
csyang2 1:c0f972361605 1452 *
csyang2 1:c0f972361605 1453 * Joystick, generic
csyang2 1:c0f972361605 1454 */
csyang2 1:c0f972361605 1455 void GUI_JOYSTICK_StoreState(const GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1456
csyang2 1:c0f972361605 1457 /*********************************************************************
csyang2 1:c0f972361605 1458 *
csyang2 1:c0f972361605 1459 * PID (Pointer input device ... mouse/touch)
csyang2 1:c0f972361605 1460 */
csyang2 1:c0f972361605 1461 void GUI_PID_StoreState (const GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1462 int GUI_PID_GetState ( GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1463 void GUI_PID_GetCurrentState( GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1464 int GUI_PID_IsEmpty (void);
csyang2 1:c0f972361605 1465 int GUI_PID_IsPressed (void);
csyang2 1:c0f972361605 1466 void GUI_PID_RegisterHook (GUI_REGISTER_HOOK * pRegisterHook);
csyang2 1:c0f972361605 1467 void GUI_PID_SetHook (void (* pfHook)( GUI_PID_STATE *)); // Public
csyang2 1:c0f972361605 1468 void GUI_PID__SetHook (void (* pfHook)(const GUI_PID_STATE *)); // Private
csyang2 1:c0f972361605 1469
csyang2 1:c0f972361605 1470 /*********************************************************************
csyang2 1:c0f972361605 1471 *
csyang2 1:c0f972361605 1472 * Mouse, generic
csyang2 1:c0f972361605 1473 */
csyang2 1:c0f972361605 1474 int GUI_MOUSE_GetState ( GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1475 void GUI_MOUSE_StoreState(const GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1476
csyang2 1:c0f972361605 1477 /*********************************************************************
csyang2 1:c0f972361605 1478 *
csyang2 1:c0f972361605 1479 * TOUCH screen, generic
csyang2 1:c0f972361605 1480 */
csyang2 1:c0f972361605 1481 int GUI_TOUCH_GetLayer (void);
csyang2 1:c0f972361605 1482 int GUI_TOUCH_GetState (GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1483 void GUI_TOUCH_GetUnstable (int * px, int * py); /* for diagnostics only */
csyang2 1:c0f972361605 1484 void GUI_TOUCH_SetLayer (int Layer);
csyang2 1:c0f972361605 1485 void GUI_TOUCH_StoreState (int x, int y);
csyang2 1:c0f972361605 1486 void GUI_TOUCH_StoreStateEx (const GUI_PID_STATE * pState);
csyang2 1:c0f972361605 1487 void GUI_TOUCH_StoreUnstable(int x, int y);
csyang2 1:c0f972361605 1488
csyang2 1:c0f972361605 1489 /*********************************************************************
csyang2 1:c0f972361605 1490 *
csyang2 1:c0f972361605 1491 * Mouse, PS2 driver
csyang2 1:c0f972361605 1492 */
csyang2 1:c0f972361605 1493 void GUI_MOUSE_DRIVER_PS2_Init(void); /* optional */
csyang2 1:c0f972361605 1494 void GUI_MOUSE_DRIVER_PS2_OnRx(unsigned char Data);
csyang2 1:c0f972361605 1495
csyang2 1:c0f972361605 1496 /*********************************************************************
csyang2 1:c0f972361605 1497 *
csyang2 1:c0f972361605 1498 * TOUCH screen, analog driver
csyang2 1:c0f972361605 1499 */
csyang2 1:c0f972361605 1500 int GUI_TOUCH_CalcCoefficients (int NumPoints, int * pxRef, int * pyRef, int * pxSample, int * pySample, int xSize, int ySize);
csyang2 1:c0f972361605 1501 int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phys1);
csyang2 1:c0f972361605 1502 int GUI_TOUCH_CalibratePoint (int * px, int * py);
csyang2 1:c0f972361605 1503 void GUI_TOUCH_EnableCalibration(int OnOff);
csyang2 1:c0f972361605 1504 void GUI_TOUCH_Exec (void);
csyang2 1:c0f972361605 1505 int GUI_TOUCH_GetxPhys (void); /* for diagnostics only */
csyang2 1:c0f972361605 1506 int GUI_TOUCH_GetyPhys (void); /* for diagnostics only */
csyang2 1:c0f972361605 1507 void GUI_TOUCH_SetCalibration (int (* pFunc)(int *, int *)); /* Not to be documented */
csyang2 1:c0f972361605 1508 void GUI_TOUCH_SetOrientation (unsigned Orientation);
csyang2 1:c0f972361605 1509 int GUI_TOUCH_TransformPoint (int * px, int * py); /* Not to be documented */
csyang2 1:c0f972361605 1510
csyang2 1:c0f972361605 1511 /*********************************************************************
csyang2 1:c0f972361605 1512 *
csyang2 1:c0f972361605 1513 * TOUCH: imports
csyang2 1:c0f972361605 1514 *
csyang2 1:c0f972361605 1515 * Please note: The following functions are required by the module.
csyang2 1:c0f972361605 1516 * They need to be part of your application software (or rather, part
csyang2 1:c0f972361605 1517 * of the hardware-layer of your software).
csyang2 1:c0f972361605 1518 */
csyang2 1:c0f972361605 1519 void GUI_TOUCH_X_ActivateX(void);
csyang2 1:c0f972361605 1520 void GUI_TOUCH_X_ActivateY(void);
csyang2 1:c0f972361605 1521 void GUI_TOUCH_X_Disable (void);
csyang2 1:c0f972361605 1522 int GUI_TOUCH_X_MeasureX (void);
csyang2 1:c0f972361605 1523 int GUI_TOUCH_X_MeasureY (void);
csyang2 1:c0f972361605 1524
csyang2 1:c0f972361605 1525 /*********************************************************************
csyang2 1:c0f972361605 1526 *
csyang2 1:c0f972361605 1527 * GUI_X_
csyang2 1:c0f972361605 1528 *
csyang2 1:c0f972361605 1529 * Externals, to be defined by application
csyang2 1:c0f972361605 1530 *
csyang2 1:c0f972361605 1531 * The externals defined below should be defined by the
csyang2 1:c0f972361605 1532 * application. They are per default contained in the module
csyang2 1:c0f972361605 1533 * GUI_X.c.
csyang2 1:c0f972361605 1534 * Note that a lot if not all of these are not required in most target
csyang2 1:c0f972361605 1535 * systems.
csyang2 1:c0f972361605 1536 * For this module, samples are available for configurations
csyang2 1:c0f972361605 1537 * with or without operating system.
csyang2 1:c0f972361605 1538 */
csyang2 1:c0f972361605 1539 //
csyang2 1:c0f972361605 1540 // Configuration
csyang2 1:c0f972361605 1541 //
csyang2 1:c0f972361605 1542 void GUI_X_Config(void);
csyang2 1:c0f972361605 1543 void GUI_X_Init (void);
csyang2 1:c0f972361605 1544
csyang2 1:c0f972361605 1545 //
csyang2 1:c0f972361605 1546 // Timing routines
csyang2 1:c0f972361605 1547 //
csyang2 1:c0f972361605 1548 GUI_TIMER_TIME GUI_X_GetTime(void);
csyang2 1:c0f972361605 1549 void GUI_X_Delay (int Period);
csyang2 1:c0f972361605 1550
csyang2 1:c0f972361605 1551 //
csyang2 1:c0f972361605 1552 // Multitask routines - required only if multitasking is used (#define GUI_OS 1)
csyang2 1:c0f972361605 1553 //
csyang2 1:c0f972361605 1554 void GUI_X_Unlock (void);
csyang2 1:c0f972361605 1555 void GUI_X_Lock (void);
csyang2 1:c0f972361605 1556 U32 GUI_X_GetTaskId(void);
csyang2 1:c0f972361605 1557 void GUI_X_InitOS (void);
csyang2 1:c0f972361605 1558
csyang2 1:c0f972361605 1559 //
csyang2 1:c0f972361605 1560 // Event driving (optional with multitasking)
csyang2 1:c0f972361605 1561 //
csyang2 1:c0f972361605 1562 void GUI_X_ExecIdle (void);
csyang2 1:c0f972361605 1563 void GUI_X_WaitEvent (void);
csyang2 1:c0f972361605 1564 void GUI_X_WaitEventTimed(int Period);
csyang2 1:c0f972361605 1565 void GUI_X_SignalEvent (void);
csyang2 1:c0f972361605 1566
csyang2 1:c0f972361605 1567 //
csyang2 1:c0f972361605 1568 // Recording (logs/warnings and errors) - required only for higher levels
csyang2 1:c0f972361605 1569 //
csyang2 1:c0f972361605 1570 void GUI_X_Log (const char * s);
csyang2 1:c0f972361605 1571 void GUI_X_Warn (const char * s);
csyang2 1:c0f972361605 1572 void GUI_X_ErrorOut(const char * s);
csyang2 1:c0f972361605 1573
csyang2 1:c0f972361605 1574 /*********************************************************************
csyang2 1:c0f972361605 1575 *
csyang2 1:c0f972361605 1576 * Constants for fonts and bitmaps
csyang2 1:c0f972361605 1577 */
csyang2 1:c0f972361605 1578 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE4;
csyang2 1:c0f972361605 1579 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE4Ex;
csyang2 1:c0f972361605 1580 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE8;
csyang2 1:c0f972361605 1581 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE8Ex;
csyang2 1:c0f972361605 1582 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE16;
csyang2 1:c0f972361605 1583 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE16Ex;
csyang2 1:c0f972361605 1584 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEM16;
csyang2 1:c0f972361605 1585 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEM16Ex;
csyang2 1:c0f972361605 1586 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE32;
csyang2 1:c0f972361605 1587 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE32Ex;
csyang2 1:c0f972361605 1588 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEAlpha;
csyang2 1:c0f972361605 1589
csyang2 1:c0f972361605 1590 extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_12;
csyang2 1:c0f972361605 1591 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_12;
csyang2 1:c0f972361605 1592 extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_12_1;
csyang2 1:c0f972361605 1593 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_12_1;
csyang2 1:c0f972361605 1594 extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_16;
csyang2 1:c0f972361605 1595 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_16;
csyang2 1:c0f972361605 1596 extern const GUI_BITMAP_METHODS GUI_BitmapMethods555;
csyang2 1:c0f972361605 1597 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM555;
csyang2 1:c0f972361605 1598 extern const GUI_BITMAP_METHODS GUI_BitmapMethods565;
csyang2 1:c0f972361605 1599 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM565;
csyang2 1:c0f972361605 1600 extern const GUI_BITMAP_METHODS GUI_BitmapMethods24;
csyang2 1:c0f972361605 1601 extern const GUI_BITMAP_METHODS GUI_BitmapMethods888;
csyang2 1:c0f972361605 1602 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM888;
csyang2 1:c0f972361605 1603 extern const GUI_BITMAP_METHODS GUI_BitmapMethods8888;
csyang2 1:c0f972361605 1604 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM8888I;
csyang2 1:c0f972361605 1605 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsA565;
csyang2 1:c0f972361605 1606 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsAM565;
csyang2 1:c0f972361605 1607 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsA555;
csyang2 1:c0f972361605 1608 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsAM555;
csyang2 1:c0f972361605 1609
csyang2 1:c0f972361605 1610 #define GUI_COMPRESS_RLE4 0
csyang2 1:c0f972361605 1611 #define GUI_COMPRESS_RLE8 0
csyang2 1:c0f972361605 1612
csyang2 1:c0f972361605 1613 #define GUI_DRAW_RLE4 &GUI_BitmapMethodsRLE4 /* Method table ! */
csyang2 1:c0f972361605 1614 #define GUI_DRAW_RLE8 &GUI_BitmapMethodsRLE8 /* Method table ! */
csyang2 1:c0f972361605 1615 #define GUI_DRAW_RLE16 &GUI_BitmapMethodsRLE16 /* Method table ! */
csyang2 1:c0f972361605 1616 #define GUI_DRAW_RLEM16 &GUI_BitmapMethodsRLEM16 /* Method table ! */
csyang2 1:c0f972361605 1617 #define GUI_DRAW_RLE32 &GUI_BitmapMethodsRLE32 /* Method table ! */
csyang2 1:c0f972361605 1618 #define GUI_DRAW_RLEALPHA &GUI_BitmapMethodsRLEAlpha /* Method table ! */
csyang2 1:c0f972361605 1619
csyang2 1:c0f972361605 1620 #define GUI_DRAW_BMP444_12 &GUI_BitmapMethods444_12 /* Method table ! */
csyang2 1:c0f972361605 1621 #define GUI_DRAW_BMPM444_12 &GUI_BitmapMethodsM444_12 /* Method table ! */
csyang2 1:c0f972361605 1622 #define GUI_DRAW_BMP444_12_1 &GUI_BitmapMethods444_12_1 /* Method table ! */
csyang2 1:c0f972361605 1623 #define GUI_DRAW_BMPM444_12_1 &GUI_BitmapMethodsM444_12_1 /* Method table ! */
csyang2 1:c0f972361605 1624 #define GUI_DRAW_BMP444_16 &GUI_BitmapMethods444_16 /* Method table ! */
csyang2 1:c0f972361605 1625 #define GUI_DRAW_BMPM444_16 &GUI_BitmapMethodsM444_16 /* Method table ! */
csyang2 1:c0f972361605 1626 #define GUI_DRAW_BMP555 &GUI_BitmapMethods555 /* Method table ! */
csyang2 1:c0f972361605 1627 #define GUI_DRAW_BMPM555 &GUI_BitmapMethodsM555 /* Method table ! */
csyang2 1:c0f972361605 1628 #define GUI_DRAW_BMP565 &GUI_BitmapMethods565 /* Method table ! */
csyang2 1:c0f972361605 1629 #define GUI_DRAW_BMPM565 &GUI_BitmapMethodsM565 /* Method table ! */
csyang2 1:c0f972361605 1630 #define GUI_DRAW_BMP24 &GUI_BitmapMethods24 /* Method table ! */
csyang2 1:c0f972361605 1631 #define GUI_DRAW_BMP888 &GUI_BitmapMethods888 /* Method table ! */
csyang2 1:c0f972361605 1632 #define GUI_DRAW_BMPM888 &GUI_BitmapMethodsM888 /* Method table ! */
csyang2 1:c0f972361605 1633 #define GUI_DRAW_BMP8888 &GUI_BitmapMethods8888 /* Method table ! */
csyang2 1:c0f972361605 1634 #define GUI_DRAW_BMPM8888I &GUI_BitmapMethodsM8888I /* Method table ! */
csyang2 1:c0f972361605 1635 #define GUI_DRAW_BMPA555 &GUI_BitmapMethodsA555 /* Method table ! */
csyang2 1:c0f972361605 1636 #define GUI_DRAW_BMPAM555 &GUI_BitmapMethodsAM555 /* Method table ! */
csyang2 1:c0f972361605 1637 #define GUI_DRAW_BMPA565 &GUI_BitmapMethodsA565 /* Method table ! */
csyang2 1:c0f972361605 1638 #define GUI_DRAW_BMPAM565 &GUI_BitmapMethodsAM565 /* Method table ! */
csyang2 1:c0f972361605 1639
csyang2 1:c0f972361605 1640 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop;
csyang2 1:c0f972361605 1641 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_Ext;
csyang2 1:c0f972361605 1642 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_Frm;
csyang2 1:c0f972361605 1643 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA2;
csyang2 1:c0f972361605 1644 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA4;
csyang2 1:c0f972361605 1645 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA2_EXT;
csyang2 1:c0f972361605 1646 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA4_EXT;
csyang2 1:c0f972361605 1647
csyang2 1:c0f972361605 1648 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop;
csyang2 1:c0f972361605 1649 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_Ext;
csyang2 1:c0f972361605 1650 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_Frm;
csyang2 1:c0f972361605 1651 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_AA2_Ext;
csyang2 1:c0f972361605 1652 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_AA4_Ext;
csyang2 1:c0f972361605 1653
csyang2 1:c0f972361605 1654 /*********************************************************************
csyang2 1:c0f972361605 1655 *
csyang2 1:c0f972361605 1656 * GUI_KEY_...
csyang2 1:c0f972361605 1657 *
csyang2 1:c0f972361605 1658 * These ID values are basically meant to be used with widgets
csyang2 1:c0f972361605 1659 * Note that we have chosen the values to be close to existing
csyang2 1:c0f972361605 1660 * "standards", so do not change them unless forced to.
csyang2 1:c0f972361605 1661 *
csyang2 1:c0f972361605 1662 */
csyang2 1:c0f972361605 1663 #define GUI_KEY_BACKSPACE 8 /* ASCII: BACKSPACE Crtl-H */
csyang2 1:c0f972361605 1664 #define GUI_KEY_TAB 9 /* ASCII: TAB Crtl-I */
csyang2 1:c0f972361605 1665 #define GUI_KEY_BACKTAB 10
csyang2 1:c0f972361605 1666 #define GUI_KEY_ENTER 13 /* ASCII: ENTER Crtl-M */
csyang2 1:c0f972361605 1667 #define GUI_KEY_LEFT 16
csyang2 1:c0f972361605 1668 #define GUI_KEY_UP 17
csyang2 1:c0f972361605 1669 #define GUI_KEY_RIGHT 18
csyang2 1:c0f972361605 1670 #define GUI_KEY_DOWN 19
csyang2 1:c0f972361605 1671 #define GUI_KEY_HOME 23
csyang2 1:c0f972361605 1672 #define GUI_KEY_END 24
csyang2 1:c0f972361605 1673 #define GUI_KEY_SHIFT 25
csyang2 1:c0f972361605 1674 #define GUI_KEY_CONTROL 26
csyang2 1:c0f972361605 1675 #define GUI_KEY_ESCAPE 27 /* ASCII: ESCAPE 0x1b */
csyang2 1:c0f972361605 1676 #define GUI_KEY_INSERT 29
csyang2 1:c0f972361605 1677 #define GUI_KEY_DELETE 30
csyang2 1:c0f972361605 1678 #define GUI_KEY_SPACE 32
csyang2 1:c0f972361605 1679 #define GUI_KEY_PGUP 33
csyang2 1:c0f972361605 1680 #define GUI_KEY_PGDOWN 34
csyang2 1:c0f972361605 1681
csyang2 1:c0f972361605 1682 #define GUI_KEY_F1 40
csyang2 1:c0f972361605 1683 #define GUI_KEY_F2 41
csyang2 1:c0f972361605 1684
csyang2 1:c0f972361605 1685 /*********************************************************************
csyang2 1:c0f972361605 1686 *
csyang2 1:c0f972361605 1687 * Dialog item IDs
csyang2 1:c0f972361605 1688 *
csyang2 1:c0f972361605 1689 * The IDs below are arbitrary values. They just have to be unique
csyang2 1:c0f972361605 1690 * within the dialog.
csyang2 1:c0f972361605 1691 *
csyang2 1:c0f972361605 1692 * If you use your own Ids, we recommend to use values above GUI_ID_USER.
csyang2 1:c0f972361605 1693 */
csyang2 1:c0f972361605 1694 #define GUI_ID_OK 1
csyang2 1:c0f972361605 1695 #define GUI_ID_CANCEL 2
csyang2 1:c0f972361605 1696 #define GUI_ID_YES 3
csyang2 1:c0f972361605 1697 #define GUI_ID_NO 4
csyang2 1:c0f972361605 1698 #define GUI_ID_CLOSE 5
csyang2 1:c0f972361605 1699 #define GUI_ID_HELP 6
csyang2 1:c0f972361605 1700 #define GUI_ID_MAXIMIZE 7
csyang2 1:c0f972361605 1701 #define GUI_ID_MINIMIZE 8
csyang2 1:c0f972361605 1702
csyang2 1:c0f972361605 1703 #define GUI_ID_VSCROLL 0xFE
csyang2 1:c0f972361605 1704 #define GUI_ID_HSCROLL 0xFF
csyang2 1:c0f972361605 1705
csyang2 1:c0f972361605 1706 #define GUI_ID_EDIT0 0x100
csyang2 1:c0f972361605 1707 #define GUI_ID_EDIT1 0x101
csyang2 1:c0f972361605 1708 #define GUI_ID_EDIT2 0x102
csyang2 1:c0f972361605 1709 #define GUI_ID_EDIT3 0x103
csyang2 1:c0f972361605 1710 #define GUI_ID_EDIT4 0x104
csyang2 1:c0f972361605 1711 #define GUI_ID_EDIT5 0x105
csyang2 1:c0f972361605 1712 #define GUI_ID_EDIT6 0x106
csyang2 1:c0f972361605 1713 #define GUI_ID_EDIT7 0x107
csyang2 1:c0f972361605 1714 #define GUI_ID_EDIT8 0x108
csyang2 1:c0f972361605 1715 #define GUI_ID_EDIT9 0x109
csyang2 1:c0f972361605 1716
csyang2 1:c0f972361605 1717 #define GUI_ID_LISTBOX0 0x110
csyang2 1:c0f972361605 1718 #define GUI_ID_LISTBOX1 0x111
csyang2 1:c0f972361605 1719 #define GUI_ID_LISTBOX2 0x112
csyang2 1:c0f972361605 1720 #define GUI_ID_LISTBOX3 0x113
csyang2 1:c0f972361605 1721 #define GUI_ID_LISTBOX4 0x114
csyang2 1:c0f972361605 1722 #define GUI_ID_LISTBOX5 0x115
csyang2 1:c0f972361605 1723 #define GUI_ID_LISTBOX6 0x116
csyang2 1:c0f972361605 1724 #define GUI_ID_LISTBOX7 0x117
csyang2 1:c0f972361605 1725 #define GUI_ID_LISTBOX8 0x118
csyang2 1:c0f972361605 1726 #define GUI_ID_LISTBOX9 0x119
csyang2 1:c0f972361605 1727
csyang2 1:c0f972361605 1728 #define GUI_ID_CHECK0 0x120
csyang2 1:c0f972361605 1729 #define GUI_ID_CHECK1 0x121
csyang2 1:c0f972361605 1730 #define GUI_ID_CHECK2 0x122
csyang2 1:c0f972361605 1731 #define GUI_ID_CHECK3 0x123
csyang2 1:c0f972361605 1732 #define GUI_ID_CHECK4 0x124
csyang2 1:c0f972361605 1733 #define GUI_ID_CHECK5 0x125
csyang2 1:c0f972361605 1734 #define GUI_ID_CHECK6 0x126
csyang2 1:c0f972361605 1735 #define GUI_ID_CHECK7 0x127
csyang2 1:c0f972361605 1736 #define GUI_ID_CHECK8 0x128
csyang2 1:c0f972361605 1737 #define GUI_ID_CHECK9 0x129
csyang2 1:c0f972361605 1738
csyang2 1:c0f972361605 1739 #define GUI_ID_SLIDER0 0x130
csyang2 1:c0f972361605 1740 #define GUI_ID_SLIDER1 0x131
csyang2 1:c0f972361605 1741 #define GUI_ID_SLIDER2 0x132
csyang2 1:c0f972361605 1742 #define GUI_ID_SLIDER3 0x133
csyang2 1:c0f972361605 1743 #define GUI_ID_SLIDER4 0x134
csyang2 1:c0f972361605 1744 #define GUI_ID_SLIDER5 0x135
csyang2 1:c0f972361605 1745 #define GUI_ID_SLIDER6 0x136
csyang2 1:c0f972361605 1746 #define GUI_ID_SLIDER7 0x137
csyang2 1:c0f972361605 1747 #define GUI_ID_SLIDER8 0x138
csyang2 1:c0f972361605 1748 #define GUI_ID_SLIDER9 0x139
csyang2 1:c0f972361605 1749
csyang2 1:c0f972361605 1750 #define GUI_ID_SCROLLBAR0 0x140
csyang2 1:c0f972361605 1751 #define GUI_ID_SCROLLBAR1 0x141
csyang2 1:c0f972361605 1752 #define GUI_ID_SCROLLBAR2 0x142
csyang2 1:c0f972361605 1753 #define GUI_ID_SCROLLBAR3 0x143
csyang2 1:c0f972361605 1754
csyang2 1:c0f972361605 1755 #define GUI_ID_RADIO0 0x150
csyang2 1:c0f972361605 1756 #define GUI_ID_RADIO1 0x151
csyang2 1:c0f972361605 1757 #define GUI_ID_RADIO2 0x152
csyang2 1:c0f972361605 1758 #define GUI_ID_RADIO3 0x153
csyang2 1:c0f972361605 1759 #define GUI_ID_RADIO4 0x154
csyang2 1:c0f972361605 1760 #define GUI_ID_RADIO5 0x155
csyang2 1:c0f972361605 1761 #define GUI_ID_RADIO6 0x156
csyang2 1:c0f972361605 1762 #define GUI_ID_RADIO7 0x157
csyang2 1:c0f972361605 1763
csyang2 1:c0f972361605 1764 #define GUI_ID_TEXT0 0x160
csyang2 1:c0f972361605 1765 #define GUI_ID_TEXT1 0x161
csyang2 1:c0f972361605 1766 #define GUI_ID_TEXT2 0x162
csyang2 1:c0f972361605 1767 #define GUI_ID_TEXT3 0x163
csyang2 1:c0f972361605 1768 #define GUI_ID_TEXT4 0x164
csyang2 1:c0f972361605 1769 #define GUI_ID_TEXT5 0x165
csyang2 1:c0f972361605 1770 #define GUI_ID_TEXT6 0x166
csyang2 1:c0f972361605 1771 #define GUI_ID_TEXT7 0x167
csyang2 1:c0f972361605 1772 #define GUI_ID_TEXT8 0x168
csyang2 1:c0f972361605 1773 #define GUI_ID_TEXT9 0x169
csyang2 1:c0f972361605 1774
csyang2 1:c0f972361605 1775 #define GUI_ID_BUTTON0 0x170
csyang2 1:c0f972361605 1776 #define GUI_ID_BUTTON1 0x171
csyang2 1:c0f972361605 1777 #define GUI_ID_BUTTON2 0x172
csyang2 1:c0f972361605 1778 #define GUI_ID_BUTTON3 0x173
csyang2 1:c0f972361605 1779 #define GUI_ID_BUTTON4 0x174
csyang2 1:c0f972361605 1780 #define GUI_ID_BUTTON5 0x175
csyang2 1:c0f972361605 1781 #define GUI_ID_BUTTON6 0x176
csyang2 1:c0f972361605 1782 #define GUI_ID_BUTTON7 0x177
csyang2 1:c0f972361605 1783 #define GUI_ID_BUTTON8 0x178
csyang2 1:c0f972361605 1784 #define GUI_ID_BUTTON9 0x179
csyang2 1:c0f972361605 1785
csyang2 1:c0f972361605 1786 #define GUI_ID_DROPDOWN0 0x180
csyang2 1:c0f972361605 1787 #define GUI_ID_DROPDOWN1 0x181
csyang2 1:c0f972361605 1788 #define GUI_ID_DROPDOWN2 0x182
csyang2 1:c0f972361605 1789 #define GUI_ID_DROPDOWN3 0x183
csyang2 1:c0f972361605 1790
csyang2 1:c0f972361605 1791 #define GUI_ID_MULTIEDIT0 0x190
csyang2 1:c0f972361605 1792 #define GUI_ID_MULTIEDIT1 0x191
csyang2 1:c0f972361605 1793 #define GUI_ID_MULTIEDIT2 0x192
csyang2 1:c0f972361605 1794 #define GUI_ID_MULTIEDIT3 0x193
csyang2 1:c0f972361605 1795
csyang2 1:c0f972361605 1796 #define GUI_ID_LISTVIEW0 0x200
csyang2 1:c0f972361605 1797 #define GUI_ID_LISTVIEW1 0x201
csyang2 1:c0f972361605 1798 #define GUI_ID_LISTVIEW2 0x202
csyang2 1:c0f972361605 1799 #define GUI_ID_LISTVIEW3 0x203
csyang2 1:c0f972361605 1800
csyang2 1:c0f972361605 1801 #define GUI_ID_PROGBAR0 0x210
csyang2 1:c0f972361605 1802 #define GUI_ID_PROGBAR1 0x211
csyang2 1:c0f972361605 1803 #define GUI_ID_PROGBAR2 0x212
csyang2 1:c0f972361605 1804 #define GUI_ID_PROGBAR3 0x213
csyang2 1:c0f972361605 1805
csyang2 1:c0f972361605 1806 #define GUI_ID_GRAPH0 0x220
csyang2 1:c0f972361605 1807 #define GUI_ID_GRAPH1 0x221
csyang2 1:c0f972361605 1808 #define GUI_ID_GRAPH2 0x222
csyang2 1:c0f972361605 1809 #define GUI_ID_GRAPH3 0x223
csyang2 1:c0f972361605 1810
csyang2 1:c0f972361605 1811 #define GUI_ID_MULTIPAGE0 0x230
csyang2 1:c0f972361605 1812 #define GUI_ID_MULTIPAGE1 0x231
csyang2 1:c0f972361605 1813 #define GUI_ID_MULTIPAGE2 0x232
csyang2 1:c0f972361605 1814 #define GUI_ID_MULTIPAGE3 0x233
csyang2 1:c0f972361605 1815
csyang2 1:c0f972361605 1816 #define GUI_ID_TREEVIEW0 0x240
csyang2 1:c0f972361605 1817 #define GUI_ID_TREEVIEW1 0x241
csyang2 1:c0f972361605 1818 #define GUI_ID_TREEVIEW2 0x242
csyang2 1:c0f972361605 1819 #define GUI_ID_TREEVIEW3 0x243
csyang2 1:c0f972361605 1820
csyang2 1:c0f972361605 1821 #define GUI_ID_ICONVIEW0 0x250
csyang2 1:c0f972361605 1822 #define GUI_ID_ICONVIEW1 0x251
csyang2 1:c0f972361605 1823 #define GUI_ID_ICONVIEW2 0x252
csyang2 1:c0f972361605 1824 #define GUI_ID_ICONVIEW3 0x253
csyang2 1:c0f972361605 1825
csyang2 1:c0f972361605 1826 #define GUI_ID_LISTWHEEL0 0x260
csyang2 1:c0f972361605 1827 #define GUI_ID_LISTWHEEL1 0x261
csyang2 1:c0f972361605 1828 #define GUI_ID_LISTWHEEL2 0x262
csyang2 1:c0f972361605 1829 #define GUI_ID_LISTWHEEL3 0x263
csyang2 1:c0f972361605 1830
csyang2 1:c0f972361605 1831 #define GUI_ID_IMAGE0 0x270
csyang2 1:c0f972361605 1832 #define GUI_ID_IMAGE1 0x271
csyang2 1:c0f972361605 1833 #define GUI_ID_IMAGE2 0x272
csyang2 1:c0f972361605 1834 #define GUI_ID_IMAGE3 0x273
csyang2 1:c0f972361605 1835 #define GUI_ID_IMAGE4 0x274
csyang2 1:c0f972361605 1836 #define GUI_ID_IMAGE5 0x275
csyang2 1:c0f972361605 1837 #define GUI_ID_IMAGE6 0x276
csyang2 1:c0f972361605 1838 #define GUI_ID_IMAGE7 0x277
csyang2 1:c0f972361605 1839 #define GUI_ID_IMAGE8 0x278
csyang2 1:c0f972361605 1840 #define GUI_ID_IMAGE9 0x279
csyang2 1:c0f972361605 1841
csyang2 1:c0f972361605 1842 #define GUI_ID_SPINBOX0 0x280
csyang2 1:c0f972361605 1843 #define GUI_ID_SPINBOX1 0x281
csyang2 1:c0f972361605 1844 #define GUI_ID_SPINBOX2 0x282
csyang2 1:c0f972361605 1845 #define GUI_ID_SPINBOX3 0x283
csyang2 1:c0f972361605 1846 #define GUI_ID_SPINBOX4 0x284
csyang2 1:c0f972361605 1847 #define GUI_ID_SPINBOX5 0x285
csyang2 1:c0f972361605 1848 #define GUI_ID_SPINBOX6 0x286
csyang2 1:c0f972361605 1849 #define GUI_ID_SPINBOX7 0x287
csyang2 1:c0f972361605 1850 #define GUI_ID_SPINBOX8 0x288
csyang2 1:c0f972361605 1851 #define GUI_ID_SPINBOX9 0x289
csyang2 1:c0f972361605 1852
csyang2 1:c0f972361605 1853 #define GUI_ID_CALENDAR0 0x290
csyang2 1:c0f972361605 1854
csyang2 1:c0f972361605 1855 #define GUI_ID_KNOB0 0x300
csyang2 1:c0f972361605 1856 #define GUI_ID_KNOB1 0x301
csyang2 1:c0f972361605 1857 #define GUI_ID_KNOB2 0x302
csyang2 1:c0f972361605 1858 #define GUI_ID_KNOB3 0x303
csyang2 1:c0f972361605 1859 #define GUI_ID_KNOB4 0x304
csyang2 1:c0f972361605 1860 #define GUI_ID_KNOB5 0x305
csyang2 1:c0f972361605 1861 #define GUI_ID_KNOB6 0x306
csyang2 1:c0f972361605 1862 #define GUI_ID_KNOB7 0x307
csyang2 1:c0f972361605 1863 #define GUI_ID_KNOB8 0x308
csyang2 1:c0f972361605 1864 #define GUI_ID_KNOB9 0x309
csyang2 1:c0f972361605 1865
csyang2 1:c0f972361605 1866 #define GUI_ID_SWIPELIST0 0x320
csyang2 1:c0f972361605 1867 #define GUI_ID_SWIPELIST1 0x321
csyang2 1:c0f972361605 1868 #define GUI_ID_SWIPELIST2 0x322
csyang2 1:c0f972361605 1869
csyang2 1:c0f972361605 1870 #define GUI_ID_USER 0x800
csyang2 1:c0f972361605 1871
csyang2 1:c0f972361605 1872 /*********************************************************************
csyang2 1:c0f972361605 1873 *
csyang2 1:c0f972361605 1874 * Mouse buttons
csyang2 1:c0f972361605 1875 */
csyang2 1:c0f972361605 1876 #define GUI_LBUTTON (1 << 0) /* Left button */
csyang2 1:c0f972361605 1877 #define GUI_RBUTTON (1 << 1) /* Right button */
csyang2 1:c0f972361605 1878 #define GUI_MBUTTON (1 << 2) /* Middle button */
csyang2 1:c0f972361605 1879 #define GUI_DBUTTON (1 << 7) /* Double-click button */
csyang2 1:c0f972361605 1880
csyang2 1:c0f972361605 1881 /*********************************************************************
csyang2 1:c0f972361605 1882 *
csyang2 1:c0f972361605 1883 * Text styles
csyang2 1:c0f972361605 1884 */
csyang2 1:c0f972361605 1885 #define GUI_TS_NORMAL (0)
csyang2 1:c0f972361605 1886 #define GUI_TS_UNDERLINE (1 << 0)
csyang2 1:c0f972361605 1887 #define GUI_TS_STRIKETHRU (1 << 1)
csyang2 1:c0f972361605 1888 #define GUI_TS_OVERLINE (1 << 2)
csyang2 1:c0f972361605 1889
csyang2 1:c0f972361605 1890 /*********************************************************************
csyang2 1:c0f972361605 1891 *
csyang2 1:c0f972361605 1892 * Line styles
csyang2 1:c0f972361605 1893 */
csyang2 1:c0f972361605 1894 #define GUI_LS_SOLID (0)
csyang2 1:c0f972361605 1895 #define GUI_LS_DASH (1)
csyang2 1:c0f972361605 1896 #define GUI_LS_DOT (2)
csyang2 1:c0f972361605 1897 #define GUI_LS_DASHDOT (3)
csyang2 1:c0f972361605 1898 #define GUI_LS_DASHDOTDOT (4)
csyang2 1:c0f972361605 1899
csyang2 1:c0f972361605 1900 /*********************************************************************
csyang2 1:c0f972361605 1901 *
csyang2 1:c0f972361605 1902 * Pen shapes
csyang2 1:c0f972361605 1903 */
csyang2 1:c0f972361605 1904 #define GUI_PS_ROUND (0)
csyang2 1:c0f972361605 1905 #define GUI_PS_FLAT (1)
csyang2 1:c0f972361605 1906 #define GUI_PS_SQUARE (2)
csyang2 1:c0f972361605 1907
csyang2 1:c0f972361605 1908 /*********************************************************************
csyang2 1:c0f972361605 1909 *
csyang2 1:c0f972361605 1910 * Standard colors
csyang2 1:c0f972361605 1911 */
csyang2 1:c0f972361605 1912 #define GUI_INVALID_COLOR ((((U32)GUI_TRANS_BYTE) << 24) | 0x12345678ul) /* Invalid color (transparency + determined color) */
csyang2 1:c0f972361605 1913
csyang2 1:c0f972361605 1914 #if (GUI_USE_ARGB)
csyang2 1:c0f972361605 1915 #define GUI_MAKE_COLOR(ABGR) (((((U32)ABGR) & 0xFF000000ul) ^ 0xFF000000ul) | ((((U32)ABGR) & 0x00FF0000ul) >> 16) | (((U32)ABGR) & 0x0000FF00ul) | ((((U32)ABGR) & 0x000000FFul) << 16))
csyang2 1:c0f972361605 1916 #define GUI_MAKE_TRANS(Alpha) (255 - (Alpha))
csyang2 1:c0f972361605 1917 #else
csyang2 1:c0f972361605 1918 #define GUI_MAKE_COLOR(ABGR) (ABGR)
csyang2 1:c0f972361605 1919 #define GUI_MAKE_TRANS(Alpha) (Alpha)
csyang2 1:c0f972361605 1920 #endif
csyang2 1:c0f972361605 1921
csyang2 1:c0f972361605 1922 #if (GUI_USE_ARGB)
csyang2 1:c0f972361605 1923 #define GUI_TRANS_BYTE 0x00
csyang2 1:c0f972361605 1924 #else
csyang2 1:c0f972361605 1925 #define GUI_TRANS_BYTE 0xFF
csyang2 1:c0f972361605 1926 #endif
csyang2 1:c0f972361605 1927
csyang2 1:c0f972361605 1928 #define GUI_BLUE GUI_MAKE_COLOR(0x00FF0000)
csyang2 1:c0f972361605 1929 #define GUI_GREEN GUI_MAKE_COLOR(0x0000FF00)
csyang2 1:c0f972361605 1930 #define GUI_RED GUI_MAKE_COLOR(0x000000FF)
csyang2 1:c0f972361605 1931 #define GUI_CYAN GUI_MAKE_COLOR(0x00FFFF00)
csyang2 1:c0f972361605 1932 #define GUI_MAGENTA GUI_MAKE_COLOR(0x00FF00FF)
csyang2 1:c0f972361605 1933 #define GUI_YELLOW GUI_MAKE_COLOR(0x0000FFFF)
csyang2 1:c0f972361605 1934 #define GUI_LIGHTBLUE GUI_MAKE_COLOR(0x00FF8080)
csyang2 1:c0f972361605 1935 #define GUI_LIGHTGREEN GUI_MAKE_COLOR(0x0080FF80)
csyang2 1:c0f972361605 1936 #define GUI_LIGHTRED GUI_MAKE_COLOR(0x008080FF)
csyang2 1:c0f972361605 1937 #define GUI_LIGHTCYAN GUI_MAKE_COLOR(0x00FFFF80)
csyang2 1:c0f972361605 1938 #define GUI_LIGHTMAGENTA GUI_MAKE_COLOR(0x00FF80FF)
csyang2 1:c0f972361605 1939 #define GUI_LIGHTYELLOW GUI_MAKE_COLOR(0x0080FFFF)
csyang2 1:c0f972361605 1940 #define GUI_DARKBLUE GUI_MAKE_COLOR(0x00800000)
csyang2 1:c0f972361605 1941 #define GUI_DARKGREEN GUI_MAKE_COLOR(0x00008000)
csyang2 1:c0f972361605 1942 #define GUI_DARKRED GUI_MAKE_COLOR(0x00000080)
csyang2 1:c0f972361605 1943 #define GUI_DARKCYAN GUI_MAKE_COLOR(0x00808000)
csyang2 1:c0f972361605 1944 #define GUI_DARKMAGENTA GUI_MAKE_COLOR(0x00800080)
csyang2 1:c0f972361605 1945 #define GUI_DARKYELLOW GUI_MAKE_COLOR(0x00008080)
csyang2 1:c0f972361605 1946 #define GUI_WHITE GUI_MAKE_COLOR(0x00FFFFFF)
csyang2 1:c0f972361605 1947 #define GUI_LIGHTGRAY GUI_MAKE_COLOR(0x00D3D3D3)
csyang2 1:c0f972361605 1948 #define GUI_GRAY GUI_MAKE_COLOR(0x00808080)
csyang2 1:c0f972361605 1949 #define GUI_DARKGRAY GUI_MAKE_COLOR(0x00404040)
csyang2 1:c0f972361605 1950 #define GUI_BLACK GUI_MAKE_COLOR(0x00000000)
csyang2 1:c0f972361605 1951 #define GUI_BROWN GUI_MAKE_COLOR(0x002A2AA5)
csyang2 1:c0f972361605 1952 #define GUI_ORANGE GUI_MAKE_COLOR(0x0000A5FF)
csyang2 1:c0f972361605 1953 #define GUI_TRANSPARENT GUI_MAKE_COLOR(0xFF000000)
csyang2 1:c0f972361605 1954
csyang2 1:c0f972361605 1955 #define GUI_GRAY_3F GUI_MAKE_COLOR(0x003F3F3F)
csyang2 1:c0f972361605 1956 #define GUI_GRAY_50 GUI_MAKE_COLOR(0x00505050)
csyang2 1:c0f972361605 1957 #define GUI_GRAY_55 GUI_MAKE_COLOR(0x00555555)
csyang2 1:c0f972361605 1958 #define GUI_GRAY_60 GUI_MAKE_COLOR(0x00606060)
csyang2 1:c0f972361605 1959 #define GUI_GRAY_7C GUI_MAKE_COLOR(0x007C7C7C)
csyang2 1:c0f972361605 1960 #define GUI_GRAY_9A GUI_MAKE_COLOR(0x009A9A9A)
csyang2 1:c0f972361605 1961 #define GUI_GRAY_AA GUI_MAKE_COLOR(0x00AAAAAA)
csyang2 1:c0f972361605 1962 #define GUI_GRAY_C0 GUI_MAKE_COLOR(0x00C0C0C0)
csyang2 1:c0f972361605 1963 #define GUI_GRAY_C8 GUI_MAKE_COLOR(0x00C8C8C8)
csyang2 1:c0f972361605 1964 #define GUI_GRAY_D0 GUI_MAKE_COLOR(0x00D0D0D0)
csyang2 1:c0f972361605 1965 #define GUI_GRAY_E7 GUI_MAKE_COLOR(0x00E7E7E7)
csyang2 1:c0f972361605 1966 #define GUI_BLUE_98 GUI_MAKE_COLOR(0x00980000)
csyang2 1:c0f972361605 1967
csyang2 1:c0f972361605 1968 /*********************************************************************
csyang2 1:c0f972361605 1969 *
csyang2 1:c0f972361605 1970 * MultiTouch-Support
csyang2 1:c0f972361605 1971 */
csyang2 1:c0f972361605 1972 //
csyang2 1:c0f972361605 1973 // Defines
csyang2 1:c0f972361605 1974 //
csyang2 1:c0f972361605 1975 #define GUI_MTOUCH_FLAG_DOWN (1 << 0)
csyang2 1:c0f972361605 1976 #define GUI_MTOUCH_FLAG_MOVE (1 << 1)
csyang2 1:c0f972361605 1977 #define GUI_MTOUCH_FLAG_UP (1 << 2)
csyang2 1:c0f972361605 1978
csyang2 1:c0f972361605 1979 //
csyang2 1:c0f972361605 1980 // Variables
csyang2 1:c0f972361605 1981 //
csyang2 1:c0f972361605 1982 extern T_GUI_MTOUCH_STOREEVENT GUI_MTOUCH__pStoreEvent;
csyang2 1:c0f972361605 1983
csyang2 1:c0f972361605 1984 //
csyang2 1:c0f972361605 1985 // Interface
csyang2 1:c0f972361605 1986 //
csyang2 1:c0f972361605 1987 void GUI_MTOUCH_Enable (int OnOff);
csyang2 1:c0f972361605 1988 int GUI_MTOUCH_GetEvent (GUI_MTOUCH_EVENT * pEvent);
csyang2 1:c0f972361605 1989 int GUI_MTOUCH_GetTouchInput (GUI_MTOUCH_EVENT * pEvent, GUI_MTOUCH_INPUT * pBuffer, unsigned Index);
csyang2 1:c0f972361605 1990 int GUI_MTOUCH_IsEmpty (void);
csyang2 1:c0f972361605 1991 void GUI_MTOUCH_SetOrientation (int Orientation);
csyang2 1:c0f972361605 1992 void GUI_MTOUCH_SetOrientationEx(int Orientation, int LayerIndex);
csyang2 1:c0f972361605 1993 void GUI_MTOUCH_StoreEvent (GUI_MTOUCH_EVENT * pEvent, GUI_MTOUCH_INPUT * pInput);
csyang2 1:c0f972361605 1994
csyang2 1:c0f972361605 1995 /*********************************************************************
csyang2 1:c0f972361605 1996 *
csyang2 1:c0f972361605 1997 * Coordinates used in touch driver
csyang2 1:c0f972361605 1998 */
csyang2 1:c0f972361605 1999 #define GUI_COORD_X 0
csyang2 1:c0f972361605 2000 #define GUI_COORD_Y 1
csyang2 1:c0f972361605 2001
csyang2 1:c0f972361605 2002 /*********************************************************************
csyang2 1:c0f972361605 2003 *
csyang2 1:c0f972361605 2004 * Addresses of standard fonts
csyang2 1:c0f972361605 2005 */
csyang2 1:c0f972361605 2006 //
csyang2 1:c0f972361605 2007 // Proportional fonts
csyang2 1:c0f972361605 2008 //
csyang2 1:c0f972361605 2009 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8_ASCII, GUI_Font8_1;
csyang2 1:c0f972361605 2010 extern GUI_CONST_STORAGE GUI_FONT GUI_Font10S_ASCII, GUI_Font10S_1;
csyang2 1:c0f972361605 2011 extern GUI_CONST_STORAGE GUI_FONT GUI_Font10_ASCII, GUI_Font10_1;
csyang2 1:c0f972361605 2012 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13_ASCII, GUI_Font13_1;
csyang2 1:c0f972361605 2013 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13B_ASCII, GUI_Font13B_1;
csyang2 1:c0f972361605 2014 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13H_ASCII, GUI_Font13H_1;
csyang2 1:c0f972361605 2015 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13HB_ASCII, GUI_Font13HB_1;
csyang2 1:c0f972361605 2016 extern GUI_CONST_STORAGE GUI_FONT GUI_Font16_ASCII, GUI_Font16_1, GUI_Font16_HK, GUI_Font16_1HK;
csyang2 1:c0f972361605 2017 extern GUI_CONST_STORAGE GUI_FONT GUI_Font16B_ASCII, GUI_Font16B_1;
csyang2 1:c0f972361605 2018 extern GUI_CONST_STORAGE GUI_FONT GUI_Font20_ASCII, GUI_Font20_1;
csyang2 1:c0f972361605 2019 extern GUI_CONST_STORAGE GUI_FONT GUI_Font20B_ASCII, GUI_Font20B_1;
csyang2 1:c0f972361605 2020 extern GUI_CONST_STORAGE GUI_FONT GUI_Font24_ASCII, GUI_Font24_1;
csyang2 1:c0f972361605 2021 extern GUI_CONST_STORAGE GUI_FONT GUI_Font24B_ASCII, GUI_Font24B_1;
csyang2 1:c0f972361605 2022 extern GUI_CONST_STORAGE GUI_FONT GUI_Font32_ASCII, GUI_Font32_1;
csyang2 1:c0f972361605 2023 extern GUI_CONST_STORAGE GUI_FONT GUI_Font32B_ASCII, GUI_Font32B_1;
csyang2 1:c0f972361605 2024
csyang2 1:c0f972361605 2025 //
csyang2 1:c0f972361605 2026 // Proportional fonts, framed
csyang2 1:c0f972361605 2027 //
csyang2 1:c0f972361605 2028 extern GUI_CONST_STORAGE GUI_FONT GUI_Font20F_ASCII;
csyang2 1:c0f972361605 2029
csyang2 1:c0f972361605 2030 //
csyang2 1:c0f972361605 2031 // Monospaced
csyang2 1:c0f972361605 2032 //
csyang2 1:c0f972361605 2033 extern GUI_CONST_STORAGE GUI_FONT GUI_Font4x6;
csyang2 1:c0f972361605 2034 extern GUI_CONST_STORAGE GUI_FONT GUI_Font6x8, GUI_Font6x9;
csyang2 1:c0f972361605 2035 extern GUI_CONST_STORAGE GUI_FONT GUI_Font6x8_ASCII, GUI_Font6x8_1;
csyang2 1:c0f972361605 2036 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x8, GUI_Font8x9;
csyang2 1:c0f972361605 2037 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x8_ASCII, GUI_Font8x8_1;
csyang2 1:c0f972361605 2038 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x10_ASCII;
csyang2 1:c0f972361605 2039 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x12_ASCII;
csyang2 1:c0f972361605 2040 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x13_ASCII, GUI_Font8x13_1;
csyang2 1:c0f972361605 2041 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x15B_ASCII, GUI_Font8x15B_1;
csyang2 1:c0f972361605 2042 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16, GUI_Font8x17, GUI_Font8x18;
csyang2 1:c0f972361605 2043 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16x1x2, GUI_Font8x16x2x2, GUI_Font8x16x3x3;
csyang2 1:c0f972361605 2044 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16_ASCII, GUI_Font8x16_1;
csyang2 1:c0f972361605 2045
csyang2 1:c0f972361605 2046 //
csyang2 1:c0f972361605 2047 // Digits
csyang2 1:c0f972361605 2048 //
csyang2 1:c0f972361605 2049 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD24x32;
csyang2 1:c0f972361605 2050 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD32;
csyang2 1:c0f972361605 2051 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD36x48;
csyang2 1:c0f972361605 2052 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD48;
csyang2 1:c0f972361605 2053 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD48x64;
csyang2 1:c0f972361605 2054 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD64;
csyang2 1:c0f972361605 2055 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD60x80;
csyang2 1:c0f972361605 2056 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD80;
csyang2 1:c0f972361605 2057
csyang2 1:c0f972361605 2058 //
csyang2 1:c0f972361605 2059 // Comic fonts
csyang2 1:c0f972361605 2060 //
csyang2 1:c0f972361605 2061 extern GUI_CONST_STORAGE GUI_FONT GUI_FontComic18B_ASCII, GUI_FontComic18B_1;
csyang2 1:c0f972361605 2062 extern GUI_CONST_STORAGE GUI_FONT GUI_FontComic24B_ASCII, GUI_FontComic24B_1;
csyang2 1:c0f972361605 2063
csyang2 1:c0f972361605 2064 /*********************************************************************
csyang2 1:c0f972361605 2065 *
csyang2 1:c0f972361605 2066 * Macros to be used
csyang2 1:c0f972361605 2067 */
csyang2 1:c0f972361605 2068 //
csyang2 1:c0f972361605 2069 // Proportional fonts
csyang2 1:c0f972361605 2070 //
csyang2 1:c0f972361605 2071 #define GUI_FONT_8_ASCII &GUI_Font8_ASCII
csyang2 1:c0f972361605 2072 #define GUI_FONT_8_1 &GUI_Font8_1
csyang2 1:c0f972361605 2073 #define GUI_FONT_10S_ASCII &GUI_Font10S_ASCII
csyang2 1:c0f972361605 2074 #define GUI_FONT_10S_1 &GUI_Font10S_1
csyang2 1:c0f972361605 2075 #define GUI_FONT_10_ASCII &GUI_Font10_ASCII
csyang2 1:c0f972361605 2076 #define GUI_FONT_10_1 &GUI_Font10_1
csyang2 1:c0f972361605 2077 #define GUI_FONT_13_ASCII &GUI_Font13_ASCII
csyang2 1:c0f972361605 2078 #define GUI_FONT_13_1 &GUI_Font13_1
csyang2 1:c0f972361605 2079 #define GUI_FONT_13B_ASCII &GUI_Font13B_ASCII
csyang2 1:c0f972361605 2080 #define GUI_FONT_13B_1 &GUI_Font13B_1
csyang2 1:c0f972361605 2081 #define GUI_FONT_13H_ASCII &GUI_Font13H_ASCII
csyang2 1:c0f972361605 2082 #define GUI_FONT_13H_1 &GUI_Font13H_1
csyang2 1:c0f972361605 2083 #define GUI_FONT_13HB_ASCII &GUI_Font13HB_ASCII
csyang2 1:c0f972361605 2084 #define GUI_FONT_13HB_1 &GUI_Font13HB_1
csyang2 1:c0f972361605 2085 #define GUI_FONT_16_ASCII &GUI_Font16_ASCII
csyang2 1:c0f972361605 2086 #define GUI_FONT_16_1 &GUI_Font16_1
csyang2 1:c0f972361605 2087 #define GUI_FONT_16_HK &GUI_Font16_HK
csyang2 1:c0f972361605 2088 #define GUI_FONT_16_1HK &GUI_Font16_1HK
csyang2 1:c0f972361605 2089 #define GUI_FONT_16B_ASCII &GUI_Font16B_ASCII
csyang2 1:c0f972361605 2090 #define GUI_FONT_16B_1 &GUI_Font16B_1
csyang2 1:c0f972361605 2091 #define GUI_FONT_20_ASCII &GUI_Font20_ASCII
csyang2 1:c0f972361605 2092 #define GUI_FONT_20_1 &GUI_Font20_1
csyang2 1:c0f972361605 2093 #define GUI_FONT_20B_ASCII &GUI_Font20B_ASCII
csyang2 1:c0f972361605 2094 #define GUI_FONT_20B_1 &GUI_Font20B_1
csyang2 1:c0f972361605 2095 #define GUI_FONT_24_ASCII &GUI_Font24_ASCII
csyang2 1:c0f972361605 2096 #define GUI_FONT_24_1 &GUI_Font24_1
csyang2 1:c0f972361605 2097 #define GUI_FONT_24B_ASCII &GUI_Font24B_ASCII
csyang2 1:c0f972361605 2098 #define GUI_FONT_24B_1 &GUI_Font24B_1
csyang2 1:c0f972361605 2099 #define GUI_FONT_32_ASCII &GUI_Font32_ASCII
csyang2 1:c0f972361605 2100 #define GUI_FONT_32_1 &GUI_Font32_1
csyang2 1:c0f972361605 2101 #define GUI_FONT_32B_ASCII &GUI_Font32B_ASCII
csyang2 1:c0f972361605 2102 #define GUI_FONT_32B_1 &GUI_Font32B_1
csyang2 1:c0f972361605 2103
csyang2 1:c0f972361605 2104 //
csyang2 1:c0f972361605 2105 // Proportional fonts, framed
csyang2 1:c0f972361605 2106 //
csyang2 1:c0f972361605 2107 #define GUI_FONT_20F_ASCII &GUI_Font20F_ASCII
csyang2 1:c0f972361605 2108
csyang2 1:c0f972361605 2109 //
csyang2 1:c0f972361605 2110 // Monospaced
csyang2 1:c0f972361605 2111 //
csyang2 1:c0f972361605 2112 #define GUI_FONT_4X6 &GUI_Font4x6
csyang2 1:c0f972361605 2113 #define GUI_FONT_6X8 &GUI_Font6x8
csyang2 1:c0f972361605 2114 #define GUI_FONT_6X8_ASCII &GUI_Font6x8_ASCII
csyang2 1:c0f972361605 2115 #define GUI_FONT_6X8_1 &GUI_Font6x8_1
csyang2 1:c0f972361605 2116 #define GUI_FONT_6X9 &GUI_Font6x9
csyang2 1:c0f972361605 2117 #define GUI_FONT_8X8 &GUI_Font8x8
csyang2 1:c0f972361605 2118 #define GUI_FONT_8X8_ASCII &GUI_Font8x8_ASCII
csyang2 1:c0f972361605 2119 #define GUI_FONT_8X8_1 &GUI_Font8x8_1
csyang2 1:c0f972361605 2120 #define GUI_FONT_8X9 &GUI_Font8x9
csyang2 1:c0f972361605 2121 #define GUI_FONT_8X10_ASCII &GUI_Font8x10_ASCII
csyang2 1:c0f972361605 2122 #define GUI_FONT_8X12_ASCII &GUI_Font8x12_ASCII
csyang2 1:c0f972361605 2123 #define GUI_FONT_8X13_ASCII &GUI_Font8x13_ASCII
csyang2 1:c0f972361605 2124 #define GUI_FONT_8X13_1 &GUI_Font8x13_1
csyang2 1:c0f972361605 2125 #define GUI_FONT_8X15B_ASCII &GUI_Font8x15B_ASCII
csyang2 1:c0f972361605 2126 #define GUI_FONT_8X15B_1 &GUI_Font8x15B_1
csyang2 1:c0f972361605 2127 #define GUI_FONT_8X16 &GUI_Font8x16
csyang2 1:c0f972361605 2128 #define GUI_FONT_8X17 &GUI_Font8x17
csyang2 1:c0f972361605 2129 #define GUI_FONT_8X18 &GUI_Font8x18
csyang2 1:c0f972361605 2130 #define GUI_FONT_8X16X1X2 &GUI_Font8x16x1x2
csyang2 1:c0f972361605 2131 #define GUI_FONT_8X16X2X2 &GUI_Font8x16x2x2
csyang2 1:c0f972361605 2132 #define GUI_FONT_8X16X3X3 &GUI_Font8x16x3x3
csyang2 1:c0f972361605 2133 #define GUI_FONT_8X16_ASCII &GUI_Font8x16_ASCII
csyang2 1:c0f972361605 2134 #define GUI_FONT_8X16_1 &GUI_Font8x16_1
csyang2 1:c0f972361605 2135
csyang2 1:c0f972361605 2136 //
csyang2 1:c0f972361605 2137 // Digits
csyang2 1:c0f972361605 2138 //
csyang2 1:c0f972361605 2139 #define GUI_FONT_D24X32 &GUI_FontD24x32
csyang2 1:c0f972361605 2140 #define GUI_FONT_D32 &GUI_FontD32
csyang2 1:c0f972361605 2141 #define GUI_FONT_D36X48 &GUI_FontD36x48
csyang2 1:c0f972361605 2142 #define GUI_FONT_D48 &GUI_FontD48
csyang2 1:c0f972361605 2143 #define GUI_FONT_D48X64 &GUI_FontD48x64
csyang2 1:c0f972361605 2144 #define GUI_FONT_D64 &GUI_FontD64
csyang2 1:c0f972361605 2145 #define GUI_FONT_D60X80 &GUI_FontD60x80
csyang2 1:c0f972361605 2146 #define GUI_FONT_D80 &GUI_FontD80
csyang2 1:c0f972361605 2147
csyang2 1:c0f972361605 2148 //
csyang2 1:c0f972361605 2149 // Comic fonts
csyang2 1:c0f972361605 2150 //
csyang2 1:c0f972361605 2151 #define GUI_FONT_COMIC18B_ASCII &GUI_FontComic18B_ASCII
csyang2 1:c0f972361605 2152 #define GUI_FONT_COMIC18B_1 &GUI_FontComic18B_1
csyang2 1:c0f972361605 2153 #define GUI_FONT_COMIC24B_ASCII &GUI_FontComic24B_ASCII
csyang2 1:c0f972361605 2154 #define GUI_FONT_COMIC24B_1 &GUI_FontComic24B_1
csyang2 1:c0f972361605 2155
csyang2 1:c0f972361605 2156 /*********************************************************************
csyang2 1:c0f972361605 2157 *
csyang2 1:c0f972361605 2158 * Text and drawing modes
csyang2 1:c0f972361605 2159 *
csyang2 1:c0f972361605 2160 * These defines come in two flavors: the long version (.._DRAWMODE_..)
csyang2 1:c0f972361605 2161 * and the short ones (.._DM_..). They are identical, feel free to use
csyang2 1:c0f972361605 2162 * which ever one you like best.
csyang2 1:c0f972361605 2163 */
csyang2 1:c0f972361605 2164 #define GUI_DRAWMODE_NORMAL LCD_DRAWMODE_NORMAL
csyang2 1:c0f972361605 2165 #define GUI_DRAWMODE_XOR LCD_DRAWMODE_XOR
csyang2 1:c0f972361605 2166 #define GUI_DRAWMODE_TRANS LCD_DRAWMODE_TRANS
csyang2 1:c0f972361605 2167 #define GUI_DRAWMODE_REV LCD_DRAWMODE_REV
csyang2 1:c0f972361605 2168 #define GUI_DM_NORMAL LCD_DRAWMODE_NORMAL
csyang2 1:c0f972361605 2169 #define GUI_DM_XOR LCD_DRAWMODE_XOR
csyang2 1:c0f972361605 2170 #define GUI_DM_TRANS LCD_DRAWMODE_TRANS
csyang2 1:c0f972361605 2171 #define GUI_DM_REV LCD_DRAWMODE_REV
csyang2 1:c0f972361605 2172
csyang2 1:c0f972361605 2173 #define GUI_TEXTMODE_NORMAL LCD_DRAWMODE_NORMAL
csyang2 1:c0f972361605 2174 #define GUI_TEXTMODE_XOR LCD_DRAWMODE_XOR
csyang2 1:c0f972361605 2175 #define GUI_TEXTMODE_TRANS LCD_DRAWMODE_TRANS
csyang2 1:c0f972361605 2176 #define GUI_TEXTMODE_REV LCD_DRAWMODE_REV
csyang2 1:c0f972361605 2177 #define GUI_TM_NORMAL LCD_DRAWMODE_NORMAL
csyang2 1:c0f972361605 2178 #define GUI_TM_XOR LCD_DRAWMODE_XOR
csyang2 1:c0f972361605 2179 #define GUI_TM_TRANS LCD_DRAWMODE_TRANS
csyang2 1:c0f972361605 2180 #define GUI_TM_REV LCD_DRAWMODE_REV
csyang2 1:c0f972361605 2181
csyang2 1:c0f972361605 2182 /* Text alignment flags, horizontal */
csyang2 1:c0f972361605 2183 #define GUI_TA_LEFT (0)
csyang2 1:c0f972361605 2184 #define GUI_TA_HORIZONTAL (3 << 0)
csyang2 1:c0f972361605 2185 #define GUI_TA_RIGHT (1 << 0)
csyang2 1:c0f972361605 2186 #define GUI_TA_CENTER (2 << 0)
csyang2 1:c0f972361605 2187 #define GUI_TA_HCENTER GUI_TA_CENTER /* easier to remember :-) */
csyang2 1:c0f972361605 2188
csyang2 1:c0f972361605 2189 /* Text alignment flags, vertical */
csyang2 1:c0f972361605 2190 #define GUI_TA_TOP (0)
csyang2 1:c0f972361605 2191 #define GUI_TA_VERTICAL (3 << 2)
csyang2 1:c0f972361605 2192 #define GUI_TA_BOTTOM (1 << 2)
csyang2 1:c0f972361605 2193 #define GUI_TA_BASELINE (2 << 2)
csyang2 1:c0f972361605 2194 #define GUI_TA_VCENTER (3 << 2)
csyang2 1:c0f972361605 2195
csyang2 1:c0f972361605 2196 /* General alignment flags */
csyang2 1:c0f972361605 2197 #define GUI_ALIGN_LEFT GUI_TA_LEFT
csyang2 1:c0f972361605 2198 #define GUI_ALIGN_HCENTER GUI_TA_HCENTER
csyang2 1:c0f972361605 2199 #define GUI_ALIGN_RIGHT GUI_TA_RIGHT
csyang2 1:c0f972361605 2200 #define GUI_ALIGN_TOP GUI_TA_TOP
csyang2 1:c0f972361605 2201 #define GUI_ALIGN_VCENTER GUI_TA_VCENTER
csyang2 1:c0f972361605 2202 #define GUI_ALIGN_BOTTOM GUI_TA_BOTTOM
csyang2 1:c0f972361605 2203 #define GUI_ALIGN_HORIZONTAL GUI_TA_HORIZONTAL
csyang2 1:c0f972361605 2204 #define GUI_ALIGN_VERTICAL GUI_TA_VERTICAL
csyang2 1:c0f972361605 2205
csyang2 1:c0f972361605 2206 /* General orientation flags */
csyang2 1:c0f972361605 2207 #define GUI_MIRROR_X (1 << 0)
csyang2 1:c0f972361605 2208 #define GUI_MIRROR_Y (1 << 1)
csyang2 1:c0f972361605 2209 #define GUI_SWAP_XY (1 << 2)
csyang2 1:c0f972361605 2210
csyang2 1:c0f972361605 2211 #define GUI_ROTATION_0 (0)
csyang2 1:c0f972361605 2212 #define GUI_ROTATION_CW (GUI_MIRROR_X | GUI_SWAP_XY)
csyang2 1:c0f972361605 2213 #define GUI_ROTATION_180 (GUI_MIRROR_X | GUI_MIRROR_Y)
csyang2 1:c0f972361605 2214 #define GUI_ROTATION_CCW (GUI_MIRROR_Y | GUI_SWAP_XY)
csyang2 1:c0f972361605 2215
csyang2 1:c0f972361605 2216 /*********************************************************************
csyang2 1:c0f972361605 2217 *
csyang2 1:c0f972361605 2218 * Min/Max coordinates
csyang2 1:c0f972361605 2219 *
csyang2 1:c0f972361605 2220 * Define minimum and maximum coordinates in x and y
csyang2 1:c0f972361605 2221 */
csyang2 1:c0f972361605 2222 #define GUI_XMIN -16383
csyang2 1:c0f972361605 2223 #define GUI_XMAX 16383
csyang2 1:c0f972361605 2224 #define GUI_YMIN -16383
csyang2 1:c0f972361605 2225 #define GUI_YMAX 16383
csyang2 1:c0f972361605 2226
csyang2 1:c0f972361605 2227 /*********************************************************************
csyang2 1:c0f972361605 2228 *
csyang2 1:c0f972361605 2229 * Defines for constants
csyang2 1:c0f972361605 2230 */
csyang2 1:c0f972361605 2231 #define ________ 0x0
csyang2 1:c0f972361605 2232 #define _______X 0x1
csyang2 1:c0f972361605 2233 #define ______X_ 0x2
csyang2 1:c0f972361605 2234 #define ______XX 0x3
csyang2 1:c0f972361605 2235 #define _____X__ 0x4
csyang2 1:c0f972361605 2236 #define _____X_X 0x5
csyang2 1:c0f972361605 2237 #define _____XX_ 0x6
csyang2 1:c0f972361605 2238 #define _____XXX 0x7
csyang2 1:c0f972361605 2239 #define ____X___ 0x8
csyang2 1:c0f972361605 2240 #define ____X__X 0x9
csyang2 1:c0f972361605 2241 #define ____X_X_ 0xa
csyang2 1:c0f972361605 2242 #define ____X_XX 0xb
csyang2 1:c0f972361605 2243 #define ____XX__ 0xc
csyang2 1:c0f972361605 2244 #define ____XX_X 0xd
csyang2 1:c0f972361605 2245 #define ____XXX_ 0xe
csyang2 1:c0f972361605 2246 #define ____XXXX 0xf
csyang2 1:c0f972361605 2247 #define ___X____ 0x10
csyang2 1:c0f972361605 2248 #define ___X___X 0x11
csyang2 1:c0f972361605 2249 #define ___X__X_ 0x12
csyang2 1:c0f972361605 2250 #define ___X__XX 0x13
csyang2 1:c0f972361605 2251 #define ___X_X__ 0x14
csyang2 1:c0f972361605 2252 #define ___X_X_X 0x15
csyang2 1:c0f972361605 2253 #define ___X_XX_ 0x16
csyang2 1:c0f972361605 2254 #define ___X_XXX 0x17
csyang2 1:c0f972361605 2255 #define ___XX___ 0x18
csyang2 1:c0f972361605 2256 #define ___XX__X 0x19
csyang2 1:c0f972361605 2257 #define ___XX_X_ 0x1a
csyang2 1:c0f972361605 2258 #define ___XX_XX 0x1b
csyang2 1:c0f972361605 2259 #define ___XXX__ 0x1c
csyang2 1:c0f972361605 2260 #define ___XXX_X 0x1d
csyang2 1:c0f972361605 2261 #define ___XXXX_ 0x1e
csyang2 1:c0f972361605 2262 #define ___XXXXX 0x1f
csyang2 1:c0f972361605 2263 #define __X_____ 0x20
csyang2 1:c0f972361605 2264 #define __X____X 0x21
csyang2 1:c0f972361605 2265 #define __X___X_ 0x22
csyang2 1:c0f972361605 2266 #define __X___XX 0x23
csyang2 1:c0f972361605 2267 #define __X__X__ 0x24
csyang2 1:c0f972361605 2268 #define __X__X_X 0x25
csyang2 1:c0f972361605 2269 #define __X__XX_ 0x26
csyang2 1:c0f972361605 2270 #define __X__XXX 0x27
csyang2 1:c0f972361605 2271 #define __X_X___ 0x28
csyang2 1:c0f972361605 2272 #define __X_X__X 0x29
csyang2 1:c0f972361605 2273 #define __X_X_X_ 0x2a
csyang2 1:c0f972361605 2274 #define __X_X_XX 0x2b
csyang2 1:c0f972361605 2275 #define __X_XX__ 0x2c
csyang2 1:c0f972361605 2276 #define __X_XX_X 0x2d
csyang2 1:c0f972361605 2277 #define __X_XXX_ 0x2e
csyang2 1:c0f972361605 2278 #define __X_XXXX 0x2f
csyang2 1:c0f972361605 2279 #define __XX____ 0x30
csyang2 1:c0f972361605 2280 #define __XX___X 0x31
csyang2 1:c0f972361605 2281 #define __XX__X_ 0x32
csyang2 1:c0f972361605 2282 #define __XX__XX 0x33
csyang2 1:c0f972361605 2283 #define __XX_X__ 0x34
csyang2 1:c0f972361605 2284 #define __XX_X_X 0x35
csyang2 1:c0f972361605 2285 #define __XX_XX_ 0x36
csyang2 1:c0f972361605 2286 #define __XX_XXX 0x37
csyang2 1:c0f972361605 2287 #define __XXX___ 0x38
csyang2 1:c0f972361605 2288 #define __XXX__X 0x39
csyang2 1:c0f972361605 2289 #define __XXX_X_ 0x3a
csyang2 1:c0f972361605 2290 #define __XXX_XX 0x3b
csyang2 1:c0f972361605 2291 #define __XXXX__ 0x3c
csyang2 1:c0f972361605 2292 #define __XXXX_X 0x3d
csyang2 1:c0f972361605 2293 #define __XXXXX_ 0x3e
csyang2 1:c0f972361605 2294 #define __XXXXXX 0x3f
csyang2 1:c0f972361605 2295 #define _X______ 0x40
csyang2 1:c0f972361605 2296 #define _X_____X 0x41
csyang2 1:c0f972361605 2297 #define _X____X_ 0x42
csyang2 1:c0f972361605 2298 #define _X____XX 0x43
csyang2 1:c0f972361605 2299 #define _X___X__ 0x44
csyang2 1:c0f972361605 2300 #define _X___X_X 0x45
csyang2 1:c0f972361605 2301 #define _X___XX_ 0x46
csyang2 1:c0f972361605 2302 #define _X___XXX 0x47
csyang2 1:c0f972361605 2303 #define _X__X___ 0x48
csyang2 1:c0f972361605 2304 #define _X__X__X 0x49
csyang2 1:c0f972361605 2305 #define _X__X_X_ 0x4a
csyang2 1:c0f972361605 2306 #define _X__X_XX 0x4b
csyang2 1:c0f972361605 2307 #define _X__XX__ 0x4c
csyang2 1:c0f972361605 2308 #define _X__XX_X 0x4d
csyang2 1:c0f972361605 2309 #define _X__XXX_ 0x4e
csyang2 1:c0f972361605 2310 #define _X__XXXX 0x4f
csyang2 1:c0f972361605 2311 #define _X_X____ 0x50
csyang2 1:c0f972361605 2312 #define _X_X___X 0x51
csyang2 1:c0f972361605 2313 #define _X_X__X_ 0x52
csyang2 1:c0f972361605 2314 #define _X_X__XX 0x53
csyang2 1:c0f972361605 2315 #define _X_X_X__ 0x54
csyang2 1:c0f972361605 2316 #define _X_X_X_X 0x55
csyang2 1:c0f972361605 2317 #define _X_X_XX_ 0x56
csyang2 1:c0f972361605 2318 #define _X_X_XXX 0x57
csyang2 1:c0f972361605 2319 #define _X_XX___ 0x58
csyang2 1:c0f972361605 2320 #define _X_XX__X 0x59
csyang2 1:c0f972361605 2321 #define _X_XX_X_ 0x5a
csyang2 1:c0f972361605 2322 #define _X_XX_XX 0x5b
csyang2 1:c0f972361605 2323 #define _X_XXX__ 0x5c
csyang2 1:c0f972361605 2324 #define _X_XXX_X 0x5d
csyang2 1:c0f972361605 2325 #define _X_XXXX_ 0x5e
csyang2 1:c0f972361605 2326 #define _X_XXXXX 0x5f
csyang2 1:c0f972361605 2327 #define _XX_____ 0x60
csyang2 1:c0f972361605 2328 #define _XX____X 0x61
csyang2 1:c0f972361605 2329 #define _XX___X_ 0x62
csyang2 1:c0f972361605 2330 #define _XX___XX 0x63
csyang2 1:c0f972361605 2331 #define _XX__X__ 0x64
csyang2 1:c0f972361605 2332 #define _XX__X_X 0x65
csyang2 1:c0f972361605 2333 #define _XX__XX_ 0x66
csyang2 1:c0f972361605 2334 #define _XX__XXX 0x67
csyang2 1:c0f972361605 2335 #define _XX_X___ 0x68
csyang2 1:c0f972361605 2336 #define _XX_X__X 0x69
csyang2 1:c0f972361605 2337 #define _XX_X_X_ 0x6a
csyang2 1:c0f972361605 2338 #define _XX_X_XX 0x6b
csyang2 1:c0f972361605 2339 #define _XX_XX__ 0x6c
csyang2 1:c0f972361605 2340 #define _XX_XX_X 0x6d
csyang2 1:c0f972361605 2341 #define _XX_XXX_ 0x6e
csyang2 1:c0f972361605 2342 #define _XX_XXXX 0x6f
csyang2 1:c0f972361605 2343 #define _XXX____ 0x70
csyang2 1:c0f972361605 2344 #define _XXX___X 0x71
csyang2 1:c0f972361605 2345 #define _XXX__X_ 0x72
csyang2 1:c0f972361605 2346 #define _XXX__XX 0x73
csyang2 1:c0f972361605 2347 #define _XXX_X__ 0x74
csyang2 1:c0f972361605 2348 #define _XXX_X_X 0x75
csyang2 1:c0f972361605 2349 #define _XXX_XX_ 0x76
csyang2 1:c0f972361605 2350 #define _XXX_XXX 0x77
csyang2 1:c0f972361605 2351 #define _XXXX___ 0x78
csyang2 1:c0f972361605 2352 #define _XXXX__X 0x79
csyang2 1:c0f972361605 2353 #define _XXXX_X_ 0x7a
csyang2 1:c0f972361605 2354 #define _XXXX_XX 0x7b
csyang2 1:c0f972361605 2355 #define _XXXXX__ 0x7c
csyang2 1:c0f972361605 2356 #define _XXXXX_X 0x7d
csyang2 1:c0f972361605 2357 #define _XXXXXX_ 0x7e
csyang2 1:c0f972361605 2358 #define _XXXXXXX 0x7f
csyang2 1:c0f972361605 2359 #define X_______ 0x80
csyang2 1:c0f972361605 2360 #define X______X 0x81
csyang2 1:c0f972361605 2361 #define X_____X_ 0x82
csyang2 1:c0f972361605 2362 #define X_____XX 0x83
csyang2 1:c0f972361605 2363 #define X____X__ 0x84
csyang2 1:c0f972361605 2364 #define X____X_X 0x85
csyang2 1:c0f972361605 2365 #define X____XX_ 0x86
csyang2 1:c0f972361605 2366 #define X____XXX 0x87
csyang2 1:c0f972361605 2367 #define X___X___ 0x88
csyang2 1:c0f972361605 2368 #define X___X__X 0x89
csyang2 1:c0f972361605 2369 #define X___X_X_ 0x8a
csyang2 1:c0f972361605 2370 #define X___X_XX 0x8b
csyang2 1:c0f972361605 2371 #define X___XX__ 0x8c
csyang2 1:c0f972361605 2372 #define X___XX_X 0x8d
csyang2 1:c0f972361605 2373 #define X___XXX_ 0x8e
csyang2 1:c0f972361605 2374 #define X___XXXX 0x8f
csyang2 1:c0f972361605 2375 #define X__X____ 0x90
csyang2 1:c0f972361605 2376 #define X__X___X 0x91
csyang2 1:c0f972361605 2377 #define X__X__X_ 0x92
csyang2 1:c0f972361605 2378 #define X__X__XX 0x93
csyang2 1:c0f972361605 2379 #define X__X_X__ 0x94
csyang2 1:c0f972361605 2380 #define X__X_X_X 0x95
csyang2 1:c0f972361605 2381 #define X__X_XX_ 0x96
csyang2 1:c0f972361605 2382 #define X__X_XXX 0x97
csyang2 1:c0f972361605 2383 #define X__XX___ 0x98
csyang2 1:c0f972361605 2384 #define X__XX__X 0x99
csyang2 1:c0f972361605 2385 #define X__XX_X_ 0x9a
csyang2 1:c0f972361605 2386 #define X__XX_XX 0x9b
csyang2 1:c0f972361605 2387 #define X__XXX__ 0x9c
csyang2 1:c0f972361605 2388 #define X__XXX_X 0x9d
csyang2 1:c0f972361605 2389 #define X__XXXX_ 0x9e
csyang2 1:c0f972361605 2390 #define X__XXXXX 0x9f
csyang2 1:c0f972361605 2391 #define X_X_____ 0xa0
csyang2 1:c0f972361605 2392 #define X_X____X 0xa1
csyang2 1:c0f972361605 2393 #define X_X___X_ 0xa2
csyang2 1:c0f972361605 2394 #define X_X___XX 0xa3
csyang2 1:c0f972361605 2395 #define X_X__X__ 0xa4
csyang2 1:c0f972361605 2396 #define X_X__X_X 0xa5
csyang2 1:c0f972361605 2397 #define X_X__XX_ 0xa6
csyang2 1:c0f972361605 2398 #define X_X__XXX 0xa7
csyang2 1:c0f972361605 2399 #define X_X_X___ 0xa8
csyang2 1:c0f972361605 2400 #define X_X_X__X 0xa9
csyang2 1:c0f972361605 2401 #define X_X_X_X_ 0xaa
csyang2 1:c0f972361605 2402 #define X_X_X_XX 0xab
csyang2 1:c0f972361605 2403 #define X_X_XX__ 0xac
csyang2 1:c0f972361605 2404 #define X_X_XX_X 0xad
csyang2 1:c0f972361605 2405 #define X_X_XXX_ 0xae
csyang2 1:c0f972361605 2406 #define X_X_XXXX 0xaf
csyang2 1:c0f972361605 2407 #define X_XX____ 0xb0
csyang2 1:c0f972361605 2408 #define X_XX___X 0xb1
csyang2 1:c0f972361605 2409 #define X_XX__X_ 0xb2
csyang2 1:c0f972361605 2410 #define X_XX__XX 0xb3
csyang2 1:c0f972361605 2411 #define X_XX_X__ 0xb4
csyang2 1:c0f972361605 2412 #define X_XX_X_X 0xb5
csyang2 1:c0f972361605 2413 #define X_XX_XX_ 0xb6
csyang2 1:c0f972361605 2414 #define X_XX_XXX 0xb7
csyang2 1:c0f972361605 2415 #define X_XXX___ 0xb8
csyang2 1:c0f972361605 2416 #define X_XXX__X 0xb9
csyang2 1:c0f972361605 2417 #define X_XXX_X_ 0xba
csyang2 1:c0f972361605 2418 #define X_XXX_XX 0xbb
csyang2 1:c0f972361605 2419 #define X_XXXX__ 0xbc
csyang2 1:c0f972361605 2420 #define X_XXXX_X 0xbd
csyang2 1:c0f972361605 2421 #define X_XXXXX_ 0xbe
csyang2 1:c0f972361605 2422 #define X_XXXXXX 0xbf
csyang2 1:c0f972361605 2423 #define XX______ 0xc0
csyang2 1:c0f972361605 2424 #define XX_____X 0xc1
csyang2 1:c0f972361605 2425 #define XX____X_ 0xc2
csyang2 1:c0f972361605 2426 #define XX____XX 0xc3
csyang2 1:c0f972361605 2427 #define XX___X__ 0xc4
csyang2 1:c0f972361605 2428 #define XX___X_X 0xc5
csyang2 1:c0f972361605 2429 #define XX___XX_ 0xc6
csyang2 1:c0f972361605 2430 #define XX___XXX 0xc7
csyang2 1:c0f972361605 2431 #define XX__X___ 0xc8
csyang2 1:c0f972361605 2432 #define XX__X__X 0xc9
csyang2 1:c0f972361605 2433 #define XX__X_X_ 0xca
csyang2 1:c0f972361605 2434 #define XX__X_XX 0xcb
csyang2 1:c0f972361605 2435 #define XX__XX__ 0xcc
csyang2 1:c0f972361605 2436 #define XX__XX_X 0xcd
csyang2 1:c0f972361605 2437 #define XX__XXX_ 0xce
csyang2 1:c0f972361605 2438 #define XX__XXXX 0xcf
csyang2 1:c0f972361605 2439 #define XX_X____ 0xd0
csyang2 1:c0f972361605 2440 #define XX_X___X 0xd1
csyang2 1:c0f972361605 2441 #define XX_X__X_ 0xd2
csyang2 1:c0f972361605 2442 #define XX_X__XX 0xd3
csyang2 1:c0f972361605 2443 #define XX_X_X__ 0xd4
csyang2 1:c0f972361605 2444 #define XX_X_X_X 0xd5
csyang2 1:c0f972361605 2445 #define XX_X_XX_ 0xd6
csyang2 1:c0f972361605 2446 #define XX_X_XXX 0xd7
csyang2 1:c0f972361605 2447 #define XX_XX___ 0xd8
csyang2 1:c0f972361605 2448 #define XX_XX__X 0xd9
csyang2 1:c0f972361605 2449 #define XX_XX_X_ 0xda
csyang2 1:c0f972361605 2450 #define XX_XX_XX 0xdb
csyang2 1:c0f972361605 2451 #define XX_XXX__ 0xdc
csyang2 1:c0f972361605 2452 #define XX_XXX_X 0xdd
csyang2 1:c0f972361605 2453 #define XX_XXXX_ 0xde
csyang2 1:c0f972361605 2454 #define XX_XXXXX 0xdf
csyang2 1:c0f972361605 2455 #define XXX_____ 0xe0
csyang2 1:c0f972361605 2456 #define XXX____X 0xe1
csyang2 1:c0f972361605 2457 #define XXX___X_ 0xe2
csyang2 1:c0f972361605 2458 #define XXX___XX 0xe3
csyang2 1:c0f972361605 2459 #define XXX__X__ 0xe4
csyang2 1:c0f972361605 2460 #define XXX__X_X 0xe5
csyang2 1:c0f972361605 2461 #define XXX__XX_ 0xe6
csyang2 1:c0f972361605 2462 #define XXX__XXX 0xe7
csyang2 1:c0f972361605 2463 #define XXX_X___ 0xe8
csyang2 1:c0f972361605 2464 #define XXX_X__X 0xe9
csyang2 1:c0f972361605 2465 #define XXX_X_X_ 0xea
csyang2 1:c0f972361605 2466 #define XXX_X_XX 0xeb
csyang2 1:c0f972361605 2467 #define XXX_XX__ 0xec
csyang2 1:c0f972361605 2468 #define XXX_XX_X 0xed
csyang2 1:c0f972361605 2469 #define XXX_XXX_ 0xee
csyang2 1:c0f972361605 2470 #define XXX_XXXX 0xef
csyang2 1:c0f972361605 2471 #define XXXX____ 0xf0
csyang2 1:c0f972361605 2472 #define XXXX___X 0xf1
csyang2 1:c0f972361605 2473 #define XXXX__X_ 0xf2
csyang2 1:c0f972361605 2474 #define XXXX__XX 0xf3
csyang2 1:c0f972361605 2475 #define XXXX_X__ 0xf4
csyang2 1:c0f972361605 2476 #define XXXX_X_X 0xf5
csyang2 1:c0f972361605 2477 #define XXXX_XX_ 0xf6
csyang2 1:c0f972361605 2478 #define XXXX_XXX 0xf7
csyang2 1:c0f972361605 2479 #define XXXXX___ 0xf8
csyang2 1:c0f972361605 2480 #define XXXXX__X 0xf9
csyang2 1:c0f972361605 2481 #define XXXXX_X_ 0xfa
csyang2 1:c0f972361605 2482 #define XXXXX_XX 0xfb
csyang2 1:c0f972361605 2483 #define XXXXXX__ 0xfc
csyang2 1:c0f972361605 2484 #define XXXXXX_X 0xfd
csyang2 1:c0f972361605 2485 #define XXXXXXX_ 0xfe
csyang2 1:c0f972361605 2486 #define XXXXXXXX 0xff
csyang2 1:c0f972361605 2487
csyang2 1:c0f972361605 2488 /*********************************************************************
csyang2 1:c0f972361605 2489 *
csyang2 1:c0f972361605 2490 * Compatibility with older versions
csyang2 1:c0f972361605 2491 */
csyang2 1:c0f972361605 2492 #define GUI_DispString_UC GUI_UC_DispString
csyang2 1:c0f972361605 2493 #define TOUCH_X_ActivateX GUI_TOUCH_X_ActivateX
csyang2 1:c0f972361605 2494 #define TOUCH_X_ActivateY GUI_TOUCH_X_ActivateY
csyang2 1:c0f972361605 2495 #define TOUCH_X_Disable GUI_TOUCH_X_Disable
csyang2 1:c0f972361605 2496 #define TOUCH_X_MeasureX GUI_TOUCH_X_MeasureX
csyang2 1:c0f972361605 2497 #define TOUCH_X_MeasureY GUI_TOUCH_X_MeasureY
csyang2 1:c0f972361605 2498 #define GUI_SelLayer GUI_SelectLayer
csyang2 1:c0f972361605 2499 #define GUI_MEMDEV_FadeDevices GUI_MEMDEV_FadeInDevices
csyang2 1:c0f972361605 2500 #if defined(__cplusplus)
csyang2 1:c0f972361605 2501 }
csyang2 1:c0f972361605 2502 #endif
csyang2 1:c0f972361605 2503
csyang2 1:c0f972361605 2504 #endif /* ifdef GUI_H */
csyang2 1:c0f972361605 2505
csyang2 1:c0f972361605 2506 /*************************** End of file ****************************/