NXP
/
rt1050_emwin_gui_demo
RT1050 GUI demo using emWin library
Embed:
(wiki syntax)
Show/hide line numbers
GUI.h
00001 /********************************************************************* 00002 * SEGGER Microcontroller GmbH & Co. KG * 00003 * Solutions for real time microcontroller applications * 00004 ********************************************************************** 00005 * * 00006 * (c) 1996 - 2016 SEGGER Microcontroller GmbH & Co. KG * 00007 * * 00008 * Internet: www.segger.com Support: support@segger.com * 00009 * * 00010 ********************************************************************** 00011 00012 ** emWin V5.38 - Graphical user interface for embedded applications ** 00013 All Intellectual Property rights in the Software belongs to SEGGER. 00014 emWin is protected by international copyright laws. Knowledge of the 00015 source code may not be used to write a similar product. This file may 00016 only be used in accordance with the following terms: 00017 00018 The software has been licensed to NXP Semiconductors USA, Inc. whose 00019 registered office is situated at 411 E. Plumeria Drive, San Jose, 00020 CA 95134, USA solely for the purposes of creating libraries for 00021 NXPs M0, M3/M4 and ARM7/9 processor-based devices, sublicensed and 00022 distributed under the terms and conditions of the NXP End User License 00023 Agreement. 00024 Full source code is available at: www.segger.com 00025 00026 We appreciate your understanding and fairness. 00027 ---------------------------------------------------------------------- 00028 Licensing information 00029 00030 Licensor: SEGGER Microcontroller Systems LLC 00031 Licensed to: NXP Semiconductors, 1109 McKay Dr, M/S 76, San Jose, CA 95131, USA 00032 Licensed SEGGER software: emWin 00033 License number: GUI-00186 00034 License model: emWin License Agreement, dated August 20th 2011 00035 Licensed product: - 00036 Licensed platform: NXP's ARM 7/9, Cortex-M0,M3,M4 00037 Licensed number of seats: - 00038 ---------------------------------------------------------------------- 00039 File : GUI.h 00040 Purpose : GUI API include file 00041 ---------------------------END-OF-HEADER------------------------------ 00042 */ 00043 00044 #ifndef GUI_H 00045 #define GUI_H 00046 00047 #include "GUI_ConfDefaults.h" 00048 #include "GUI_Type.h" 00049 #include "GUI_Version.h" 00050 00051 #if defined(__cplusplus) 00052 extern "C" { /* Make sure we have C-declarations in C++ programs */ 00053 #endif 00054 00055 /********************************************************************* 00056 * 00057 * Disable string function warning with newer MSVC versions 00058 */ 00059 #if defined (_MSC_VER) 00060 #if (_MSC_VER > 1200) 00061 #pragma warning( disable : 4996) 00062 #endif 00063 #endif 00064 00065 /********************************************************************* 00066 * 00067 * Macros, function replacement 00068 */ 00069 #define GUI_COUNTOF(a) (sizeof(a) / sizeof(a[0])) 00070 #define GUI_MIN(a,b) (((a) < (b)) ? (a) : (b)) 00071 #define GUI_MAX(a,b) (((a) > (b)) ? (a) : (b)) 00072 #define GUI_ZEROFILL(p, Size) (memset(p, 0, Size)) 00073 00074 /********************************************************************* 00075 * 00076 * Support for multitasking systems (locking) 00077 */ 00078 typedef struct GUI_CONTEXT GUI_CONTEXT; 00079 00080 #if !GUI_OS 00081 #define GUI_LOCK() 00082 #define GUI_UNLOCK() 00083 #define GUITASK_INIT() 00084 #define GUITASK_COPY_CONTEXT() 00085 #else 00086 void GUI_Lock(void); 00087 void GUI_Unlock(void); 00088 void GUITASK_Init(void); 00089 void GUITASK_CopyContext(void); 00090 void GUITASK_SetMaxTask(int MaxTask); 00091 int GUITASK_GetMaxTask(void); 00092 GUI_CONTEXT * GUITASK_GetpContext(int Index); 00093 #define GUI_LOCK() GUI_Lock() 00094 #define GUI_UNLOCK() GUI_Unlock() 00095 #define GUITASK_INIT() GUITASK_Init() 00096 #define GUITASK_COPY_CONTEXT() GUITASK_CopyContext() 00097 #endif 00098 00099 /********************************************************************* 00100 * 00101 * API table of a display driver 00102 */ 00103 struct GUI_DEVICE_API { 00104 // 00105 // Data 00106 // 00107 int DeviceClassIndex; 00108 // 00109 // Drawing functions 00110 // 00111 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); 00112 void (* pfDrawHLine )(GUI_DEVICE * pDevice, int x0, int y0, int x1); 00113 void (* pfDrawVLine )(GUI_DEVICE * pDevice, int x , int y0, int y1); 00114 void (* pfFillRect )(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1); 00115 LCD_PIXELINDEX (* pfGetPixelIndex)(GUI_DEVICE * pDevice, int x, int y); 00116 void (* pfSetPixelIndex)(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX ColorIndex); 00117 void (* pfXorPixel )(GUI_DEVICE * pDevice, int x, int y); 00118 // 00119 // Set origin 00120 // 00121 void (* pfSetOrg )(GUI_DEVICE * pDevice, int x, int y); 00122 // 00123 // Request information 00124 // 00125 void (*(* pfGetDevFunc) (GUI_DEVICE ** ppDevice, int Index))(void); 00126 I32 (* pfGetDevProp )(GUI_DEVICE * pDevice, int Index); 00127 void *(* pfGetDevData )(GUI_DEVICE * pDevice, int Index); 00128 void (* pfGetRect )(GUI_DEVICE * pDevice, LCD_RECT * pRect); 00129 }; 00130 00131 /********************************************************************* 00132 * 00133 * Device classes 00134 */ 00135 typedef enum { 00136 DEVICE_CLASS_DRIVER = 0, 00137 DEVICE_CLASS_DRIVER_MODIFIER, // Zoom or delta-pixel modifier 00138 DEVICE_CLASS_VNC, 00139 DEVICE_CLASS_SPRITE, 00140 DEVICE_CLASS_MEMDEV, 00141 DEVICE_CLASS_ALPHA, 00142 DEVICE_CLASS_AUTOALPHA, 00143 DEVICE_CLASS_MEASDEV 00144 } DEVICE_CLASS; 00145 00146 #define GUI_DEVICE_STAYONTOP 1 00147 00148 /********************************************************************* 00149 * 00150 * Display drivers 00151 */ 00152 // 00153 // Addresses 00154 // 00155 extern const GUI_DEVICE_API GUIDRV_Win_API; 00156 00157 extern const GUI_DEVICE_API GUIDRV_Template_API; 00158 00159 // 00160 // Macros to be used in configuration files 00161 // 00162 #define GUIDRV_WIN32 &GUIDRV_Win_API 00163 00164 #if defined(WIN32) && !defined(LCD_SIMCONTROLLER) 00165 00166 #define GUIDRV_TEMPLATE &GUIDRV_Win_API 00167 00168 #else 00169 00170 #define GUIDRV_TEMPLATE &GUIDRV_Template_API 00171 00172 #endif 00173 00174 /********************************************************************* 00175 * 00176 * Definition of GUI_DEVICE structure 00177 */ 00178 struct GUI_DEVICE { 00179 // 00180 // Linking 00181 // 00182 GUI_DEVICE * pNext; 00183 GUI_DEVICE * pPrev; 00184 // 00185 // Data 00186 // 00187 union { 00188 GUI_HMEM hContext; // Handle of payload data like sprite- or memory device context 00189 void * pContext; // Pointer for context data in a fixed block 00190 } u; 00191 // 00192 // API pointers 00193 // 00194 const GUI_DEVICE_API * pDeviceAPI; 00195 const LCD_API_COLOR_CONV * pColorConvAPI; 00196 U16 Flags; 00197 int LayerIndex; 00198 }; 00199 00200 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_1; 00201 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_8; 00202 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_16; 00203 extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_32; 00204 00205 /********************************************************************* 00206 * 00207 * GUI_CONTEXT 00208 * 00209 * This structure is public for one reason only: 00210 * To allow the application to save and restore the context. 00211 */ 00212 typedef union { 00213 U8 aColorIndex8[2]; 00214 U16 aColorIndex16[2]; 00215 U32 aColorIndex32[2]; 00216 } LCD_COLORINDEX_UNION; 00217 00218 struct GUI_CONTEXT { 00219 // 00220 // Variables in LCD module 00221 // 00222 LCD_COLORINDEX_UNION uLCD; 00223 LCD_RECT ClipRect; 00224 U8 DrawMode; 00225 U8 SelLayer; 00226 U8 TextStyle; 00227 // 00228 // Variables in GL module 00229 // 00230 GUI_RECT * pClipRect_HL; // High level clip rectangle ... Speed optimization so drawing routines can optimize 00231 U8 PenSize; 00232 U8 PenShape; 00233 U8 LineStyle; 00234 // 00235 // Variables in GUICHAR module 00236 // 00237 const GUI_FONT * pAFont; 00238 I16P LBorder; 00239 I16P DispPosX, DispPosY; 00240 I16P DrawPosX, DrawPosY; 00241 I16P TextMode, TextAlign; 00242 GUI_COLOR Color, BkColor; // Required only when changing devices and for speed opt (caching) 00243 // 00244 // Pointer to color indices 00245 // 00246 LCD_PIXELINDEX * LCD_pBkColorIndex; 00247 LCD_PIXELINDEX * LCD_pColorIndex; 00248 LCD_PIXELINDEX * LCD_pAColorIndex; 00249 // 00250 // Variables in WM module 00251 // 00252 #if GUI_WINSUPPORT 00253 const GUI_RECT * WM__pUserClipRect; 00254 GUI_HWIN hAWin; 00255 int xOff, yOff; 00256 U8 WM_IsActive; 00257 #endif 00258 // 00259 // Array of pointers to device chains 00260 // 00261 //GUI_DEVICE * apDevice[GUI_NUM_LAYERS]; 00262 GUI_DEVICE * apDriver[GUI_NUM_LAYERS]; 00263 // 00264 // Variables in MEMDEV module (with memory devices only) 00265 // 00266 GUI_HMEM hDevData; 00267 // 00268 // Variables in Anitaliasing module 00269 // 00270 const tLCD_HL_APIList * pLCD_HL; // Required to reroute drawing (HLine & Pixel) to the AA module 00271 U8 AA_Factor; 00272 U8 AA_HiResEnable; 00273 void (* AA_pfSetPixelAA)(int x, int y, U8 Intens); // Function to be used for drawing a single pixel 00274 }; 00275 00276 /* Rename GUI_SaveContext in order to avoid crashes if wrong GUIConf is used */ 00277 #if (GUI_WINSUPPORT == 1) 00278 #define GUI_SaveContext GUI_SaveContext_W 00279 #else 00280 #define GUI_SaveContext GUI_SaveContext_ 00281 #endif 00282 00283 /********************************************************************* 00284 * 00285 * Device management 00286 */ 00287 GUI_DEVICE * GUI_DEVICE_Create (const GUI_DEVICE_API * pDeviceAPI, const LCD_API_COLOR_CONV * pColorConvAPI, U16 Flags, int LayerIndex); 00288 GUI_DEVICE * GUI_DEVICE_CreateAndLink(const GUI_DEVICE_API * pDeviceAPI, const LCD_API_COLOR_CONV * pColorConvAPI, U16 Flags, int LayerIndex); 00289 void GUI_DEVICE_Delete (GUI_DEVICE * pDevice); 00290 int GUI_DEVICE_Link (GUI_DEVICE * pDevice); 00291 void GUI_DEVICE_Unlink (GUI_DEVICE * pDevice); 00292 GUI_DEVICE * GUI_DEVICE__GetpDriver (int LayerIndex); 00293 GUI_DEVICE * GUI_DEVICE__GetpDevice (int LayerIndex, int DeviceClass); 00294 00295 GUI_DEVICE * GUI_DEVICE_UnlinkTaskDevices(void); 00296 void GUI_DEVICE_LinkDevices (GUI_DEVICE * pDevice); 00297 00298 /********************************************************************* 00299 * 00300 * GUI_DIRTYDEVICE 00301 */ 00302 typedef struct { 00303 void * pData; // Pointer to first pixel 00304 int x0, y0; // Coordinates of the upper left pixel 00305 int xSize, ySize; // Size of dirty rectangle 00306 int LineOff; // Virtual xSize in pixels 00307 int BytesPerPixel; // Number of bytes required per pixel 00308 int IsDirty; // Indicates if dirty pixels exist 00309 } GUI_DIRTYDEVICE_INFO; 00310 00311 int GUI_DIRTYDEVICE_Create (void); 00312 int GUI_DIRTYDEVICE_CreateEx (int LayerIndex); 00313 int GUI_DIRTYDEVICE_CreateExInfo(GUI_DIRTYDEVICE_INFO * pInfo, int LayerIndex); 00314 int GUI_DIRTYDEVICE_Delete (void); 00315 int GUI_DIRTYDEVICE_DeleteEx (int LayerIndex); 00316 int GUI_DIRTYDEVICE_Fetch (GUI_DIRTYDEVICE_INFO * pInfo); 00317 int GUI_DIRTYDEVICE_FetchEx (GUI_DIRTYDEVICE_INFO * pInfo, int LayerIndex); 00318 00319 /********************************************************************* 00320 * 00321 * GUI_GCACHE 00322 */ 00323 int GUI_GCACHE_4_Create(const LCD_API_COLOR_CONV * pColorConvAPI); 00324 int GUI_GCACHE_4_CreateEx(int LayerIndex, const LCD_API_COLOR_CONV * pColorConvAPI); 00325 00326 /********************************************************************* 00327 * 00328 * GUI_DCACHE 00329 */ 00330 void GUI_DCACHE_SetClearCacheHook(void (* pFunc)(U32 LayerMask)); 00331 void GUI_DCACHE_Clear (U32 LayerMask); 00332 00333 extern void (* GUI_DCACHE__pfClearCacheHook)(U32 LayerMask); 00334 00335 /********************************************************************* 00336 * 00337 * GUI_SOFTLAYER 00338 */ 00339 typedef struct { 00340 int xPos; 00341 int yPos; 00342 int xSize; 00343 int ySize; 00344 int Visible; 00345 } GUI_SOFTLAYER_CONFIG; 00346 00347 int GUI_SOFTLAYER_Enable (GUI_SOFTLAYER_CONFIG * pConfig, int NumLayers, GUI_COLOR CompositeColor); 00348 int GUI_SOFTLAYER_Refresh (void); 00349 void GUI_SOFTLAYER_SetCompositeColor(U32 Color); 00350 int GUI_SOFTLAYER_MULTIBUF_Enable (int OnOff); 00351 00352 /********************************************************************* 00353 * 00354 * General routines 00355 */ 00356 void GUI_Exit (void); 00357 GUI_COLOR GUI_GetDefaultBkColor(void); 00358 GUI_COLOR GUI_GetDefaultColor (void); 00359 const GUI_FONT * GUI_GetDefaultFont (void); 00360 int GUI_GetScreenSizeX (void); 00361 int GUI_GetScreenSizeY (void); 00362 const char * GUI_GetVersionString (void); 00363 int GUI_Init (void); 00364 int GUI_IsInitialized (void); 00365 void GUI_SetAfterInitHook (void (* pFunc)(void)); 00366 void GUI_RestoreContext (const GUI_CONTEXT * pContext); 00367 void GUI_SaveContext (GUI_CONTEXT * pContext); 00368 const GUI_RECT * GUI_SetClipRect (const GUI_RECT * pRect); 00369 void GUI_SetControlHook (void (* pFunc)(int LayerIndex, int Cmd)); 00370 void GUI_SetDefault (void); 00371 void GUI_SetDefaultBkColor(GUI_COLOR Color); 00372 void GUI_SetDefaultColor (GUI_COLOR Color); 00373 void GUI_SetDefaultFont (const GUI_FONT * pFont); 00374 GUI_DRAWMODE GUI_SetDrawMode (GUI_DRAWMODE dm); 00375 void GUI_SetScreenSizeX (int xSize); 00376 void GUI_SetScreenSizeY (int ySize); 00377 void GUI_SetRefreshHook (void (* pFunc)(void)); 00378 void MainTask (void); 00379 00380 #define GUI_PID_SetInitFunc(x) GUI_SetAfterInitHook(x) // Compatibility 00381 00382 /********************************************************************* 00383 * 00384 * Rectangle helper functions 00385 */ 00386 int GUI_RectsIntersect(const GUI_RECT * pr0, const GUI_RECT * pr1); 00387 void GUI_MoveRect (GUI_RECT * pRect, int x, int y); 00388 void GUI_MergeRect (GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1); 00389 int GUI__IntersectRects(GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1); 00390 void GUI__IntersectRect (GUI_RECT * pDest, const GUI_RECT * pr0); 00391 void GUI__ReduceRect (GUI_RECT * pDest, const GUI_RECT * pRect, int Dist); 00392 00393 /********************************************************************* 00394 * 00395 * Misc helper functions 00396 */ 00397 I32 GUI__ATan2(I32 x, I32 y, I32 * ph); 00398 I32 GUI__ASinHQ(I32 SinHQ); 00399 int GUI__CompactPixelIndices (LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel); 00400 int GUI__CompactPixelIndicesEx(LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI); 00401 int GUI__ConvertColor2Index (LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI, void * pResult); 00402 void GUI__Config(void); 00403 I32 GUI__CosHQ(I32 Ang1000); 00404 int GUI__DivideRound (int a, int b); 00405 I32 GUI__DivideRound32 (I32 a, I32 b); 00406 void GUI__ExpandPixelIndices (void * pBuffer, int NumPixels, int BitsPerPixel); 00407 void GUI__ExpandPixelIndicesEx (void * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI); 00408 void GUI__memcpy(void * pDest, const void * pSrc, int NumBytes); 00409 int GUI__SetText(GUI_HMEM * phText, const char * s); 00410 I32 GUI__SinHQ(I32 Ang1000); 00411 I32 GUI__sqrt32(I32 Square); 00412 void GUI__DrawTwinArc2(int xl, int xr, int y0, int r, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorFill); 00413 void GUI__DrawTwinArc4(int x0, int y0, int x1, int y1, int r, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorFill); 00414 void GUI__FillTrippleArc(int x0, int y0, int Size, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorR2, GUI_COLOR ColorFill); 00415 void GUI__RegisterExit(GUI_REGISTER_EXIT * pRegisterExit); 00416 00417 /********************************************************************* 00418 * 00419 * Get / Set Attributes 00420 */ 00421 GUI_COLOR GUI_GetBkColor (void); 00422 int GUI_GetBkColorIndex(void); 00423 GUI_COLOR GUI_GetColor (void); 00424 int GUI_GetColorIndex (void); 00425 U8 GUI_GetLineStyle (void); 00426 U8 GUI_GetPenSize (void); 00427 U8 GUI_GetPenShape (void); 00428 unsigned GUI_GetPixelIndex (int x, int y); 00429 00430 void GUI_SetBkColor (GUI_COLOR); 00431 void GUI_SetColor (GUI_COLOR); 00432 void GUI_SetBkColorIndex(int Index); 00433 void GUI_SetColorIndex(int Index); 00434 00435 U8 GUI_SetPenSize (U8 Size); 00436 U8 GUI_SetPenShape (U8 Shape); 00437 U8 GUI_SetLineStyle (U8 Style); 00438 00439 /* Get/Set Character used as decimal point (usually '.' or ',') */ 00440 char GUI_GetDecChar(void); 00441 char GUI_SetDecChar(char c); 00442 00443 /********************************************************************* 00444 * 00445 * Color / Index related functions 00446 */ 00447 int GUI_Color2Index(GUI_COLOR color); 00448 GUI_COLOR GUI_Color2VisColor(GUI_COLOR color); 00449 char GUI_ColorIsAvailable(GUI_COLOR color); 00450 GUI_COLOR GUI_Index2Color(int Index); 00451 U32 GUI_CalcColorDist (GUI_COLOR Color0, GUI_COLOR Color1); 00452 U32 GUI_CalcVisColorError(GUI_COLOR color); 00453 00454 /********************************************************************* 00455 * 00456 * Error handler 00457 */ 00458 void GUI_SetOnErrorFunc(void (* pFunc)(const char * s)); 00459 00460 /********************************************************************* 00461 * 00462 * Logging (for debugging primarily) 00463 */ 00464 void GUI_Log (const char * s); 00465 void GUI_Log1 (const char * s, I32 p0); 00466 void GUI_Log2 (const char * s, I32 p0, I32 p1); 00467 void GUI_Log3 (const char * s, I32 p0, I32 p1, I32 p2); 00468 void GUI_Log4 (const char * s, I32 p0, I32 p1, I32 p2,I32 p3); 00469 void GUI_Warn (const char * s); 00470 void GUI_Warn1 (const char * s, I32 p0); 00471 void GUI_Warn2 (const char * s, I32 p0, I32 p1); 00472 void GUI_Warn3 (const char * s, I32 p0, I32 p1, I32 p2); 00473 void GUI_Warn4 (const char * s, I32 p0, I32 p1, I32 p2, I32 p3); 00474 void GUI_ErrorOut (const char * s); 00475 void GUI_ErrorOut1(const char * s, I32 p0); 00476 void GUI_ErrorOut2(const char * s, I32 p0, I32 p1); 00477 void GUI_ErrorOut3(const char * s, I32 p0, I32 p1, I32 p2); 00478 void GUI_ErrorOut4(const char * s, I32 p0, I32 p1, I32 p2, I32 p3); 00479 00480 /********************************************************************* 00481 * 00482 * 2d - GL 00483 */ 00484 void GUI_Clear (void); 00485 void GUI_ClearRect (int x0, int y0, int x1, int y1); 00486 void GUI_ClearRectEx (const GUI_RECT * pRect); 00487 void GUI_CopyRect (int x0, int y0, int x1, int y1, int dx, int dy); 00488 void GUI_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1); 00489 void GUI_DrawBitmap (const GUI_BITMAP * pBM, int x0, int y0); 00490 void GUI_DrawBitmapMag (const GUI_BITMAP * pBM, int x0, int y0, int XMul, int YMul); 00491 void GUI_DrawBitmapEx (const GUI_BITMAP * pBM, int x0, int y0, int xCenter, int yCenter, int xMag, int yMag); 00492 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); 00493 void GUI_DrawBitmapHWAlpha(const GUI_BITMAP * pBM, int x0, int y0); 00494 void GUI_DrawCircle (int x0, int y0, int r); 00495 void GUI_DrawEllipse (int x0, int y0, int rx, int ry); 00496 void GUI_DrawGradientH (int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1); 00497 void GUI_DrawGradientV (int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1); 00498 void GUI_DrawGradientRoundedH(int x0, int y0, int x1, int y1, int rd, GUI_COLOR Color0, GUI_COLOR Color1); 00499 void GUI_DrawGradientRoundedV(int x0, int y0, int x1, int y1, int rd, GUI_COLOR Color0, GUI_COLOR Color1); 00500 void GUI_DrawGraph (I16 * pay, int NumPoints, int x0, int y0); 00501 void GUI_DrawGraphEx (I16 * pay, int NumPoints, int x0, int y0, int Numerator, int Denominator, int MirrorX); 00502 void GUI_DrawHLine (int y0, int x0, int x1); 00503 void GUI_DrawLine (int x0, int y0, int x1, int y1); 00504 void GUI_DrawLineRel (int dx, int dy); 00505 void GUI_DrawLineTo (int x, int y); 00506 void GUI_DrawPie (int x0, int y0, int r, int a0, int a1, int Type); 00507 void GUI_DrawPixel (int x, int y); 00508 void GUI_DrawPoint (int x, int y); 00509 void GUI_DrawPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); 00510 void GUI_DrawPolyLine (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); 00511 void GUI_DrawFocusRect (const GUI_RECT * pRect, int Dist); 00512 void GUI_DrawRect (int x0, int y0, int x1, int y1); 00513 void GUI_DrawRectEx (const GUI_RECT * pRect); 00514 void GUI_DrawRoundedFrame (int x0, int y0, int x1, int y1, int r, int w); 00515 void GUI_DrawRoundedRect (int x0, int y0, int x1, int y1, int r); 00516 void GUI_DrawVLine (int x0, int y0, int y1); 00517 void GUI_FillCircle (int x0, int y0, int r); 00518 void GUI_FillEllipse (int x0, int y0, int rx, int ry); 00519 void GUI_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); 00520 void GUI_FillRect (int x0, int y0, int x1, int y1); 00521 void GUI_FillRectEx (const GUI_RECT * pRect); 00522 void GUI_FillRoundedFrame (int x0, int y0, int x1, int y1, int r, int w); 00523 void GUI_FillRoundedRect (int x0, int y0, int x1, int y1, int r); 00524 void GUI_FillRoundedRectB (int x0, int y0, int x1, int y1, int r); 00525 void GUI_FillRoundedRectT (int x0, int y0, int x1, int y1, int r); 00526 void GUI_GetClientRect (GUI_RECT * pRect); 00527 void GUI_InvertRect (int x0, int y0, int x1, int y1); 00528 void GUI_MoveRel (int dx, int dy); 00529 void GUI_MoveTo (int x, int y); 00530 void GUI_SetAlphaMask8888 (U32 OrMask, U32 AndMask); 00531 00532 /********************************************************************* 00533 * 00534 * Graphic file support 00535 */ 00536 typedef int GUI_GET_DATA_FUNC(void * p, const U8 ** ppData, unsigned NumBytes, U32 Off); 00537 00538 /********************************************************************* 00539 * 00540 * GIF file support 00541 */ 00542 int GUI_GIF_Draw (const void * pGIF, U32 NumBytes, int x0, int y0); 00543 int GUI_GIF_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); 00544 int GUI_GIF_DrawSub (const void * pGIF, U32 NumBytes, int x0, int y0, int Index); 00545 int GUI_GIF_DrawSubEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Index); 00546 int GUI_GIF_DrawSubScaled (const void * pGIF, U32 NumBytes, int x0, int y0, int Index, int Num, int Denom); 00547 int GUI_GIF_DrawSubScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Index, int Num, int Denom); 00548 int GUI_GIF_GetComment (const void * pGIF, U32 NumBytes, U8 * pBuffer, int MaxSize, int Index); 00549 int GUI_GIF_GetCommentEx (GUI_GET_DATA_FUNC * pfGetData, void * p, U8 * pBuffer, int MaxSize, int Index); 00550 int GUI_GIF_GetImageInfo (const void * pGIF, U32 NumBytes, GUI_GIF_IMAGE_INFO * pInfo, int Index); 00551 int GUI_GIF_GetImageInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_GIF_IMAGE_INFO * pInfo, int Index); 00552 int GUI_GIF_GetInfo (const void * pGIF, U32 NumBytes, GUI_GIF_INFO * pInfo); 00553 int GUI_GIF_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_GIF_INFO * pInfo); 00554 int GUI_GIF_GetXSize (const void * pGIF); 00555 int GUI_GIF_GetXSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); 00556 int GUI_GIF_GetYSize (const void * pGIF); 00557 int GUI_GIF_GetYSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); 00558 int GUI_GIF_SetFillTrans (int OnOff); 00559 00560 /********************************************************************* 00561 * 00562 * BMP file support 00563 */ 00564 int GUI_BMP_Draw (const void * pFileData, int x0, int y0); 00565 int GUI_BMP_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); 00566 int GUI_BMP_DrawScaled (const void * pFileData, int x0, int y0, int Num, int Denom); 00567 int GUI_BMP_DrawScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Num, int Denom); 00568 int GUI_BMP_GetXSize (const void * pFileData); 00569 int GUI_BMP_GetXSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); 00570 int GUI_BMP_GetYSize (const void * pFileData); 00571 int GUI_BMP_GetYSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); 00572 void GUI_BMP_EnableAlpha (void); 00573 void GUI_BMP_DisableAlpha(void); 00574 00575 /********************************************************************* 00576 * 00577 * PNG file support 00578 */ 00579 int GUI_PNG_Draw (const void * pFileData, int DataSize, int x0, int y0); 00580 int GUI_PNG_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); 00581 int GUI_PNG_GetXSize (const void * pFileData, int FileSize); 00582 int GUI_PNG_GetXSizeEx(GUI_GET_DATA_FUNC * pfGetData, void * p); 00583 int GUI_PNG_GetYSize (const void * pFileData, int FileSize); 00584 int GUI_PNG_GetYSizeEx(GUI_GET_DATA_FUNC * pfGetData, void * p); 00585 00586 /********************************************************************* 00587 * 00588 * JPEG file support 00589 */ 00590 typedef struct { 00591 int XSize; 00592 int YSize; 00593 } GUI_JPEG_INFO; 00594 00595 int GUI_JPEG_Draw (const void * pFileData, int DataSize, int x0, int y0); 00596 int GUI_JPEG_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); 00597 int GUI_JPEG_DrawScaled (const void * pFileData, int DataSize, int x0, int y0, int Num, int Denom); 00598 int GUI_JPEG_DrawScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Num, int Denom); 00599 int GUI_JPEG_GetInfo (const void * pFileData, int DataSize, GUI_JPEG_INFO * pInfo); 00600 int GUI_JPEG_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_JPEG_INFO * pInfo); 00601 00602 /********************************************************************* 00603 * 00604 * MOVIE file support 00605 */ 00606 #define GUI_MOVIE_NOTIFICATION_PREDRAW 0 // Immediately before frame is drawn 00607 #define GUI_MOVIE_NOTIFICATION_POSTDRAW 1 // Immediately after a frame is drawn 00608 #define GUI_MOVIE_NOTIFICATION_START 2 // Send when start playing a movie 00609 #define GUI_MOVIE_NOTIFICATION_STOP 3 // Movie has stopped 00610 #define GUI_MOVIE_NOTIFICATION_DELETE 4 // Movie has been deleted 00611 00612 typedef GUI_HMEM GUI_MOVIE_HANDLE; 00613 00614 typedef void GUI_MOVIE_FUNC(GUI_MOVIE_HANDLE hMovie, int Notification, U32 CurrentFrame); 00615 00616 typedef struct { 00617 int xSize; // X-size of images 00618 int ySize; // Y-size of images 00619 int msPerFrame; // Default duration of 1 frame 00620 U32 NumFrames; // Number of frames 00621 } GUI_MOVIE_INFO; 00622 00623 GUI_MOVIE_HANDLE GUI_MOVIE_Create (const void * pFileData, U32 FileSize, GUI_MOVIE_FUNC * pfNotify); 00624 GUI_MOVIE_HANDLE GUI_MOVIE_CreateEx (GUI_GET_DATA_FUNC * pfGetData, void * pParam, GUI_MOVIE_FUNC * pfNotify); 00625 int GUI_MOVIE_Delete (GUI_MOVIE_HANDLE hMovie); 00626 U32 GUI_MOVIE_GetFrameIndex(GUI_MOVIE_HANDLE hMovie); 00627 int GUI_MOVIE_GetInfo (const void * pFileData, U32 FileSize, GUI_MOVIE_INFO * pInfo); 00628 int GUI_MOVIE_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * pParam, GUI_MOVIE_INFO * pInfo); 00629 int GUI_MOVIE_GetPos (GUI_MOVIE_HANDLE hMovie, int * pxPos, int * pyPos, int * pxSize, int * pySize); 00630 int GUI_MOVIE_GotoFrame (GUI_MOVIE_HANDLE hMovie, U32 Frame); 00631 int GUI_MOVIE_Pause (GUI_MOVIE_HANDLE hMovie); 00632 int GUI_MOVIE_Play (GUI_MOVIE_HANDLE hMovie); 00633 int GUI_MOVIE_SetPeriod (GUI_MOVIE_HANDLE hMovie, unsigned Period); 00634 int GUI_MOVIE_SetPos (GUI_MOVIE_HANDLE hMovie, int xPos, int yPos); 00635 int GUI_MOVIE_Show (GUI_MOVIE_HANDLE hMovie, int xPos, int yPos, int DoLoop); 00636 00637 /********************************************************************* 00638 * 00639 * Cursor routines 00640 */ 00641 #define GUI_CURSOR_SHOW 0 00642 #define GUI_CURSOR_HIDE 1 00643 00644 typedef struct { 00645 const GUI_BITMAP * pBitmap; 00646 int xHot; 00647 int yHot; 00648 } GUI_CURSOR; 00649 00650 typedef struct { 00651 const GUI_BITMAP ** ppBm; 00652 int xHot; 00653 int yHot; 00654 unsigned Period; 00655 const unsigned * pPeriod; 00656 int NumItems; 00657 } GUI_CURSOR_ANIM; 00658 00659 #if GUI_SUPPORT_CURSOR 00660 int GUI_CURSOR_GetState (void); 00661 int GUI_CURSOR_GetStateEx (int Layer); 00662 void GUI_CURSOR_Hide (void); 00663 void GUI_CURSOR_HideEx (int Layer); 00664 const GUI_CURSOR * GUI_CURSOR_Select (const GUI_CURSOR * pCursor); 00665 const GUI_CURSOR * GUI_CURSOR_SelectEx (const GUI_CURSOR * pCursor, int Layer); 00666 int GUI_CURSOR_SelectAnim (const GUI_CURSOR_ANIM * pCursorAnim); 00667 int GUI_CURSOR_SelectAnimEx (const GUI_CURSOR_ANIM * pCursorAnim, int LayerIndex); 00668 int GUI_CURSOR_SetBitmap (const GUI_BITMAP * pBM); 00669 int GUI_CURSOR_SetBitmapEx (const GUI_BITMAP * pBM, int Layer); 00670 void GUI_CURSOR_SetPosition (int x, int y); 00671 void GUI_CURSOR_SetPositionEx(int xNewPos, int yNewPos, int Layer); 00672 void GUI_CURSOR_Show (void); 00673 void GUI_CURSOR_ShowEx (int Layer); 00674 GUI_HSPRITE GUI_CURSOR__GetSpriteEx (int LayerIndex, int * pxPos, int * pyPos); 00675 void GUI_CURSOR__SetSpriteEx (GUI_HSPRITE hSprite, const GUI_CURSOR * pCursor, int LayerIndex); 00676 #else 00677 #define GUI_CURSOR_Show(); 00678 #define GUI_CURSOR_Clear(); 00679 #endif 00680 00681 /********************************************************************* 00682 * 00683 * Sprite support 00684 */ 00685 #define GUI_SPRITE_CF_STAYONTOP (1 << 0) 00686 #define GUI_SPRITE_CF_SHOW (1 << 1) 00687 00688 #define GUI_SPRITE_SHOW 0 00689 #define GUI_SPRITE_HIDE 1 00690 00691 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 */ 00692 void GUI_SPRITE__SetCallback (GUI_HSPRITE hSprite, GUI_HMEM hContext, void (* pCB)(GUI_HSPRITE, int)); 00693 GUI_HSPRITE GUI_SPRITE_Create (const GUI_BITMAP * pBM, int x, int y); 00694 GUI_HSPRITE GUI_SPRITE_CreateAnim (const GUI_BITMAP ** ppBm, int x, int y, unsigned Period, const unsigned * pPeriod, int NumItems); 00695 GUI_HSPRITE GUI_SPRITE_CreateEx (const GUI_BITMAP * pBM, int x, int y, int Layer); 00696 GUI_HSPRITE GUI_SPRITE_CreateExAnim (const GUI_BITMAP ** ppBm, int x, int y, unsigned Period, const unsigned * pPeriod, int NumItems, int LayerIndex); 00697 GUI_HSPRITE GUI_SPRITE_CreateHidden (const GUI_BITMAP * pBM, int x, int y); 00698 GUI_HSPRITE GUI_SPRITE_CreateHiddenEx (const GUI_BITMAP * pBM, int x, int y, int Layer); 00699 void GUI_SPRITE_Delete (GUI_HSPRITE hSprite); 00700 int GUI_SPRITE_GetState (GUI_HSPRITE hSprite); 00701 void GUI_SPRITE_Hide (GUI_HSPRITE hSprite); 00702 int GUI_SPRITE_SetBitmap (GUI_HSPRITE hSprite, const GUI_BITMAP * pBM); 00703 int GUI_SPRITE_SetBitmapAndPosition(GUI_HSPRITE hSprite, const GUI_BITMAP * pBM, int x, int y); 00704 int GUI_SPRITE_SetLoop (GUI_HSPRITE hSprite, int OnOff); 00705 void GUI_SPRITE_SetPosition (GUI_HSPRITE hSprite, int x, int y); 00706 int GUI_SPRITE_StartAnim (GUI_HSPRITE hSprite); 00707 int GUI_SPRITE_StopAnim (GUI_HSPRITE hSprite); 00708 void GUI_SPRITE_Show (GUI_HSPRITE hSprite); 00709 00710 /********************************************************************* 00711 * 00712 * Cursors and their bitmaps 00713 */ 00714 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowS, GUI_CursorArrowSI; 00715 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowM, GUI_CursorArrowMI; 00716 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowL, GUI_CursorArrowLI; 00717 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossS, GUI_CursorCrossSI; 00718 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossM, GUI_CursorCrossMI; 00719 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossL, GUI_CursorCrossLI; 00720 extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorHeaderM, GUI_CursorHeaderMI; 00721 00722 extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapArrowS, GUI_BitmapArrowSI; 00723 extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapArrowM, GUI_BitmapArrowMI; 00724 extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapArrowL, GUI_BitmapArrowLI; 00725 extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapCrossS, GUI_BitmapCrossSI; 00726 extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapCrossM, GUI_BitmapCrossMI; 00727 extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapCrossL, GUI_BitmapCrossLI; 00728 00729 extern GUI_CONST_STORAGE GUI_CURSOR_ANIM GUI_CursorAnimHourglassM; 00730 00731 /********************************************************************* 00732 * 00733 * Wrap modes 00734 */ 00735 typedef enum { GUI_WRAPMODE_NONE, GUI_WRAPMODE_WORD, GUI_WRAPMODE_CHAR } GUI_WRAPMODE; 00736 00737 /********************************************************************* 00738 * 00739 * Text related routines 00740 */ 00741 void GUI_DispCEOL (void); 00742 void GUI_DispChar (U16 c); 00743 void GUI_DispCharAt (U16 c, I16P x, I16P y); 00744 void GUI_DispChars (U16 c, int Cnt); 00745 void GUI_DispNextLine (void); 00746 void GUI_DispString (const char * s); 00747 void GUI_DispStringAt (const char * s, int x, int y); 00748 void GUI_DispStringAtCEOL (const char * s, int x, int y); 00749 void GUI_DispStringHCenterAt (const char * s, int x, int y); 00750 void GUI__DispStringInRect (const char * s, GUI_RECT * pRect, int TextAlign, int MaxNumChars); 00751 void GUI_DispStringInRect (const char * s, GUI_RECT * pRect, int TextAlign); 00752 #if GUI_SUPPORT_ROTATION 00753 void GUI_DispStringInRectEx (const char * s, GUI_RECT * pRect, int TextAlign, int MaxLen, const GUI_ROTATION * pLCD_Api); 00754 #endif 00755 void GUI_DispStringInRectMax (const char * s, GUI_RECT * pRect, int TextAlign, int MaxLen); /* Not to be doc. */ 00756 void GUI_DispStringInRectWrap (const char * s, GUI_RECT * pRect, int TextAlign, GUI_WRAPMODE WrapMode); /* Not to be doc. */ 00757 void GUI_DispStringLen (const char * s, int Len); 00758 void GUI_GetTextExtend (GUI_RECT* pRect, const char * s, int Len); 00759 int GUI_GetYAdjust (void); 00760 int GUI_GetDispPosX (void); 00761 int GUI_GetDispPosY (void); 00762 const GUI_FONT * GUI_GetFont(void); 00763 int GUI_GetCharDistX (U16 c); 00764 int GUI_GetCharDistXEx (U16 c, int * pSizeX); 00765 int GUI_GetStringDistX (const char * s); 00766 GUI_DRAWMODE GUI_GetDrawMode (void); 00767 int GUI_GetFontDistY (void); 00768 int GUI_GetFontSizeY (void); 00769 void GUI_GetFontInfo (const GUI_FONT * pFont, GUI_FONTINFO * pfi); 00770 void GUI_GetOrg (int * px, int * py); 00771 int GUI_GetYSizeOfFont (const GUI_FONT * pFont); 00772 int GUI_GetYDistOfFont (const GUI_FONT * pFont); 00773 int GUI_GetTextAlign (void); 00774 int GUI_GetTextMode (void); 00775 char GUI_IsInFont (const GUI_FONT * pFont, U16 c); 00776 int GUI_SetTextAlign (int Align); 00777 int GUI_SetTextMode (int Mode); 00778 char GUI_SetTextStyle (char Style); 00779 int GUI_SetLBorder (int x); 00780 const GUI_FONT * GUI_SetFont(const GUI_FONT * pNewFont); 00781 char GUI_GotoXY (int x, int y); 00782 char GUI_GotoX (int x); 00783 char GUI_GotoY (int y); 00784 int GUI_WrapGetNumLines (const char * pText, int xSize, GUI_WRAPMODE WrapMode); 00785 00786 int GUI_GetLeadingBlankCols (U16 c); 00787 int GUI_GetTrailingBlankCols(U16 c); 00788 00789 00790 /********************************************************************* 00791 * 00792 * System independent fonts (SIF) 00793 */ 00794 void GUI_SIF_CreateFont(const void * pFontData, GUI_FONT * pFont, const GUI_SIF_TYPE * pFontType); 00795 void GUI_SIF_DeleteFont(GUI_FONT * pFont); 00796 00797 /********************************************************************* 00798 * 00799 * External binary fonts (XBF) 00800 */ 00801 int GUI_XBF_CreateFont(GUI_FONT * pFont, GUI_XBF_DATA * pXBF, const GUI_XBF_TYPE * pFontType, GUI_XBF_GET_DATA_FUNC * pfGetData, void * pVoid); 00802 void GUI_XBF_DeleteFont(GUI_FONT * pFont); 00803 00804 /********************************************************************* 00805 * 00806 * TrueType support (TTF) 00807 */ 00808 int GUI_TTF_CreateFont (GUI_FONT * pFont, GUI_TTF_CS * pCS); 00809 int GUI_TTF_CreateFontAA (GUI_FONT * pFont, GUI_TTF_CS * pCS); 00810 void GUI_TTF_DestroyCache (void); 00811 void GUI_TTF_Done (void); 00812 int GUI_TTF_GetFamilyName(GUI_FONT * pFont, char * pBuffer, int NumBytes); 00813 int GUI_TTF_GetStyleName (GUI_FONT * pFont, char * pBuffer, int NumBytes); 00814 void GUI_TTF_SetCacheSize (unsigned MaxFaces, unsigned MaxSizes, U32 MaxBytes); 00815 00816 /********************************************************************* 00817 * 00818 * Resource file support 00819 */ 00820 int GUI_LANG_GetLang (void); 00821 int GUI_LANG_GetNumItems (int IndexLang); 00822 const char * GUI_LANG_GetText (int IndexText); 00823 int GUI_LANG_GetTextBuffered (int IndexText, char * pBuffer, int SizeOfBuffer); 00824 int GUI_LANG_GetTextBufferedEx(int IndexText, int IndexLang, char * pBuffer, int SizeOfBuffer); 00825 const char * GUI_LANG_GetTextEx (int IndexText, int IndexLang); 00826 int GUI_LANG_LoadCSV (U8 * pFileData, U32 FileSize); 00827 int GUI_LANG_LoadCSVEx (GUI_GET_DATA_FUNC * pfGetData, void * p); 00828 int GUI_LANG_LoadText (U8 * pFileData, U32 FileSize, int IndexLang); 00829 int GUI_LANG_LoadTextEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int IndexLang); 00830 int GUI_LANG_SetLang (int IndexLang); 00831 unsigned GUI_LANG_SetMaxNumLang (unsigned MaxNumLang); 00832 U16 GUI_LANG_SetSep (U16 Sep); 00833 00834 /********************************************************************* 00835 * 00836 * Unicode support 00837 */ 00838 int GUI_UC_ConvertUC2UTF8(const U16 * s, int Len, char * pBuffer, int BufferSize); 00839 int GUI_UC_ConvertUTF82UC(const char * s, int Len, U16 * pBuffer, int BufferSize); 00840 int GUI_UC_EnableBIDI (int OnOff); 00841 int GUI_UC_Encode (char * s, U16 Char); 00842 int GUI_UC_GetCharSize (const char * s); 00843 U16 GUI_UC_GetCharCode (const char * s); 00844 void GUI_UC_SetEncodeNone (void); 00845 void GUI_UC_SetEncodeUTF8 (void); 00846 void GUI_UC_SetBaseDir (int Dir); // Only available with new version of BIDI algorithm 00847 int GUI_UC_GetBaseDir (void); // Only available with new version of BIDI algorithm 00848 00849 void GUI_UC_DispString(const U16 * s); 00850 void GUI_UC2DB (U16 Code, U8 * pOut); 00851 U16 GUI_DB2UC (U8 Byte0, U8 Byte1); 00852 00853 /********************************************************************* 00854 * 00855 * Bidi support 00856 */ 00857 #define GUI_BIDI_BASEDIR_LTR 0 00858 #define GUI_BIDI_BASEDIR_RTL 1 00859 #define GUI_BIDI_BASEDIR_AUTO 2 00860 00861 /********************************************************************* 00862 * 00863 * Drawing of binary, decimal and hexadecimal values 00864 */ 00865 void GUI_DispBin (U32 v, U8 Len); 00866 void GUI_DispBinAt(U32 v, I16P x, I16P y, U8 Len); 00867 void GUI_DispDec (I32 v, U8 Len); 00868 void GUI_DispDecAt (I32 v, I16P x, I16P y, U8 Len); 00869 void GUI_DispDecMin(I32 v); 00870 void GUI_DispDecShift(I32 v, U8 Len, U8 Shift); 00871 void GUI_DispDecSpace(I32 v, U8 MaxDigits); 00872 void GUI_DispHex (U32 v, U8 Len); 00873 void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len); 00874 void GUI_DispSDec(I32 v, U8 Len); 00875 void GUI_DispSDecShift(I32 v, U8 Len, U8 Shift); 00876 00877 /********************************************************************* 00878 * 00879 * Drawing of floating point values 00880 */ 00881 void GUI_DispFloat (float v, char Len); 00882 void GUI_DispFloatFix (float v, char Len, char Fract); 00883 void GUI_DispFloatMin (float v, char Fract); 00884 void GUI_DispSFloatFix(float v, char Len, char Fract); 00885 void GUI_DispSFloatMin(float v, char Fract); 00886 00887 /********************************************************************* 00888 * 00889 * Dynamic memory management 00890 */ 00891 typedef struct { 00892 U32 TotalBytes; 00893 U32 FreeBytes; 00894 U32 UsedBytes; 00895 U32 AllocSize; 00896 U32 NumFixedBytes; 00897 U32 MaxUsedBytes; 00898 } GUI_ALLOC_INFO; 00899 00900 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumFreeBlocks(void); 00901 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumFreeBytes (void); 00902 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumUsedBlocks(void); 00903 GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumUsedBytes (void); 00904 GUI_ALLOC_DATATYPE GUI_ALLOC_GetMaxUsedBytes (void); 00905 00906 void GUI_ALLOC_GetMemInfo (GUI_ALLOC_INFO * pInfo); 00907 void GUI_ALLOC_SuppressPeak(int OnOff); 00908 00909 GUI_HMEM GUI_ALLOC_AllocInit (const void * pInitData, GUI_ALLOC_DATATYPE Size); 00910 GUI_HMEM GUI_ALLOC_AllocNoInit (GUI_ALLOC_DATATYPE size); 00911 GUI_HMEM GUI_ALLOC_AllocZero (GUI_ALLOC_DATATYPE size); 00912 void GUI_ALLOC_AssignMemory (void * p, U32 NumBytes); 00913 void GUI_ALLOC_Free (GUI_HMEM hMem); 00914 void GUI_ALLOC_FreeFixedBlock (void * p); 00915 void GUI_ALLOC_FreePtrArray (GUI_HMEM * pArray, int NumElems); 00916 void GUI_ALLOC_FreePtr (GUI_HMEM * phMem); 00917 void * GUI_ALLOC_GetFixedBlock (GUI_ALLOC_DATATYPE Size); 00918 GUI_ALLOC_DATATYPE GUI_ALLOC_GetMaxSize (void); 00919 GUI_ALLOC_DATATYPE GUI_ALLOC_GetSize (GUI_HMEM hMem); 00920 void * GUI_ALLOC_h2p (GUI_HMEM hMem); 00921 GUI_HMEM GUI_ALLOC_p2h (void * p); 00922 void GUI_ALLOC_Init (void); 00923 void GUI_ALLOC_Lock (void); 00924 void * GUI_ALLOC_LockH (GUI_HMEM hMem); 00925 GUI_HMEM GUI_ALLOC_Realloc (GUI_HMEM hOld, int NewSize); 00926 GUI_ALLOC_DATATYPE GUI_ALLOC_RequestSize (void); 00927 void GUI_ALLOC_SetAvBlockSize (U32 BlockSize); 00928 void GUI_ALLOC_Unlock (void); 00929 void * GUI_ALLOC_UnlockH (void ** pp); 00930 int GUI_ALLOC_SetMaxPercentage(int MaxPercentage); 00931 void GUI_ALLOC_Exit (void); 00932 00933 /********************************************************************* 00934 * 00935 * Memory devices: GUI_MEMDEV 00936 */ 00937 #define GUI_MEMDEV_HASTRANS 0 00938 #define GUI_MEMDEV_NOTRANS (1 << 0) 00939 00940 typedef GUI_HMEM GUI_MEMDEV_Handle; 00941 typedef void GUI_CALLBACK_VOID_P (void * p); 00942 typedef int GUI_ANIMATION_CALLBACK_FUNC(int TimeRem, void * pVoid); 00943 typedef void GUI_DRAWMEMDEV_16BPP_FUNC (void * pDst, const void * pSrc, int xSize, int ySize, int BytesPerLineDst, int BytesPerLineSrc); 00944 00945 #define GUI_DRAWMEMDEV_FUNC GUI_DRAWMEMDEV_16BPP_FUNC 00946 00947 typedef void GUI_DRAWBITMAP32_FUNC (int LayerIndex, int x, int y, U32 const * p, int xSize, int ySize, int BytesPerLine); 00948 00949 int GUI_SetFuncDrawAlpha(GUI_DRAWMEMDEV_FUNC * pfDrawAlphaMemdevFunc, GUI_DRAWBITMAP32_FUNC * pfDrawAlphaBitmapFunc); 00950 00951 extern GUI_ANIMATION_CALLBACK_FUNC * GUI_MEMDEV__pCbAnimation; 00952 extern void * GUI_MEMDEV__pVoid; 00953 00954 extern void (* GUI_MEMDEV__pfMEMDEV_Write) (GUI_MEMDEV_Handle hMem); 00955 extern void (* GUI_MEMDEV__pfMEMDEV_CopyToLCD)(GUI_MEMDEV_Handle hMem); 00956 00957 typedef struct { 00958 GUI_RECT rView, rPrev; 00959 char FirstCall; 00960 } GUI_AUTODEV; 00961 00962 typedef struct { 00963 char DrawFixed; 00964 char IsMeasurement; 00965 } GUI_AUTODEV_INFO; 00966 00967 int GUI_MEMDEV_CreateAuto(GUI_AUTODEV * pAutoDev); 00968 void GUI_MEMDEV_DeleteAuto(GUI_AUTODEV * pAutoDev); 00969 int GUI_MEMDEV_DrawAuto (GUI_AUTODEV * pAutoDev, GUI_AUTODEV_INFO * pAutoDevInfo, GUI_CALLBACK_VOID_P * pfDraw, void * pData); 00970 00971 /* Create a memory device which is compatible to the selected LCD */ 00972 GUI_MEMDEV_Handle GUI_MEMDEV_Create (int x0, int y0, int xSize, int ySize); 00973 GUI_MEMDEV_Handle GUI_MEMDEV_CreateEx (int x0, int y0, int xSize, int ySize, int Flags); 00974 GUI_MEMDEV_Handle GUI_MEMDEV_CreateFixed (int x0, int y0, int xSize, int ySize, int Flags, 00975 const GUI_DEVICE_API * pDeviceAPI, 00976 const LCD_API_COLOR_CONV * pColorConvAPI); 00977 GUI_MEMDEV_Handle GUI_MEMDEV_CreateFixed32(int x0, int y0, int xSize, int ySize); 00978 00979 void GUI_MEMDEV_Clear (GUI_MEMDEV_Handle hMem); 00980 int GUI_MEMDEV_ClearAlpha (GUI_MEMDEV_Handle hMemData, GUI_MEMDEV_Handle hMemMask); 00981 void GUI_MEMDEV_CopyFromLCD (GUI_MEMDEV_Handle hMem); 00982 void GUI_MEMDEV_CopyFromLCDAA (GUI_MEMDEV_Handle hMem); 00983 void GUI_MEMDEV_CopyToLCD (GUI_MEMDEV_Handle hMem); 00984 void GUI_MEMDEV_CopyToLCDAA (GUI_MEMDEV_Handle hMem); 00985 void GUI_MEMDEV_CopyToLCDAt (GUI_MEMDEV_Handle hMem, int x, int y); 00986 int GUI_MEMDEV_CompareWithLCD (GUI_MEMDEV_Handle hMem, int * px, int * py, int * pExp, int * pAct); 00987 void GUI_MEMDEV_Delete (GUI_MEMDEV_Handle MemDev); 00988 void GUI_MEMDEV_DrawPerspectiveX (GUI_MEMDEV_Handle hMem, int x, int y, int h0, int h1, int dx, int dy); 00989 int GUI_MEMDEV_GetXPos (GUI_MEMDEV_Handle hMem); 00990 int GUI_MEMDEV_GetXSize (GUI_MEMDEV_Handle hMem); 00991 int GUI_MEMDEV_GetYPos (GUI_MEMDEV_Handle hMem); 00992 int GUI_MEMDEV_GetYSize (GUI_MEMDEV_Handle hMem); 00993 void GUI_MEMDEV_MarkDirty (GUI_MEMDEV_Handle hMem, int x0, int y0, int x1, int y1); 00994 void GUI_MEMDEV_ReduceYSize (GUI_MEMDEV_Handle hMem, int YSize); 00995 void GUI_MEMDEV_Rotate (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); 00996 void GUI_MEMDEV_RotateAlpha (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U8 Alpha); 00997 void GUI_MEMDEV_RotateHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag); 00998 void GUI_MEMDEV__Rotate (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U32 Mask); 00999 void GUI_MEMDEV__RotateHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag, U32 Mask); 01000 void GUI_MEMDEV_RotateHQ (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); 01001 void GUI_MEMDEV_RotateHQAlpha (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U8 Alpha); 01002 void GUI_MEMDEV_RotateHQHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag); 01003 void GUI_MEMDEV_RotateHQT (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); 01004 void GUI_MEMDEV_RotateHQTI (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); 01005 GUI_MEMDEV_Handle GUI_MEMDEV_Select (GUI_MEMDEV_Handle hMem); /* Select (activate) a particular memory device. */ 01006 void GUI_MEMDEV_SetOrg (GUI_MEMDEV_Handle hMem, int x0, int y0); 01007 void GUI_MEMDEV_WriteAt (GUI_MEMDEV_Handle hMem, int x, int y); 01008 void GUI_MEMDEV_Write (GUI_MEMDEV_Handle hMem); 01009 void GUI_MEMDEV_WriteAlphaAt (GUI_MEMDEV_Handle hMem, int Alpha, int x, int y); 01010 void GUI_MEMDEV_WriteAlpha (GUI_MEMDEV_Handle hMem, int Alpha); 01011 void GUI_MEMDEV_WriteExAt (GUI_MEMDEV_Handle hMem, int x, int y, int xMag, int yMag, int Alpha); 01012 void GUI_MEMDEV_WriteEx (GUI_MEMDEV_Handle hMem, int xMag, int yMag, int Alpha); 01013 void GUI_MEMDEV_WriteOpaque (GUI_MEMDEV_Handle hMem); 01014 void GUI_MEMDEV_WriteOpaqueAt (GUI_MEMDEV_Handle hMem, int x, int y); 01015 int GUI_MEMDEV_Draw (GUI_RECT * pRect, GUI_CALLBACK_VOID_P * pfDraw, void * pData, int NumLines, int Flags); 01016 void* GUI_MEMDEV_GetDataPtr (GUI_MEMDEV_Handle hMem); 01017 void GUI_MEMDEV_SetColorConv (GUI_MEMDEV_Handle hMem, const LCD_API_COLOR_CONV * pColorConvAPI); 01018 const LCD_API_COLOR_CONV * GUI_MEMDEV_GetColorConv(GUI_MEMDEV_Handle hMemDev); 01019 int GUI_MEMDEV_GetBitsPerPixel (GUI_MEMDEV_Handle hMemDev); 01020 int GUI_MEMDEV_FadeInDevices (GUI_MEMDEV_Handle hMem0, GUI_MEMDEV_Handle hMem1, int Period); 01021 int GUI_MEMDEV_FadeOutDevices (GUI_MEMDEV_Handle hMem0, GUI_MEMDEV_Handle hMem1, int Period); 01022 void GUI_MEMDEV_SerializeBMP (GUI_MEMDEV_Handle hDev, GUI_CALLBACK_VOID_U8_P * pfSerialize, void * p); 01023 void GUI_MEMDEV_SetAnimationCallback(GUI_ANIMATION_CALLBACK_FUNC * pCbAnimation, void * pVoid); 01024 void GUI_MEMDEV__FadeDevice (GUI_MEMDEV_Handle hMemWin, GUI_MEMDEV_Handle hMemBk, GUI_MEMDEV_Handle hMemDst, U8 Intens); 01025 void GUI_MEMDEV__FadeDeviceEx (GUI_MEMDEV_Handle hMemWin, GUI_MEMDEV_Handle hMemBk, GUI_MEMDEV_Handle hMemDst, U8 Intens, int xPosWin, int yPosWin); 01026 int GUI_MEMDEV_PunchOutDevice (GUI_MEMDEV_Handle hMemData, GUI_MEMDEV_Handle hMemMask); 01027 void GUI_MEMDEV_SetTimePerFrame (unsigned TimePerFrame); 01028 int GUI_MEMDEV_MULTIBUF_Enable (int OnOff); 01029 01030 void GUI_SelectLCD(void); 01031 01032 /* Blurring, dithering and blending */ 01033 GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32 (GUI_MEMDEV_Handle hMem, U8 Depth); 01034 GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32HQ(GUI_MEMDEV_Handle hMem, U8 Depth); 01035 GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32LQ(GUI_MEMDEV_Handle hMem, U8 Depth); 01036 void GUI_MEMDEV_SetBlurHQ (void); 01037 void GUI_MEMDEV_SetBlurLQ (void); 01038 int GUI_MEMDEV_BlendColor32 (GUI_MEMDEV_Handle hMem, U32 BlendColor, U8 BlendIntens); 01039 int GUI_MEMDEV_Dither32 (GUI_MEMDEV_Handle hMem, const LCD_API_COLOR_CONV * pColorConvAPI); 01040 01041 /* Optional custom drawing of 16bpp memory devices */ 01042 void GUI_MEMDEV_SetDrawMemdev16bppFunc(GUI_DRAWMEMDEV_16BPP_FUNC * pfDrawMemdev16bppFunc); 01043 01044 /********************************************************************* 01045 * 01046 * Alpha blending 01047 */ 01048 typedef struct { 01049 U32 UserAlpha; 01050 } GUI_ALPHA_STATE; 01051 01052 #define GUI_MAKE_ALPHA(Alpha, Color) ((U32)(((U32)Alpha << 24) | (Color & 0xFFFFFF))) 01053 01054 unsigned GUI_EnableAlpha (unsigned OnOff); 01055 U32 GUI_RestoreUserAlpha (GUI_ALPHA_STATE * pAlphaState); 01056 unsigned GUI_SetAlpha (U8 Alpha); 01057 U32 GUI_SetUserAlpha (GUI_ALPHA_STATE * pAlphaState, U32 UserAlpha); 01058 void GUI_SetFuncAlphaBlending(void (* pfAlphaBlending)(LCD_COLOR *, LCD_COLOR *, LCD_COLOR *, U32)); 01059 void GUI_SetFuncMixColors (LCD_COLOR (* pFunc)(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens)); 01060 void GUI_SetFuncMixColorsBulk(void (* pFunc)(U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens)); 01061 unsigned GUI_PreserveTrans (unsigned OnOff); 01062 01063 /********************************************************************* 01064 * 01065 * Multi layer support 01066 */ 01067 unsigned GUI_SelectLayer(unsigned Index); 01068 unsigned GUI_GetSelLayer(void); 01069 01070 int GUI_SetLayerPosEx (unsigned Index, int xPos, int yPos); 01071 int GUI_SetLayerSizeEx (unsigned Index, int xSize, int ySize); 01072 int GUI_SetLayerVisEx (unsigned Index, int OnOff); 01073 int GUI_SetLayerAlphaEx(unsigned Index, int Alpha); 01074 int GUI_GetLayerPosEx (unsigned Index, int * pxPos, int * pyPos); 01075 01076 void GUI_AssignCursorLayer(unsigned Index, unsigned CursorLayer); 01077 unsigned GUI_GetCursorLayer (unsigned Index); 01078 01079 /********************************************************************* 01080 * 01081 * Multiple buffers and display origin 01082 */ 01083 void GUI_SetOrg(int x, int y); 01084 01085 void GUI_MULTIBUF_Begin (void); 01086 void GUI_MULTIBUF_BeginEx (int LayerIndex); 01087 void GUI_MULTIBUF_End (void); 01088 void GUI_MULTIBUF_EndEx (int LayerIndex); 01089 void GUI_MULTIBUF_Config (int NumBuffers); 01090 void GUI_MULTIBUF_ConfigEx (int LayerIndex, int NumBuffers); 01091 void GUI_MULTIBUF_Confirm (int Index); 01092 void GUI_MULTIBUF_ConfirmEx (int LayerIndex, int BufferIndex); 01093 int GUI_MULTIBUF_GetNumBuffers (void); 01094 int GUI_MULTIBUF_GetNumBuffersEx(int LayerIndex); 01095 void GUI_MULTIBUF_SetLayerMask (U32 LayerMask); 01096 void GUI_MULTIBUF_UseSingleBuffer(void); 01097 01098 /********************************************************************* 01099 * 01100 * emWinSPY 01101 */ 01102 int GUI_SPY_Process (GUI_tSend pfSend, GUI_tRecv pfRecv, void * pConnectInfo); 01103 void GUI_SPY_SetMemHandler(GUI_tMalloc pMalloc, GUI_tFree pFree); 01104 int GUI_SPY_StartServer (void); 01105 int GUI_SPY_X_StartServer(void); 01106 01107 /********************************************************************* 01108 * 01109 * QR-Codes 01110 */ 01111 #define GUI_QR_ECLEVEL_L 0 01112 #define GUI_QR_ECLEVEL_M 1 01113 #define GUI_QR_ECLEVEL_Q 2 01114 #define GUI_QR_ECLEVEL_H 3 01115 01116 typedef struct { 01117 int Version; // Version according to QR code documentation 01118 int Width; // Number of 'Modules' 01119 int Size; // Size of bitmap in pixels 01120 } GUI_QR_INFO; 01121 01122 GUI_HMEM GUI_QR_Create (const char * pText, int PixelSize, int EccLevel, int Version); 01123 void GUI_QR_Draw (GUI_HMEM hQR, int xPos, int yPos); 01124 void GUI_QR_GetInfo(GUI_HMEM hQR, GUI_QR_INFO * pInfo); 01125 void GUI_QR_Delete (GUI_HMEM hQR); 01126 01127 /********************************************************************* 01128 * 01129 * Basics for animations 01130 */ 01131 #define ANIM_LINEAR GUI_ANIM__Linear 01132 #define ANIM_ACCEL GUI_ANIM__Accel 01133 #define ANIM_DECEL GUI_ANIM__Decel 01134 #define ANIM_ACCELDECEL GUI_ANIM__AccelDecel 01135 01136 #define GUI_ANIM_START 0 01137 #define GUI_ANIM_RUNNING 1 01138 #define GUI_ANIM_END 2 01139 01140 #ifndef GUI_ANIM_RANGE 01141 #define GUI_ANIM_RANGE 32767L 01142 #endif 01143 01144 typedef GUI_HMEM GUI_ANIM_HANDLE; 01145 01146 typedef I32 (* GUI_ANIM_GETPOS_FUNC)(GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow); 01147 01148 typedef struct { 01149 int Pos; 01150 int State; 01151 GUI_ANIM_HANDLE hAnim; 01152 GUI_TIMER_TIME Period; 01153 } GUI_ANIM_INFO; 01154 01155 typedef void GUI_ANIMATION_FUNC(GUI_ANIM_INFO * pInfo, void * pVoid); 01156 01157 I32 GUI_ANIM__Linear (GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow); 01158 I32 GUI_ANIM__Decel (GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow); 01159 I32 GUI_ANIM__Accel (GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow); 01160 I32 GUI_ANIM__AccelDecel(GUI_TIMER_TIME ts, GUI_TIMER_TIME te, GUI_TIMER_TIME tNow); 01161 01162 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); 01163 GUI_ANIM_HANDLE GUI_ANIM_Create (GUI_TIMER_TIME Period, unsigned MinTimePerFrame, void * pVoid, void (* pfSliceInfo)(int State, void * pVoid)); 01164 void GUI_ANIM_Delete (GUI_ANIM_HANDLE hAnim); 01165 int GUI_ANIM_Exec (GUI_ANIM_HANDLE hAnim); 01166 void GUI_ANIM_Start (GUI_ANIM_HANDLE hAnim); 01167 void GUI_ANIM_StartEx(GUI_ANIM_HANDLE hAnim, int NumLoops, void (* pfOnDelete)(void * pVoid)); 01168 void GUI_ANIM_Stop (GUI_ANIM_HANDLE hAnim); 01169 01170 /********************************************************************* 01171 * 01172 * Display orientation 01173 */ 01174 /********************************************************************* 01175 * 01176 * GUI_ORIENTATION_API 01177 */ 01178 typedef struct { 01179 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); 01180 void (* pfDrawHLine )(GUI_DEVICE * pDevice, int x0, int y0, int x1); 01181 void (* pfDrawVLine )(GUI_DEVICE * pDevice, int x , int y0, int y1); 01182 void (* pfFillRect )(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1); 01183 LCD_PIXELINDEX (* pfGetPixelIndex)(GUI_DEVICE * pDevice, int x, int y); 01184 void (* pfSetPixelIndex)(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX ColorIndex); 01185 void (* pfXorPixel )(GUI_DEVICE * pDevice, int x, int y); 01186 int BytesPerPixel; 01187 } GUI_ORIENTATION_API; 01188 01189 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C0; 01190 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C8; 01191 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C16; 01192 extern const GUI_ORIENTATION_API GUI_OrientationAPI_C32; 01193 01194 #define GUI_ORIENTATION_C0 &GUI_OrientationAPI_C0 01195 #define GUI_ORIENTATION_C8 &GUI_OrientationAPI_C8 01196 #define GUI_ORIENTATION_C16 &GUI_OrientationAPI_C16 01197 #define GUI_ORIENTATION_C32 &GUI_OrientationAPI_C32 01198 01199 int GUI_SetOrientation (int Orientation); 01200 int GUI_SetOrientationEx (int Orientation, int LayerIndex); 01201 int GUI_SetOrientationExCached(int Orientation, int LayerIndex, const GUI_ORIENTATION_API * pAPI); 01202 01203 /********************************************************************* 01204 * 01205 * Measure device: GUI_MEASDEV 01206 */ 01207 typedef GUI_HMEM GUI_MEASDEV_Handle; 01208 01209 GUI_MEASDEV_Handle GUI_MEASDEV_Create (void); 01210 void GUI_MEASDEV_Delete (GUI_MEASDEV_Handle hMemDev); 01211 void GUI_MEASDEV_Select (GUI_MEASDEV_Handle hMem); 01212 void GUI_MEASDEV_GetRect(GUI_MEASDEV_Handle hMem, GUI_RECT * pRect); 01213 void GUI_MEASDEV_ClearRect(GUI_MEASDEV_Handle hMem); 01214 01215 /********************************************************************* 01216 * 01217 * Polygon helpers 01218 */ 01219 void GUI_RotatePolygon (GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, float Angle); 01220 void GUI_MagnifyPolygon(GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, int Mag); 01221 void GUI_EnlargePolygon(GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, int Len); 01222 01223 /********************************************************************* 01224 * 01225 * Streamed bitmaps 01226 */ 01227 #define GUI_BITMAPSTREAM_GET_BUFFER 1 01228 #define GUI_BITMAPSTREAM_RELEASE_BUFFER 2 01229 #define GUI_BITMAPSTREAM_MODIFY_PALETTE 3 01230 01231 #define DECLARE_CREATE_FROM_STREAM(ID) int GUI_CreateBitmapFromStream##ID(GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const void * p); 01232 01233 DECLARE_CREATE_FROM_STREAM(IDX) 01234 DECLARE_CREATE_FROM_STREAM(RLE4) 01235 DECLARE_CREATE_FROM_STREAM(RLE8) 01236 DECLARE_CREATE_FROM_STREAM(565) 01237 DECLARE_CREATE_FROM_STREAM(M565) 01238 DECLARE_CREATE_FROM_STREAM(555) 01239 DECLARE_CREATE_FROM_STREAM(M555) 01240 DECLARE_CREATE_FROM_STREAM(A565) 01241 DECLARE_CREATE_FROM_STREAM(AM565) 01242 DECLARE_CREATE_FROM_STREAM(A555) 01243 DECLARE_CREATE_FROM_STREAM(AM555) 01244 DECLARE_CREATE_FROM_STREAM(RLE16) 01245 DECLARE_CREATE_FROM_STREAM(RLEM16) 01246 DECLARE_CREATE_FROM_STREAM(24) 01247 DECLARE_CREATE_FROM_STREAM(Alpha) 01248 DECLARE_CREATE_FROM_STREAM(M8888I) 01249 DECLARE_CREATE_FROM_STREAM(RLEAlpha) 01250 DECLARE_CREATE_FROM_STREAM(RLE32) 01251 DECLARE_CREATE_FROM_STREAM(444_12) 01252 DECLARE_CREATE_FROM_STREAM(M444_12) 01253 DECLARE_CREATE_FROM_STREAM(444_12_1) 01254 DECLARE_CREATE_FROM_STREAM(M444_12_1) 01255 DECLARE_CREATE_FROM_STREAM(444_16) 01256 DECLARE_CREATE_FROM_STREAM(M444_16) 01257 01258 int GUI_CreateBitmapFromStream (GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const void * p); 01259 void GUI_DrawStreamedBitmap (const void * p, int x, int y); 01260 void GUI_DrawStreamedBitmapAuto (const void * p, int x, int y); 01261 int GUI_DrawStreamedBitmapEx (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01262 int GUI_DrawStreamedBitmapExAuto (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01263 int GUI_DrawStreamedBitmap555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01264 int GUI_DrawStreamedBitmapM555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01265 int GUI_DrawStreamedBitmap565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01266 int GUI_DrawStreamedBitmapM565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01267 int GUI_DrawStreamedBitmapA555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01268 int GUI_DrawStreamedBitmapAM555Ex(GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01269 int GUI_DrawStreamedBitmapA565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01270 int GUI_DrawStreamedBitmapAM565Ex(GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01271 int GUI_DrawStreamedBitmap24Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); 01272 void GUI_GetStreamedBitmapInfo (const void * p, GUI_BITMAPSTREAM_INFO * pInfo); 01273 int GUI_GetStreamedBitmapInfoEx (GUI_GET_DATA_FUNC * pfGetData, const void * p, GUI_BITMAPSTREAM_INFO * pInfo); 01274 void GUI_SetStreamedBitmapHook (GUI_BITMAPSTREAM_CALLBACK pfStreamedBitmapHook); 01275 01276 void LCD__RLE4_SetFunc (GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off, const LCD_LOGPALETTE * pLogPal); 01277 void LCD__RLE8_SetFunc (GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off, const LCD_LOGPALETTE * pLogPal); 01278 void LCD__RLE16_SetFunc(GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off); 01279 void LCD__RLE32_SetFunc(GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off); 01280 01281 /********************************************************************* 01282 * 01283 * BMP-export 01284 */ 01285 void GUI_BMP_Serialize (GUI_CALLBACK_VOID_U8_P * pfSerialize, void * p); 01286 void GUI_BMP_SerializeEx (GUI_CALLBACK_VOID_U8_P * pfSerialize, int x0, int y0, int xSize, int ySize, void * p); 01287 void GUI_BMP_SerializeExBpp(GUI_CALLBACK_VOID_U8_P * pfSerialize, int x0, int y0, int xSize, int ySize, void * p, int BitsPerPixel); 01288 01289 /********************************************************************* 01290 * 01291 * Time / execution related routines 01292 */ 01293 void GUI_Delay (int Period); 01294 GUI_TIMER_TIME GUI_GetTime (void); 01295 int GUI_GetTimeSlice(void); 01296 int GUI_Exec (void); /* Execute all jobs ... Return 0 if nothing was done. */ 01297 int GUI_Exec1 (void); /* Execute one job ... Return 0 if nothing was done. */ 01298 void GUI_SetTimeSlice(int TimeSlice); 01299 01300 /********************************************************************* 01301 * 01302 * MessageBox 01303 */ 01304 int GUI_MessageBox (const char * sMessage, const char * sCaption, int Flags); 01305 #define GUI_MESSAGEBOX_CF_MOVEABLE (1 << 0) 01306 #define GUI_MESSAGEBOX_CF_MODAL (1 << 1) 01307 01308 #define GUI_MB_OK 20 01309 #define GUI_MB_WARNING 21 01310 01311 /********************************************************************* 01312 * 01313 * GUI_TIMER module 01314 */ 01315 #define GUI_TIMER_CF_WINDOW (1 << 0) 01316 #define GUI_TIMER_CF_CURSOR (1 << 1) 01317 01318 typedef GUI_HMEM GUI_TIMER_HANDLE; 01319 01320 typedef struct { 01321 GUI_TIMER_TIME Time; 01322 U32 Context; 01323 GUI_TIMER_HANDLE hTimer; 01324 } GUI_TIMER_MESSAGE; 01325 01326 typedef void GUI_TIMER_CALLBACK(/*const*/ GUI_TIMER_MESSAGE* pTM); 01327 01328 GUI_TIMER_HANDLE GUI_TIMER_Create (GUI_TIMER_CALLBACK * cb, GUI_TIMER_TIME Time, U32 Context, U16 Flags); 01329 void GUI_TIMER_Delete (GUI_TIMER_HANDLE hObj); 01330 01331 /* Methods changing properties */ 01332 GUI_TIMER_TIME GUI_TIMER_GetPeriod(GUI_TIMER_HANDLE hObj); 01333 void GUI_TIMER_SetPeriod(GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period); 01334 void GUI_TIMER_SetTime (GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period); 01335 void GUI_TIMER_SetDelay (GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Delay); 01336 void GUI_TIMER_Restart (GUI_TIMER_HANDLE hObj); 01337 int GUI_TIMER_GetFlag (GUI_TIMER_HANDLE hObj, int Flag); /* Not to be documented */ 01338 int GUI_TIMER_Exec (void); 01339 01340 /********************************************************************* 01341 * 01342 * Anti Aliasing 01343 */ 01344 #define GUI_AA_TRANS 0 // Foreground color mixed up with current content of framebuffer 01345 #define GUI_AA_NOTRANS 1 // Foreground color mixed up with current background color 01346 01347 void GUI_AA_DisableHiRes (void); 01348 void GUI_AA_EnableHiRes (void); 01349 int GUI_AA_GetFactor (void); 01350 void GUI_AA_SetFactor (int Factor); 01351 void GUI_AA_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1); 01352 void GUI_AA_DrawLine (int x0, int y0, int x1, int y1); 01353 void GUI_AA_DrawPolyOutline (const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y); 01354 void GUI_AA_DrawPolyOutlineEx(const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y, GUI_POINT * pBuffer); 01355 void GUI_AA_DrawRoundedRect (int x0, int y0, int x1, int y1, int r); 01356 void GUI_AA_DrawRoundedRectEx(GUI_RECT * pRect, int r); 01357 void GUI_AA_FillCircle (int x0, int y0, int r); 01358 void GUI_AA_FillEllipse (int x0, int y0, int rx, int ry); 01359 void GUI_AA_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); 01360 void GUI_AA_FillRoundedRect (int x0, int y0, int x1, int y1, int r); 01361 void GUI_AA_FillRoundedRectEx(GUI_RECT * pRect, int r); 01362 int GUI_AA_SetDrawMode (int Mode); 01363 void GUI_AA_SetpfDrawCharAA4 (int (* pfDrawChar)(int LayerIndex, int x, int y, U8 const * p, int xSize, int ySize, int BytesPerLine)); 01364 void GUI_AA_SetGammaAA4 (U8 * pGamma); 01365 void GUI_AA_GetGammaAA4 (U8 * pGamma); 01366 void GUI_AA_EnableGammaAA4 (int OnOff); 01367 01368 #define GUI_AA_PreserveTrans(OnOff) GUI_PreserveTrans(OnOff) // For compatibility only 01369 01370 /********************************************************************* 01371 * 01372 * Keyboard 01373 */ 01374 /* Message layer */ 01375 void GUI_StoreKeyMsg(int Key, int Pressed); 01376 void GUI_SendKeyMsg (int Key, int Pressed); 01377 int GUI_PollKeyMsg (void); 01378 void GUI_GetKeyState(GUI_KEY_STATE * pState); 01379 01380 void GUI_KEY__SetHook(void (* pfHook)(const GUI_KEY_STATE *)); 01381 01382 /* Application layer */ 01383 int GUI_GetKey(void); 01384 int GUI_WaitKey(void); 01385 void GUI_StoreKey(int c); 01386 void GUI_ClearKeyBuffer(void); 01387 01388 /********************************************************************* 01389 * 01390 * Task synchronization 01391 */ 01392 void GUI_WaitEvent (void); 01393 void GUI_SignalEvent (void); 01394 void GUI_SetSignalEventFunc (GUI_SIGNAL_EVENT_FUNC pfSignalEvent); 01395 void GUI_SetWaitEventFunc (GUI_WAIT_EVENT_FUNC pfWaitEvent); 01396 void GUI_SetWaitEventTimedFunc(GUI_WAIT_EVENT_TIMED_FUNC pfWaitEventTimed); 01397 01398 /********************************************************************* 01399 * 01400 * Joystick, generic 01401 */ 01402 void GUI_JOYSTICK_StoreState(const GUI_PID_STATE * pState); 01403 01404 /********************************************************************* 01405 * 01406 * PID (Pointer input device ... mouse/touch) 01407 */ 01408 void GUI_PID_StoreState (const GUI_PID_STATE * pState); 01409 int GUI_PID_GetState ( GUI_PID_STATE * pState); 01410 void GUI_PID_GetCurrentState( GUI_PID_STATE * pState); 01411 int GUI_PID_IsEmpty (void); 01412 int GUI_PID_IsPressed (void); 01413 void GUI_PID_SetHook (void (* pfHook)( GUI_PID_STATE *)); // Public 01414 void GUI_PID__SetHook (void (* pfHook)(const GUI_PID_STATE *)); // Private 01415 01416 /********************************************************************* 01417 * 01418 * Mouse, generic 01419 */ 01420 int GUI_MOUSE_GetState ( GUI_PID_STATE * pState); 01421 void GUI_MOUSE_StoreState(const GUI_PID_STATE * pState); 01422 01423 /********************************************************************* 01424 * 01425 * TOUCH screen, generic 01426 */ 01427 int GUI_TOUCH_GetLayer (void); 01428 int GUI_TOUCH_GetState (GUI_PID_STATE * pState); 01429 void GUI_TOUCH_GetUnstable (int * px, int * py); /* for diagnostics only */ 01430 void GUI_TOUCH_SetLayer (int Layer); 01431 void GUI_TOUCH_StoreState (int x, int y); 01432 void GUI_TOUCH_StoreStateEx (const GUI_PID_STATE * pState); 01433 void GUI_TOUCH_StoreUnstable(int x, int y); 01434 01435 /********************************************************************* 01436 * 01437 * Mouse, PS2 driver 01438 */ 01439 void GUI_MOUSE_DRIVER_PS2_Init(void); /* optional */ 01440 void GUI_MOUSE_DRIVER_PS2_OnRx(unsigned char Data); 01441 01442 /********************************************************************* 01443 * 01444 * TOUCH screen, analog driver 01445 */ 01446 int GUI_TOUCH_CalcCoefficients (int NumPoints, int * pxRef, int * pyRef, int * pxSample, int * pySample, int xSize, int ySize); 01447 int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phys1); 01448 int GUI_TOUCH_CalibratePoint (int * px, int * py); 01449 void GUI_TOUCH_EnableCalibration(int OnOff); 01450 void GUI_TOUCH_Exec (void); 01451 int GUI_TOUCH_GetxPhys (void); /* for diagnostics only */ 01452 int GUI_TOUCH_GetyPhys (void); /* for diagnostics only */ 01453 void GUI_TOUCH_SetCalibration (int (* pFunc)(int *, int *)); /* Not to be documented */ 01454 void GUI_TOUCH_SetOrientation (unsigned Orientation); 01455 int GUI_TOUCH_TransformPoint (int * px, int * py); /* Not to be documented */ 01456 01457 /********************************************************************* 01458 * 01459 * TOUCH: imports 01460 * 01461 * Please note: The following functions are required by the module. 01462 * They need to be part of your application software (or rather, part 01463 * of the hardware-layer of your software). 01464 */ 01465 void GUI_TOUCH_X_ActivateX(void); 01466 void GUI_TOUCH_X_ActivateY(void); 01467 void GUI_TOUCH_X_Disable (void); 01468 int GUI_TOUCH_X_MeasureX (void); 01469 int GUI_TOUCH_X_MeasureY (void); 01470 01471 /********************************************************************* 01472 * 01473 * GUI_X_ 01474 * 01475 * Externals, to be defined by application 01476 * 01477 * The externals defined below should be defined by the 01478 * application. They are per default contained in the module 01479 * GUI_X.c. 01480 * Note that a lot if not all of these are not required in most target 01481 * systems. 01482 * For this module, samples are available for configurations 01483 * with or without operating system. 01484 */ 01485 // 01486 // Configuration 01487 // 01488 void GUI_X_Config(void); 01489 void GUI_X_Init (void); 01490 01491 // 01492 // Timing routines 01493 // 01494 GUI_TIMER_TIME GUI_X_GetTime(void); 01495 void GUI_X_Delay (int Period); 01496 01497 // 01498 // Multitask routines - required only if multitasking is used (#define GUI_OS 1) 01499 // 01500 void GUI_X_Unlock (void); 01501 void GUI_X_Lock (void); 01502 U32 GUI_X_GetTaskId(void); 01503 void GUI_X_InitOS (void); 01504 01505 // 01506 // Event driving (optional with multitasking) 01507 // 01508 void GUI_X_ExecIdle (void); 01509 void GUI_X_WaitEvent (void); 01510 void GUI_X_WaitEventTimed(int Period); 01511 void GUI_X_SignalEvent (void); 01512 01513 // 01514 // Recording (logs/warnings and errors) - required only for higher levels 01515 // 01516 void GUI_X_Log (const char * s); 01517 void GUI_X_Warn (const char * s); 01518 void GUI_X_ErrorOut(const char * s); 01519 01520 /********************************************************************* 01521 * 01522 * Constants for fonts and bitmaps 01523 */ 01524 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE4; 01525 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE4Ex; 01526 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE8; 01527 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE8Ex; 01528 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE16; 01529 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE16Ex; 01530 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEM16; 01531 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEM16Ex; 01532 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE32; 01533 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE32Ex; 01534 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEAlpha; 01535 01536 extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_12; 01537 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_12; 01538 extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_12_1; 01539 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_12_1; 01540 extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_16; 01541 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_16; 01542 extern const GUI_BITMAP_METHODS GUI_BitmapMethods555; 01543 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM555; 01544 extern const GUI_BITMAP_METHODS GUI_BitmapMethods565; 01545 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM565; 01546 extern const GUI_BITMAP_METHODS GUI_BitmapMethods24; 01547 extern const GUI_BITMAP_METHODS GUI_BitmapMethods888; 01548 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM888; 01549 extern const GUI_BITMAP_METHODS GUI_BitmapMethods8888; 01550 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM8888I; 01551 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsA565; 01552 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsAM565; 01553 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsA555; 01554 extern const GUI_BITMAP_METHODS GUI_BitmapMethodsAM555; 01555 01556 #define GUI_COMPRESS_RLE4 0 01557 #define GUI_COMPRESS_RLE8 0 01558 01559 #define GUI_DRAW_RLE4 &GUI_BitmapMethodsRLE4 /* Method table ! */ 01560 #define GUI_DRAW_RLE8 &GUI_BitmapMethodsRLE8 /* Method table ! */ 01561 #define GUI_DRAW_RLE16 &GUI_BitmapMethodsRLE16 /* Method table ! */ 01562 #define GUI_DRAW_RLEM16 &GUI_BitmapMethodsRLEM16 /* Method table ! */ 01563 #define GUI_DRAW_RLE32 &GUI_BitmapMethodsRLE32 /* Method table ! */ 01564 #define GUI_DRAW_RLEALPHA &GUI_BitmapMethodsRLEAlpha /* Method table ! */ 01565 01566 #define GUI_DRAW_BMP444_12 &GUI_BitmapMethods444_12 /* Method table ! */ 01567 #define GUI_DRAW_BMPM444_12 &GUI_BitmapMethodsM444_12 /* Method table ! */ 01568 #define GUI_DRAW_BMP444_12_1 &GUI_BitmapMethods444_12_1 /* Method table ! */ 01569 #define GUI_DRAW_BMPM444_12_1 &GUI_BitmapMethodsM444_12_1 /* Method table ! */ 01570 #define GUI_DRAW_BMP444_16 &GUI_BitmapMethods444_16 /* Method table ! */ 01571 #define GUI_DRAW_BMPM444_16 &GUI_BitmapMethodsM444_16 /* Method table ! */ 01572 #define GUI_DRAW_BMP555 &GUI_BitmapMethods555 /* Method table ! */ 01573 #define GUI_DRAW_BMPM555 &GUI_BitmapMethodsM555 /* Method table ! */ 01574 #define GUI_DRAW_BMP565 &GUI_BitmapMethods565 /* Method table ! */ 01575 #define GUI_DRAW_BMPM565 &GUI_BitmapMethodsM565 /* Method table ! */ 01576 #define GUI_DRAW_BMP24 &GUI_BitmapMethods24 /* Method table ! */ 01577 #define GUI_DRAW_BMP888 &GUI_BitmapMethods888 /* Method table ! */ 01578 #define GUI_DRAW_BMPM888 &GUI_BitmapMethodsM888 /* Method table ! */ 01579 #define GUI_DRAW_BMP8888 &GUI_BitmapMethods8888 /* Method table ! */ 01580 #define GUI_DRAW_BMPM8888I &GUI_BitmapMethodsM8888I /* Method table ! */ 01581 #define GUI_DRAW_BMPA555 &GUI_BitmapMethodsA555 /* Method table ! */ 01582 #define GUI_DRAW_BMPAM555 &GUI_BitmapMethodsAM555 /* Method table ! */ 01583 #define GUI_DRAW_BMPA565 &GUI_BitmapMethodsA565 /* Method table ! */ 01584 #define GUI_DRAW_BMPAM565 &GUI_BitmapMethodsAM565 /* Method table ! */ 01585 01586 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop; 01587 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_Ext; 01588 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_Frm; 01589 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA2; 01590 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA4; 01591 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA2_EXT; 01592 extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA4_EXT; 01593 01594 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop; 01595 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_Ext; 01596 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_Frm; 01597 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_AA2_Ext; 01598 extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_AA4_Ext; 01599 01600 /********************************************************************* 01601 * 01602 * GUI_KEY_... 01603 * 01604 * These ID values are basically meant to be used with widgets 01605 * Note that we have chosen the values to be close to existing 01606 * "standards", so do not change them unless forced to. 01607 * 01608 */ 01609 #define GUI_KEY_BACKSPACE 8 /* ASCII: BACKSPACE Crtl-H */ 01610 #define GUI_KEY_TAB 9 /* ASCII: TAB Crtl-I */ 01611 #define GUI_KEY_BACKTAB 10 01612 #define GUI_KEY_ENTER 13 /* ASCII: ENTER Crtl-M */ 01613 #define GUI_KEY_LEFT 16 01614 #define GUI_KEY_UP 17 01615 #define GUI_KEY_RIGHT 18 01616 #define GUI_KEY_DOWN 19 01617 #define GUI_KEY_HOME 23 01618 #define GUI_KEY_END 24 01619 #define GUI_KEY_SHIFT 25 01620 #define GUI_KEY_CONTROL 26 01621 #define GUI_KEY_ESCAPE 27 /* ASCII: ESCAPE 0x1b */ 01622 #define GUI_KEY_INSERT 29 01623 #define GUI_KEY_DELETE 30 01624 #define GUI_KEY_SPACE 32 01625 #define GUI_KEY_PGUP 33 01626 #define GUI_KEY_PGDOWN 34 01627 01628 #define GUI_KEY_F1 40 01629 #define GUI_KEY_F2 41 01630 01631 /********************************************************************* 01632 * 01633 * Dialog item IDs 01634 * 01635 * The IDs below are arbitrary values. They just have to be unique 01636 * within the dialog. 01637 * 01638 * If you use your own Ids, we recommend to use values above GUI_ID_USER. 01639 */ 01640 #define GUI_ID_OK 1 01641 #define GUI_ID_CANCEL 2 01642 #define GUI_ID_YES 3 01643 #define GUI_ID_NO 4 01644 #define GUI_ID_CLOSE 5 01645 #define GUI_ID_HELP 6 01646 #define GUI_ID_MAXIMIZE 7 01647 #define GUI_ID_MINIMIZE 8 01648 01649 #define GUI_ID_VSCROLL 0xFE 01650 #define GUI_ID_HSCROLL 0xFF 01651 01652 #define GUI_ID_EDIT0 0x100 01653 #define GUI_ID_EDIT1 0x101 01654 #define GUI_ID_EDIT2 0x102 01655 #define GUI_ID_EDIT3 0x103 01656 #define GUI_ID_EDIT4 0x104 01657 #define GUI_ID_EDIT5 0x105 01658 #define GUI_ID_EDIT6 0x106 01659 #define GUI_ID_EDIT7 0x107 01660 #define GUI_ID_EDIT8 0x108 01661 #define GUI_ID_EDIT9 0x109 01662 01663 #define GUI_ID_LISTBOX0 0x110 01664 #define GUI_ID_LISTBOX1 0x111 01665 #define GUI_ID_LISTBOX2 0x112 01666 #define GUI_ID_LISTBOX3 0x113 01667 #define GUI_ID_LISTBOX4 0x114 01668 #define GUI_ID_LISTBOX5 0x115 01669 #define GUI_ID_LISTBOX6 0x116 01670 #define GUI_ID_LISTBOX7 0x117 01671 #define GUI_ID_LISTBOX8 0x118 01672 #define GUI_ID_LISTBOX9 0x119 01673 01674 #define GUI_ID_CHECK0 0x120 01675 #define GUI_ID_CHECK1 0x121 01676 #define GUI_ID_CHECK2 0x122 01677 #define GUI_ID_CHECK3 0x123 01678 #define GUI_ID_CHECK4 0x124 01679 #define GUI_ID_CHECK5 0x125 01680 #define GUI_ID_CHECK6 0x126 01681 #define GUI_ID_CHECK7 0x127 01682 #define GUI_ID_CHECK8 0x128 01683 #define GUI_ID_CHECK9 0x129 01684 01685 #define GUI_ID_SLIDER0 0x130 01686 #define GUI_ID_SLIDER1 0x131 01687 #define GUI_ID_SLIDER2 0x132 01688 #define GUI_ID_SLIDER3 0x133 01689 #define GUI_ID_SLIDER4 0x134 01690 #define GUI_ID_SLIDER5 0x135 01691 #define GUI_ID_SLIDER6 0x136 01692 #define GUI_ID_SLIDER7 0x137 01693 #define GUI_ID_SLIDER8 0x138 01694 #define GUI_ID_SLIDER9 0x139 01695 01696 #define GUI_ID_SCROLLBAR0 0x140 01697 #define GUI_ID_SCROLLBAR1 0x141 01698 #define GUI_ID_SCROLLBAR2 0x142 01699 #define GUI_ID_SCROLLBAR3 0x143 01700 01701 #define GUI_ID_RADIO0 0x150 01702 #define GUI_ID_RADIO1 0x151 01703 #define GUI_ID_RADIO2 0x152 01704 #define GUI_ID_RADIO3 0x153 01705 #define GUI_ID_RADIO4 0x154 01706 #define GUI_ID_RADIO5 0x155 01707 #define GUI_ID_RADIO6 0x156 01708 #define GUI_ID_RADIO7 0x157 01709 01710 #define GUI_ID_TEXT0 0x160 01711 #define GUI_ID_TEXT1 0x161 01712 #define GUI_ID_TEXT2 0x162 01713 #define GUI_ID_TEXT3 0x163 01714 #define GUI_ID_TEXT4 0x164 01715 #define GUI_ID_TEXT5 0x165 01716 #define GUI_ID_TEXT6 0x166 01717 #define GUI_ID_TEXT7 0x167 01718 #define GUI_ID_TEXT8 0x168 01719 #define GUI_ID_TEXT9 0x169 01720 01721 #define GUI_ID_BUTTON0 0x170 01722 #define GUI_ID_BUTTON1 0x171 01723 #define GUI_ID_BUTTON2 0x172 01724 #define GUI_ID_BUTTON3 0x173 01725 #define GUI_ID_BUTTON4 0x174 01726 #define GUI_ID_BUTTON5 0x175 01727 #define GUI_ID_BUTTON6 0x176 01728 #define GUI_ID_BUTTON7 0x177 01729 #define GUI_ID_BUTTON8 0x178 01730 #define GUI_ID_BUTTON9 0x179 01731 01732 #define GUI_ID_DROPDOWN0 0x180 01733 #define GUI_ID_DROPDOWN1 0x181 01734 #define GUI_ID_DROPDOWN2 0x182 01735 #define GUI_ID_DROPDOWN3 0x183 01736 01737 #define GUI_ID_MULTIEDIT0 0x190 01738 #define GUI_ID_MULTIEDIT1 0x191 01739 #define GUI_ID_MULTIEDIT2 0x192 01740 #define GUI_ID_MULTIEDIT3 0x193 01741 01742 #define GUI_ID_LISTVIEW0 0x200 01743 #define GUI_ID_LISTVIEW1 0x201 01744 #define GUI_ID_LISTVIEW2 0x202 01745 #define GUI_ID_LISTVIEW3 0x203 01746 01747 #define GUI_ID_PROGBAR0 0x210 01748 #define GUI_ID_PROGBAR1 0x211 01749 #define GUI_ID_PROGBAR2 0x212 01750 #define GUI_ID_PROGBAR3 0x213 01751 01752 #define GUI_ID_GRAPH0 0x220 01753 #define GUI_ID_GRAPH1 0x221 01754 #define GUI_ID_GRAPH2 0x222 01755 #define GUI_ID_GRAPH3 0x223 01756 01757 #define GUI_ID_MULTIPAGE0 0x230 01758 #define GUI_ID_MULTIPAGE1 0x231 01759 #define GUI_ID_MULTIPAGE2 0x232 01760 #define GUI_ID_MULTIPAGE3 0x233 01761 01762 #define GUI_ID_TREEVIEW0 0x240 01763 #define GUI_ID_TREEVIEW1 0x241 01764 #define GUI_ID_TREEVIEW2 0x242 01765 #define GUI_ID_TREEVIEW3 0x243 01766 01767 #define GUI_ID_ICONVIEW0 0x250 01768 #define GUI_ID_ICONVIEW1 0x251 01769 #define GUI_ID_ICONVIEW2 0x252 01770 #define GUI_ID_ICONVIEW3 0x253 01771 01772 #define GUI_ID_LISTWHEEL0 0x260 01773 #define GUI_ID_LISTWHEEL1 0x261 01774 #define GUI_ID_LISTWHEEL2 0x262 01775 #define GUI_ID_LISTWHEEL3 0x263 01776 01777 #define GUI_ID_IMAGE0 0x270 01778 #define GUI_ID_IMAGE1 0x271 01779 #define GUI_ID_IMAGE2 0x272 01780 #define GUI_ID_IMAGE3 0x273 01781 #define GUI_ID_IMAGE4 0x274 01782 #define GUI_ID_IMAGE5 0x275 01783 #define GUI_ID_IMAGE6 0x276 01784 #define GUI_ID_IMAGE7 0x277 01785 #define GUI_ID_IMAGE8 0x278 01786 #define GUI_ID_IMAGE9 0x279 01787 01788 #define GUI_ID_SPINBOX0 0x280 01789 #define GUI_ID_SPINBOX1 0x281 01790 #define GUI_ID_SPINBOX2 0x282 01791 #define GUI_ID_SPINBOX3 0x283 01792 #define GUI_ID_SPINBOX4 0x284 01793 #define GUI_ID_SPINBOX5 0x285 01794 #define GUI_ID_SPINBOX6 0x286 01795 #define GUI_ID_SPINBOX7 0x287 01796 #define GUI_ID_SPINBOX8 0x288 01797 #define GUI_ID_SPINBOX9 0x289 01798 01799 #define GUI_ID_CALENDAR0 0x290 01800 01801 #define GUI_ID_KNOB0 0x300 01802 #define GUI_ID_KNOB1 0x301 01803 #define GUI_ID_KNOB2 0x302 01804 #define GUI_ID_KNOB3 0x303 01805 #define GUI_ID_KNOB4 0x304 01806 #define GUI_ID_KNOB5 0x305 01807 #define GUI_ID_KNOB6 0x306 01808 #define GUI_ID_KNOB7 0x307 01809 #define GUI_ID_KNOB8 0x308 01810 #define GUI_ID_KNOB9 0x309 01811 01812 #define GUI_ID_SWIPELIST0 0x320 01813 #define GUI_ID_SWIPELIST1 0x321 01814 #define GUI_ID_SWIPELIST2 0x322 01815 01816 #define GUI_ID_USER 0x800 01817 01818 /********************************************************************* 01819 * 01820 * Mouse buttons 01821 */ 01822 #define GUI_LBUTTON (1 << 0) /* Left button */ 01823 #define GUI_RBUTTON (1 << 1) /* Right button */ 01824 #define GUI_MBUTTON (1 << 2) /* Middle button */ 01825 #define GUI_DBUTTON (1 << 7) /* Double-click button */ 01826 01827 /********************************************************************* 01828 * 01829 * Text styles 01830 */ 01831 #define GUI_TS_NORMAL (0) 01832 #define GUI_TS_UNDERLINE (1 << 0) 01833 #define GUI_TS_STRIKETHRU (1 << 1) 01834 #define GUI_TS_OVERLINE (1 << 2) 01835 01836 /********************************************************************* 01837 * 01838 * Line styles 01839 */ 01840 #define GUI_LS_SOLID (0) 01841 #define GUI_LS_DASH (1) 01842 #define GUI_LS_DOT (2) 01843 #define GUI_LS_DASHDOT (3) 01844 #define GUI_LS_DASHDOTDOT (4) 01845 01846 /********************************************************************* 01847 * 01848 * Pen shapes 01849 */ 01850 #define GUI_PS_ROUND (0) 01851 #define GUI_PS_FLAT (1) 01852 #define GUI_PS_SQUARE (2) 01853 01854 /********************************************************************* 01855 * 01856 * Standard colors 01857 */ 01858 #if (GUI_USE_ARGB) 01859 #define GUI_BLUE 0xFF0000FF 01860 #define GUI_GREEN 0xFF00FF00 01861 #define GUI_RED 0xFFFF0000 01862 #define GUI_CYAN 0xFF00FFFF 01863 #define GUI_MAGENTA 0xFFFF00FF 01864 #define GUI_YELLOW 0xFFFFFF00 01865 #define GUI_LIGHTBLUE 0xFF8080FF 01866 #define GUI_LIGHTGREEN 0xFF80FF80 01867 #define GUI_LIGHTRED 0xFFFF8080 01868 #define GUI_LIGHTCYAN 0xFF80FFFF 01869 #define GUI_LIGHTMAGENTA 0xFFFF80FF 01870 #define GUI_LIGHTYELLOW 0xFFFFFF80 01871 #define GUI_DARKBLUE 0xFF000080 01872 #define GUI_DARKGREEN 0xFF008000 01873 #define GUI_DARKRED 0xFF800000 01874 #define GUI_DARKCYAN 0xFF008080 01875 #define GUI_DARKMAGENTA 0xFF800080 01876 #define GUI_DARKYELLOW 0xFF808000 01877 #define GUI_WHITE 0xFFFFFFFF 01878 #define GUI_LIGHTGRAY 0xFFD3D3D3 01879 #define GUI_GRAY 0xFF808080 01880 #define GUI_DARKGRAY 0xFF404040 01881 #define GUI_BLACK 0xFF000000 01882 #define GUI_BROWN 0xFFA52A2A 01883 #define GUI_ORANGE 0xFFFFA500 01884 #define GUI_TRANSPARENT 0x00000000 01885 01886 #define GUI_GRAY_3F 0xFF3F3F3F 01887 #define GUI_GRAY_50 0xFF505050 01888 #define GUI_GRAY_55 0xFF555555 01889 #define GUI_GRAY_60 0xFF606060 01890 #define GUI_GRAY_7C 0xFF7C7C7C 01891 #define GUI_GRAY_9A 0xFF9A9A9A 01892 #define GUI_GRAY_AA 0xFFAAAAAA 01893 #define GUI_GRAY_C0 0xFFC0C0C0 01894 #define GUI_GRAY_C8 0xFFC8C8C8 01895 #define GUI_GRAY_D0 0xFFD0D0D0 01896 #define GUI_GRAY_E7 0xFFE7E7E7 01897 #define GUI_BLUE_98 0xFF000098 01898 #else 01899 #define GUI_BLUE 0x00FF0000 01900 #define GUI_GREEN 0x0000FF00 01901 #define GUI_RED 0x000000FF 01902 #define GUI_CYAN 0x00FFFF00 01903 #define GUI_MAGENTA 0x00FF00FF 01904 #define GUI_YELLOW 0x0000FFFF 01905 #define GUI_LIGHTBLUE 0x00FF8080 01906 #define GUI_LIGHTGREEN 0x0080FF80 01907 #define GUI_LIGHTRED 0x008080FF 01908 #define GUI_LIGHTCYAN 0x00FFFF80 01909 #define GUI_LIGHTMAGENTA 0x00FF80FF 01910 #define GUI_LIGHTYELLOW 0x0080FFFF 01911 #define GUI_DARKBLUE 0x00800000 01912 #define GUI_DARKGREEN 0x00008000 01913 #define GUI_DARKRED 0x00000080 01914 #define GUI_DARKCYAN 0x00808000 01915 #define GUI_DARKMAGENTA 0x00800080 01916 #define GUI_DARKYELLOW 0x00008080 01917 #define GUI_WHITE 0x00FFFFFF 01918 #define GUI_LIGHTGRAY 0x00D3D3D3 01919 #define GUI_GRAY 0x00808080 01920 #define GUI_DARKGRAY 0x00404040 01921 #define GUI_BLACK 0x00000000 01922 #define GUI_BROWN 0x002A2AA5 01923 #define GUI_ORANGE 0x0000A5FF 01924 #define GUI_TRANSPARENT 0xFF000000 01925 01926 #define GUI_GRAY_3F 0x003F3F3F 01927 #define GUI_GRAY_50 0x00505050 01928 #define GUI_GRAY_55 0x00555555 01929 #define GUI_GRAY_60 0x00606060 01930 #define GUI_GRAY_7C 0x007C7C7C 01931 #define GUI_GRAY_9A 0x009A9A9A 01932 #define GUI_GRAY_AA 0x00AAAAAA 01933 #define GUI_GRAY_C0 0x00C0C0C0 01934 #define GUI_GRAY_C8 0x00C8C8C8 01935 #define GUI_GRAY_D0 0x00D0D0D0 01936 #define GUI_GRAY_E7 0x00E7E7E7 01937 #define GUI_BLUE_98 0x00980000 01938 #endif 01939 01940 #define GUI_INVALID_COLOR 0xFFFFFFF /* Invalid color - more than 24 bits */ 01941 01942 #if (GUI_USE_ARGB) 01943 #define GUI_MAKE_COLOR(ABGR) (((((U32)ABGR) & 0xFF000000ul) ^ 0xFF000000ul) | ((((U32)ABGR) & 0x00FF0000ul) >> 16) | (((U32)ABGR) & 0x0000FF00ul) | ((((U32)ABGR) & 0x000000FFul) << 16)) 01944 #define GUI_MAKE_TRANS(Alpha) (255 - (Alpha)) 01945 #else 01946 #define GUI_MAKE_COLOR(ABGR) (ABGR) 01947 #define GUI_MAKE_TRANS(Alpha) (Alpha) 01948 #endif 01949 01950 #if (GUI_USE_ARGB) 01951 #define GUI_TRANS_BYTE 0x00 01952 #else 01953 #define GUI_TRANS_BYTE 0xFF 01954 #endif 01955 01956 01957 /********************************************************************* 01958 * 01959 * MultiTouch-Support 01960 */ 01961 // 01962 // Defines 01963 // 01964 #define GUI_MTOUCH_FLAG_DOWN (1 << 0) 01965 #define GUI_MTOUCH_FLAG_MOVE (1 << 1) 01966 #define GUI_MTOUCH_FLAG_UP (1 << 2) 01967 01968 // 01969 // Variables 01970 // 01971 extern T_GUI_MTOUCH_STOREEVENT GUI_MTOUCH__pStoreEvent; 01972 01973 // 01974 // Interface 01975 // 01976 void GUI_MTOUCH_Enable (int OnOff); 01977 int GUI_MTOUCH_GetEvent (GUI_MTOUCH_EVENT * pEvent); 01978 int GUI_MTOUCH_GetTouchInput (GUI_MTOUCH_EVENT * pEvent, GUI_MTOUCH_INPUT * pBuffer, unsigned Index); 01979 int GUI_MTOUCH_IsEmpty (void); 01980 void GUI_MTOUCH_SetOrientation (int Orientation); 01981 void GUI_MTOUCH_SetOrientationEx(int Orientation, int LayerIndex); 01982 void GUI_MTOUCH_StoreEvent (GUI_MTOUCH_EVENT * pEvent, GUI_MTOUCH_INPUT * pInput); 01983 01984 /********************************************************************* 01985 * 01986 * Coordinates used in touch driver 01987 */ 01988 #define GUI_COORD_X 0 01989 #define GUI_COORD_Y 1 01990 01991 /********************************************************************* 01992 * 01993 * Addresses of standard fonts 01994 */ 01995 // 01996 // Proportional fonts 01997 // 01998 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8_ASCII, GUI_Font8_1; 01999 extern GUI_CONST_STORAGE GUI_FONT GUI_Font10S_ASCII, GUI_Font10S_1; 02000 extern GUI_CONST_STORAGE GUI_FONT GUI_Font10_ASCII, GUI_Font10_1; 02001 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13_ASCII, GUI_Font13_1; 02002 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13B_ASCII, GUI_Font13B_1; 02003 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13H_ASCII, GUI_Font13H_1; 02004 extern GUI_CONST_STORAGE GUI_FONT GUI_Font13HB_ASCII, GUI_Font13HB_1; 02005 extern GUI_CONST_STORAGE GUI_FONT GUI_Font16_ASCII, GUI_Font16_1, GUI_Font16_HK, GUI_Font16_1HK; 02006 extern GUI_CONST_STORAGE GUI_FONT GUI_Font16B_ASCII, GUI_Font16B_1; 02007 extern GUI_CONST_STORAGE GUI_FONT GUI_Font20_ASCII, GUI_Font20_1; 02008 extern GUI_CONST_STORAGE GUI_FONT GUI_Font20B_ASCII, GUI_Font20B_1; 02009 extern GUI_CONST_STORAGE GUI_FONT GUI_Font24_ASCII, GUI_Font24_1; 02010 extern GUI_CONST_STORAGE GUI_FONT GUI_Font24B_ASCII, GUI_Font24B_1; 02011 extern GUI_CONST_STORAGE GUI_FONT GUI_Font32_ASCII, GUI_Font32_1; 02012 extern GUI_CONST_STORAGE GUI_FONT GUI_Font32B_ASCII, GUI_Font32B_1; 02013 02014 // 02015 // Proportional fonts, framed 02016 // 02017 extern GUI_CONST_STORAGE GUI_FONT GUI_Font20F_ASCII; 02018 02019 // 02020 // Monospaced 02021 // 02022 extern GUI_CONST_STORAGE GUI_FONT GUI_Font4x6; 02023 extern GUI_CONST_STORAGE GUI_FONT GUI_Font6x8, GUI_Font6x9; 02024 extern GUI_CONST_STORAGE GUI_FONT GUI_Font6x8_ASCII, GUI_Font6x8_1; 02025 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x8, GUI_Font8x9; 02026 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x8_ASCII, GUI_Font8x8_1; 02027 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x10_ASCII; 02028 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x12_ASCII; 02029 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x13_ASCII, GUI_Font8x13_1; 02030 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x15B_ASCII, GUI_Font8x15B_1; 02031 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16, GUI_Font8x17, GUI_Font8x18; 02032 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16x1x2, GUI_Font8x16x2x2, GUI_Font8x16x3x3; 02033 extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16_ASCII, GUI_Font8x16_1; 02034 02035 // 02036 // Digits 02037 // 02038 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD24x32; 02039 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD32; 02040 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD36x48; 02041 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD48; 02042 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD48x64; 02043 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD64; 02044 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD60x80; 02045 extern GUI_CONST_STORAGE GUI_FONT GUI_FontD80; 02046 02047 // 02048 // Comic fonts 02049 // 02050 extern GUI_CONST_STORAGE GUI_FONT GUI_FontComic18B_ASCII, GUI_FontComic18B_1; 02051 extern GUI_CONST_STORAGE GUI_FONT GUI_FontComic24B_ASCII, GUI_FontComic24B_1; 02052 02053 /********************************************************************* 02054 * 02055 * Macros to be used 02056 */ 02057 // 02058 // Proportional fonts 02059 // 02060 #define GUI_FONT_8_ASCII &GUI_Font8_ASCII 02061 #define GUI_FONT_8_1 &GUI_Font8_1 02062 #define GUI_FONT_10S_ASCII &GUI_Font10S_ASCII 02063 #define GUI_FONT_10S_1 &GUI_Font10S_1 02064 #define GUI_FONT_10_ASCII &GUI_Font10_ASCII 02065 #define GUI_FONT_10_1 &GUI_Font10_1 02066 #define GUI_FONT_13_ASCII &GUI_Font13_ASCII 02067 #define GUI_FONT_13_1 &GUI_Font13_1 02068 #define GUI_FONT_13B_ASCII &GUI_Font13B_ASCII 02069 #define GUI_FONT_13B_1 &GUI_Font13B_1 02070 #define GUI_FONT_13H_ASCII &GUI_Font13H_ASCII 02071 #define GUI_FONT_13H_1 &GUI_Font13H_1 02072 #define GUI_FONT_13HB_ASCII &GUI_Font13HB_ASCII 02073 #define GUI_FONT_13HB_1 &GUI_Font13HB_1 02074 #define GUI_FONT_16_ASCII &GUI_Font16_ASCII 02075 #define GUI_FONT_16_1 &GUI_Font16_1 02076 #define GUI_FONT_16_HK &GUI_Font16_HK 02077 #define GUI_FONT_16_1HK &GUI_Font16_1HK 02078 #define GUI_FONT_16B_ASCII &GUI_Font16B_ASCII 02079 #define GUI_FONT_16B_1 &GUI_Font16B_1 02080 #define GUI_FONT_20_ASCII &GUI_Font20_ASCII 02081 #define GUI_FONT_20_1 &GUI_Font20_1 02082 #define GUI_FONT_20B_ASCII &GUI_Font20B_ASCII 02083 #define GUI_FONT_20B_1 &GUI_Font20B_1 02084 #define GUI_FONT_24_ASCII &GUI_Font24_ASCII 02085 #define GUI_FONT_24_1 &GUI_Font24_1 02086 #define GUI_FONT_24B_ASCII &GUI_Font24B_ASCII 02087 #define GUI_FONT_24B_1 &GUI_Font24B_1 02088 #define GUI_FONT_32_ASCII &GUI_Font32_ASCII 02089 #define GUI_FONT_32_1 &GUI_Font32_1 02090 #define GUI_FONT_32B_ASCII &GUI_Font32B_ASCII 02091 #define GUI_FONT_32B_1 &GUI_Font32B_1 02092 02093 // 02094 // Proportional fonts, framed 02095 // 02096 #define GUI_FONT_20F_ASCII &GUI_Font20F_ASCII 02097 02098 // 02099 // Monospaced 02100 // 02101 #define GUI_FONT_4X6 &GUI_Font4x6 02102 #define GUI_FONT_6X8 &GUI_Font6x8 02103 #define GUI_FONT_6X8_ASCII &GUI_Font6x8_ASCII 02104 #define GUI_FONT_6X8_1 &GUI_Font6x8_1 02105 #define GUI_FONT_6X9 &GUI_Font6x9 02106 #define GUI_FONT_8X8 &GUI_Font8x8 02107 #define GUI_FONT_8X8_ASCII &GUI_Font8x8_ASCII 02108 #define GUI_FONT_8X8_1 &GUI_Font8x8_1 02109 #define GUI_FONT_8X9 &GUI_Font8x9 02110 #define GUI_FONT_8X10_ASCII &GUI_Font8x10_ASCII 02111 #define GUI_FONT_8X12_ASCII &GUI_Font8x12_ASCII 02112 #define GUI_FONT_8X13_ASCII &GUI_Font8x13_ASCII 02113 #define GUI_FONT_8X13_1 &GUI_Font8x13_1 02114 #define GUI_FONT_8X15B_ASCII &GUI_Font8x15B_ASCII 02115 #define GUI_FONT_8X15B_1 &GUI_Font8x15B_1 02116 #define GUI_FONT_8X16 &GUI_Font8x16 02117 #define GUI_FONT_8X17 &GUI_Font8x17 02118 #define GUI_FONT_8X18 &GUI_Font8x18 02119 #define GUI_FONT_8X16X1X2 &GUI_Font8x16x1x2 02120 #define GUI_FONT_8X16X2X2 &GUI_Font8x16x2x2 02121 #define GUI_FONT_8X16X3X3 &GUI_Font8x16x3x3 02122 #define GUI_FONT_8X16_ASCII &GUI_Font8x16_ASCII 02123 #define GUI_FONT_8X16_1 &GUI_Font8x16_1 02124 02125 // 02126 // Digits 02127 // 02128 #define GUI_FONT_D24X32 &GUI_FontD24x32 02129 #define GUI_FONT_D32 &GUI_FontD32 02130 #define GUI_FONT_D36X48 &GUI_FontD36x48 02131 #define GUI_FONT_D48 &GUI_FontD48 02132 #define GUI_FONT_D48X64 &GUI_FontD48x64 02133 #define GUI_FONT_D64 &GUI_FontD64 02134 #define GUI_FONT_D60X80 &GUI_FontD60x80 02135 #define GUI_FONT_D80 &GUI_FontD80 02136 02137 // 02138 // Comic fonts 02139 // 02140 #define GUI_FONT_COMIC18B_ASCII &GUI_FontComic18B_ASCII 02141 #define GUI_FONT_COMIC18B_1 &GUI_FontComic18B_1 02142 #define GUI_FONT_COMIC24B_ASCII &GUI_FontComic24B_ASCII 02143 #define GUI_FONT_COMIC24B_1 &GUI_FontComic24B_1 02144 02145 /********************************************************************* 02146 * 02147 * Text and drawing modes 02148 * 02149 * These defines come in two flavors: the long version (.._DRAWMODE_..) 02150 * and the short ones (.._DM_..). They are identical, feel free to use 02151 * which ever one you like best. 02152 */ 02153 #define GUI_DRAWMODE_NORMAL LCD_DRAWMODE_NORMAL 02154 #define GUI_DRAWMODE_XOR LCD_DRAWMODE_XOR 02155 #define GUI_DRAWMODE_TRANS LCD_DRAWMODE_TRANS 02156 #define GUI_DRAWMODE_REV LCD_DRAWMODE_REV 02157 #define GUI_DM_NORMAL LCD_DRAWMODE_NORMAL 02158 #define GUI_DM_XOR LCD_DRAWMODE_XOR 02159 #define GUI_DM_TRANS LCD_DRAWMODE_TRANS 02160 #define GUI_DM_REV LCD_DRAWMODE_REV 02161 02162 #define GUI_TEXTMODE_NORMAL LCD_DRAWMODE_NORMAL 02163 #define GUI_TEXTMODE_XOR LCD_DRAWMODE_XOR 02164 #define GUI_TEXTMODE_TRANS LCD_DRAWMODE_TRANS 02165 #define GUI_TEXTMODE_REV LCD_DRAWMODE_REV 02166 #define GUI_TM_NORMAL LCD_DRAWMODE_NORMAL 02167 #define GUI_TM_XOR LCD_DRAWMODE_XOR 02168 #define GUI_TM_TRANS LCD_DRAWMODE_TRANS 02169 #define GUI_TM_REV LCD_DRAWMODE_REV 02170 02171 /* Text alignment flags, horizontal */ 02172 #define GUI_TA_LEFT (0) 02173 #define GUI_TA_HORIZONTAL (3<<0) 02174 #define GUI_TA_RIGHT (1<<0) 02175 #define GUI_TA_CENTER (2<<0) 02176 #define GUI_TA_HCENTER GUI_TA_CENTER /* easier to remember :-) */ 02177 02178 /* Text alignment flags, vertical */ 02179 #define GUI_TA_TOP (0) 02180 #define GUI_TA_VERTICAL (3<<2) 02181 #define GUI_TA_BOTTOM (1<<2) 02182 #define GUI_TA_BASELINE (2<<2) 02183 #define GUI_TA_VCENTER (3<<2) 02184 02185 /* General orientation flags */ 02186 #define GUI_MIRROR_X (1 << 0) 02187 #define GUI_MIRROR_Y (1 << 1) 02188 #define GUI_SWAP_XY (1 << 2) 02189 02190 /********************************************************************* 02191 * 02192 * Min/Max coordinates 02193 * 02194 * Define minimum and maximum coordinates in x and y 02195 */ 02196 #define GUI_XMIN -16383 02197 #define GUI_XMAX 16383 02198 #define GUI_YMIN -16383 02199 #define GUI_YMAX 16383 02200 02201 /********************************************************************* 02202 * 02203 * Defines for constants 02204 */ 02205 #define ________ 0x0 02206 #define _______X 0x1 02207 #define ______X_ 0x2 02208 #define ______XX 0x3 02209 #define _____X__ 0x4 02210 #define _____X_X 0x5 02211 #define _____XX_ 0x6 02212 #define _____XXX 0x7 02213 #define ____X___ 0x8 02214 #define ____X__X 0x9 02215 #define ____X_X_ 0xa 02216 #define ____X_XX 0xb 02217 #define ____XX__ 0xc 02218 #define ____XX_X 0xd 02219 #define ____XXX_ 0xe 02220 #define ____XXXX 0xf 02221 #define ___X____ 0x10 02222 #define ___X___X 0x11 02223 #define ___X__X_ 0x12 02224 #define ___X__XX 0x13 02225 #define ___X_X__ 0x14 02226 #define ___X_X_X 0x15 02227 #define ___X_XX_ 0x16 02228 #define ___X_XXX 0x17 02229 #define ___XX___ 0x18 02230 #define ___XX__X 0x19 02231 #define ___XX_X_ 0x1a 02232 #define ___XX_XX 0x1b 02233 #define ___XXX__ 0x1c 02234 #define ___XXX_X 0x1d 02235 #define ___XXXX_ 0x1e 02236 #define ___XXXXX 0x1f 02237 #define __X_____ 0x20 02238 #define __X____X 0x21 02239 #define __X___X_ 0x22 02240 #define __X___XX 0x23 02241 #define __X__X__ 0x24 02242 #define __X__X_X 0x25 02243 #define __X__XX_ 0x26 02244 #define __X__XXX 0x27 02245 #define __X_X___ 0x28 02246 #define __X_X__X 0x29 02247 #define __X_X_X_ 0x2a 02248 #define __X_X_XX 0x2b 02249 #define __X_XX__ 0x2c 02250 #define __X_XX_X 0x2d 02251 #define __X_XXX_ 0x2e 02252 #define __X_XXXX 0x2f 02253 #define __XX____ 0x30 02254 #define __XX___X 0x31 02255 #define __XX__X_ 0x32 02256 #define __XX__XX 0x33 02257 #define __XX_X__ 0x34 02258 #define __XX_X_X 0x35 02259 #define __XX_XX_ 0x36 02260 #define __XX_XXX 0x37 02261 #define __XXX___ 0x38 02262 #define __XXX__X 0x39 02263 #define __XXX_X_ 0x3a 02264 #define __XXX_XX 0x3b 02265 #define __XXXX__ 0x3c 02266 #define __XXXX_X 0x3d 02267 #define __XXXXX_ 0x3e 02268 #define __XXXXXX 0x3f 02269 #define _X______ 0x40 02270 #define _X_____X 0x41 02271 #define _X____X_ 0x42 02272 #define _X____XX 0x43 02273 #define _X___X__ 0x44 02274 #define _X___X_X 0x45 02275 #define _X___XX_ 0x46 02276 #define _X___XXX 0x47 02277 #define _X__X___ 0x48 02278 #define _X__X__X 0x49 02279 #define _X__X_X_ 0x4a 02280 #define _X__X_XX 0x4b 02281 #define _X__XX__ 0x4c 02282 #define _X__XX_X 0x4d 02283 #define _X__XXX_ 0x4e 02284 #define _X__XXXX 0x4f 02285 #define _X_X____ 0x50 02286 #define _X_X___X 0x51 02287 #define _X_X__X_ 0x52 02288 #define _X_X__XX 0x53 02289 #define _X_X_X__ 0x54 02290 #define _X_X_X_X 0x55 02291 #define _X_X_XX_ 0x56 02292 #define _X_X_XXX 0x57 02293 #define _X_XX___ 0x58 02294 #define _X_XX__X 0x59 02295 #define _X_XX_X_ 0x5a 02296 #define _X_XX_XX 0x5b 02297 #define _X_XXX__ 0x5c 02298 #define _X_XXX_X 0x5d 02299 #define _X_XXXX_ 0x5e 02300 #define _X_XXXXX 0x5f 02301 #define _XX_____ 0x60 02302 #define _XX____X 0x61 02303 #define _XX___X_ 0x62 02304 #define _XX___XX 0x63 02305 #define _XX__X__ 0x64 02306 #define _XX__X_X 0x65 02307 #define _XX__XX_ 0x66 02308 #define _XX__XXX 0x67 02309 #define _XX_X___ 0x68 02310 #define _XX_X__X 0x69 02311 #define _XX_X_X_ 0x6a 02312 #define _XX_X_XX 0x6b 02313 #define _XX_XX__ 0x6c 02314 #define _XX_XX_X 0x6d 02315 #define _XX_XXX_ 0x6e 02316 #define _XX_XXXX 0x6f 02317 #define _XXX____ 0x70 02318 #define _XXX___X 0x71 02319 #define _XXX__X_ 0x72 02320 #define _XXX__XX 0x73 02321 #define _XXX_X__ 0x74 02322 #define _XXX_X_X 0x75 02323 #define _XXX_XX_ 0x76 02324 #define _XXX_XXX 0x77 02325 #define _XXXX___ 0x78 02326 #define _XXXX__X 0x79 02327 #define _XXXX_X_ 0x7a 02328 #define _XXXX_XX 0x7b 02329 #define _XXXXX__ 0x7c 02330 #define _XXXXX_X 0x7d 02331 #define _XXXXXX_ 0x7e 02332 #define _XXXXXXX 0x7f 02333 #define X_______ 0x80 02334 #define X______X 0x81 02335 #define X_____X_ 0x82 02336 #define X_____XX 0x83 02337 #define X____X__ 0x84 02338 #define X____X_X 0x85 02339 #define X____XX_ 0x86 02340 #define X____XXX 0x87 02341 #define X___X___ 0x88 02342 #define X___X__X 0x89 02343 #define X___X_X_ 0x8a 02344 #define X___X_XX 0x8b 02345 #define X___XX__ 0x8c 02346 #define X___XX_X 0x8d 02347 #define X___XXX_ 0x8e 02348 #define X___XXXX 0x8f 02349 #define X__X____ 0x90 02350 #define X__X___X 0x91 02351 #define X__X__X_ 0x92 02352 #define X__X__XX 0x93 02353 #define X__X_X__ 0x94 02354 #define X__X_X_X 0x95 02355 #define X__X_XX_ 0x96 02356 #define X__X_XXX 0x97 02357 #define X__XX___ 0x98 02358 #define X__XX__X 0x99 02359 #define X__XX_X_ 0x9a 02360 #define X__XX_XX 0x9b 02361 #define X__XXX__ 0x9c 02362 #define X__XXX_X 0x9d 02363 #define X__XXXX_ 0x9e 02364 #define X__XXXXX 0x9f 02365 #define X_X_____ 0xa0 02366 #define X_X____X 0xa1 02367 #define X_X___X_ 0xa2 02368 #define X_X___XX 0xa3 02369 #define X_X__X__ 0xa4 02370 #define X_X__X_X 0xa5 02371 #define X_X__XX_ 0xa6 02372 #define X_X__XXX 0xa7 02373 #define X_X_X___ 0xa8 02374 #define X_X_X__X 0xa9 02375 #define X_X_X_X_ 0xaa 02376 #define X_X_X_XX 0xab 02377 #define X_X_XX__ 0xac 02378 #define X_X_XX_X 0xad 02379 #define X_X_XXX_ 0xae 02380 #define X_X_XXXX 0xaf 02381 #define X_XX____ 0xb0 02382 #define X_XX___X 0xb1 02383 #define X_XX__X_ 0xb2 02384 #define X_XX__XX 0xb3 02385 #define X_XX_X__ 0xb4 02386 #define X_XX_X_X 0xb5 02387 #define X_XX_XX_ 0xb6 02388 #define X_XX_XXX 0xb7 02389 #define X_XXX___ 0xb8 02390 #define X_XXX__X 0xb9 02391 #define X_XXX_X_ 0xba 02392 #define X_XXX_XX 0xbb 02393 #define X_XXXX__ 0xbc 02394 #define X_XXXX_X 0xbd 02395 #define X_XXXXX_ 0xbe 02396 #define X_XXXXXX 0xbf 02397 #define XX______ 0xc0 02398 #define XX_____X 0xc1 02399 #define XX____X_ 0xc2 02400 #define XX____XX 0xc3 02401 #define XX___X__ 0xc4 02402 #define XX___X_X 0xc5 02403 #define XX___XX_ 0xc6 02404 #define XX___XXX 0xc7 02405 #define XX__X___ 0xc8 02406 #define XX__X__X 0xc9 02407 #define XX__X_X_ 0xca 02408 #define XX__X_XX 0xcb 02409 #define XX__XX__ 0xcc 02410 #define XX__XX_X 0xcd 02411 #define XX__XXX_ 0xce 02412 #define XX__XXXX 0xcf 02413 #define XX_X____ 0xd0 02414 #define XX_X___X 0xd1 02415 #define XX_X__X_ 0xd2 02416 #define XX_X__XX 0xd3 02417 #define XX_X_X__ 0xd4 02418 #define XX_X_X_X 0xd5 02419 #define XX_X_XX_ 0xd6 02420 #define XX_X_XXX 0xd7 02421 #define XX_XX___ 0xd8 02422 #define XX_XX__X 0xd9 02423 #define XX_XX_X_ 0xda 02424 #define XX_XX_XX 0xdb 02425 #define XX_XXX__ 0xdc 02426 #define XX_XXX_X 0xdd 02427 #define XX_XXXX_ 0xde 02428 #define XX_XXXXX 0xdf 02429 #define XXX_____ 0xe0 02430 #define XXX____X 0xe1 02431 #define XXX___X_ 0xe2 02432 #define XXX___XX 0xe3 02433 #define XXX__X__ 0xe4 02434 #define XXX__X_X 0xe5 02435 #define XXX__XX_ 0xe6 02436 #define XXX__XXX 0xe7 02437 #define XXX_X___ 0xe8 02438 #define XXX_X__X 0xe9 02439 #define XXX_X_X_ 0xea 02440 #define XXX_X_XX 0xeb 02441 #define XXX_XX__ 0xec 02442 #define XXX_XX_X 0xed 02443 #define XXX_XXX_ 0xee 02444 #define XXX_XXXX 0xef 02445 #define XXXX____ 0xf0 02446 #define XXXX___X 0xf1 02447 #define XXXX__X_ 0xf2 02448 #define XXXX__XX 0xf3 02449 #define XXXX_X__ 0xf4 02450 #define XXXX_X_X 0xf5 02451 #define XXXX_XX_ 0xf6 02452 #define XXXX_XXX 0xf7 02453 #define XXXXX___ 0xf8 02454 #define XXXXX__X 0xf9 02455 #define XXXXX_X_ 0xfa 02456 #define XXXXX_XX 0xfb 02457 #define XXXXXX__ 0xfc 02458 #define XXXXXX_X 0xfd 02459 #define XXXXXXX_ 0xfe 02460 #define XXXXXXXX 0xff 02461 02462 /********************************************************************* 02463 * 02464 * Compatibility with older versions 02465 */ 02466 #define GUI_DispString_UC GUI_UC_DispString 02467 #define TOUCH_X_ActivateX GUI_TOUCH_X_ActivateX 02468 #define TOUCH_X_ActivateY GUI_TOUCH_X_ActivateY 02469 #define TOUCH_X_Disable GUI_TOUCH_X_Disable 02470 #define TOUCH_X_MeasureX GUI_TOUCH_X_MeasureX 02471 #define TOUCH_X_MeasureY GUI_TOUCH_X_MeasureY 02472 #define GUI_SelLayer GUI_SelectLayer 02473 #define GUI_MEMDEV_FadeDevices GUI_MEMDEV_FadeInDevices 02474 #if defined(__cplusplus) 02475 } 02476 #endif 02477 02478 #endif /* ifdef GUI_H */ 02479 02480 /*************************** End of file ****************************/
Generated on Tue Jul 12 2022 19:43:35 by 1.7.2