RT1050 GUI demo using emWin library

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers GUI.h Source File

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