Headers for emWin lib

Dependents:   DISCO-F746NG_rtos_test

Revision:
0:1bf8f02b0770
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emWin_header/GUI_Private.h	Sat Mar 26 22:49:50 2016 +0000
@@ -0,0 +1,645 @@
+/*********************************************************************
+*                SEGGER Microcontroller GmbH & Co. KG                *
+*        Solutions for real time microcontroller applications        *
+**********************************************************************
+*                                                                    *
+*        (c) 1996 - 2014  SEGGER Microcontroller GmbH & Co. KG       *
+*                                                                    *
+*        Internet: www.segger.com    Support:  support@segger.com    *
+*                                                                    *
+**********************************************************************
+
+** emWin V5.24 - Graphical user interface for embedded applications **
+All  Intellectual Property rights  in the Software belongs to  SEGGER.
+emWin is protected by  international copyright laws.  Knowledge of the
+source code may not be used to write a similar product.  This file may
+only be used in accordance with the following terms:
+
+The software has been licensed to  NXP Semiconductors USA, Inc.  whose
+registered  office  is  situated  at 411 E. Plumeria Drive, San  Jose,
+CA 95134, USA  solely for  the  purposes  of  creating  libraries  for
+NXPs M0, M3/M4 and  ARM7/9 processor-based  devices,  sublicensed  and
+distributed under the terms and conditions of the NXP End User License
+Agreement.
+Full source code is available at: www.segger.com
+
+We appreciate your understanding and fairness.
+----------------------------------------------------------------------
+File        : GUI_Private.h
+Purpose     : GUI internal declarations
+---------------------------END-OF-HEADER------------------------------
+*/
+
+#ifndef GUI_PRIVATE_H
+#define GUI_PRIVATE_H
+
+#include "GUI.h"
+#include "LCD_Protected.h"
+#include "GUI_Debug.h"
+#if GUI_WINSUPPORT
+  #include "WM_GUI.h"
+#endif
+
+#if defined(__cplusplus)
+extern "C" {     /* Make sure we have C-declarations in C++ programs */
+#endif
+
+/*********************************************************************
+*
+*       Defaults for config switches
+*
+**********************************************************************
+
+  The config switches below do not affect the interface in GUI.h and
+  are therefor not required to be in GUI.h.
+*/
+
+/* Short address area.
+   For  most compilers, this is "near" or "__near"
+   We do not use this except for some CPUs which we know to always have some
+   near memory, because the GUI_Context and some other data will be declared
+   to be in this short address (near) memory area as it has a major effect
+   on performance.
+   Please define in GUIConf.h (if you want to use it)
+*/
+#ifndef GUI_SADDR
+  #define GUI_SADDR
+#endif
+
+#ifndef GUI_DEFAULT_FONT
+  #define GUI_DEFAULT_FONT    &GUI_Font6x8
+#endif
+
+#ifndef GUI_DEFAULT_CURSOR
+  #define GUI_DEFAULT_CURSOR  &GUI_CursorArrowM
+#endif
+
+#ifndef GUI_DEFAULT_BKCOLOR
+  #define GUI_DEFAULT_BKCOLOR GUI_BLACK
+#endif
+
+#ifndef GUI_DEFAULT_COLOR
+  #define GUI_DEFAULT_COLOR   GUI_WHITE
+#endif
+
+/*********************************************************************
+*
+*       Angles
+*
+**********************************************************************
+*/
+#define GUI_45DEG  512
+#define GUI_90DEG  (2 * GUI_45DEG)
+#define GUI_180DEG (4 * GUI_45DEG)
+#define GUI_360DEG (8 * GUI_45DEG)
+
+
+/*********************************************************************
+*
+*       Locking checks
+*
+**********************************************************************
+*/
+#if defined (WIN32) && defined (_DEBUG) && GUI_OS
+  #define GUI_ASSERT_LOCK()    GUITASK_AssertLock()
+  #define GUI_ASSERT_NO_LOCK() GUITASK_AssertNoLock()
+  void GUITASK_AssertLock(void);
+  void GUITASK_AssertNoLock(void);
+#else
+  #define GUI_ASSERT_LOCK()
+  #define GUI_ASSERT_NO_LOCK()
+#endif
+
+/*********************************************************************
+*
+*       Division tables
+*
+**********************************************************************
+*/
+extern const U8 GUI__aConvert_15_255[(1 << 4)];
+extern const U8 GUI__aConvert_31_255[(1 << 5)];
+extern const U8 GUI__aConvert_63_255[(1 << 6)];
+extern const U8 GUI__aConvert_255_15[(1 << 8)];
+extern const U8 GUI__aConvert_255_31[(1 << 8)];
+extern const U8 GUI__aConvert_255_63[(1 << 8)];
+
+/*********************************************************************
+*
+*       Usage internals
+*
+**********************************************************************
+*/
+typedef GUI_HMEM GUI_USAGE_Handle;
+typedef struct tsUSAGE_APIList tUSAGE_APIList;
+typedef struct GUI_Usage GUI_USAGE;
+#define GUI_USAGE_h GUI_USAGE_Handle
+
+
+
+typedef GUI_USAGE_h tUSAGE_CreateCompatible(GUI_USAGE * p);
+typedef void        tUSAGE_AddPixel        (GUI_USAGE * p, int x, int y);
+typedef void        tUSAGE_AddHLine        (GUI_USAGE * p, int x0, int y0, int len);
+typedef void        tUSAGE_Clear           (GUI_USAGE * p);
+typedef void        tUSAGE_Delete          (GUI_USAGE_h h);
+typedef int         tUSAGE_GetNextDirty    (GUI_USAGE * p, int * pxOff, int yOff);
+#define GUI_USAGE_LOCK_H(h) ((GUI_USAGE *)GUI_LOCK_H(h))
+
+
+void GUI_USAGE_DecUseCnt(GUI_USAGE_Handle  hUsage);
+
+GUI_USAGE_Handle GUI_USAGE_BM_Create(int x0, int y0, int xsize, int ysize, int Flags);
+void    GUI_USAGE_Select(GUI_USAGE_Handle hUsage);
+void    GUI_USAGE_AddRect(GUI_USAGE * pUsage, int x0, int y0, int xSize, int ySize);
+#define GUI_USAGE_AddPixel(p, x,y)            p->pAPI->pfAddPixel(p,x,y)
+#define GUI_USAGE_AddHLine(p,x,y,len)         p->pAPI->pfAddHLine(p,x,y,len)
+#define GUI_USAGE_Clear(p)                    p->pAPI->pfClear(p)
+#define GUI_USAGE_Delete(p)                   p->pAPI->pfDelete(p)
+#define GUI_USAGE_GetNextDirty(p,pxOff, yOff) p->pAPI->pfGetNextDirty(p,pxOff, yOff)
+
+struct tsUSAGE_APIList {
+  tUSAGE_AddPixel         * pfAddPixel;
+  tUSAGE_AddHLine         * pfAddHLine;
+  tUSAGE_Clear            * pfClear;
+  tUSAGE_CreateCompatible * pfCreateCompatible;
+  tUSAGE_Delete           * pfDelete;
+  tUSAGE_GetNextDirty     * pfGetNextDirty;
+} ;
+
+struct GUI_Usage {
+  I16P x0, y0, XSize, YSize;
+  const tUSAGE_APIList * pAPI;
+  I16 UseCnt;
+};
+
+
+/*********************************************************************
+*
+*       GUI_MEMDEV
+*
+**********************************************************************
+*/
+#if GUI_SUPPORT_MEMDEV
+
+typedef struct {
+  GUI_DEVICE * pDevice;
+  I16P                   x0, y0, XSize, YSize;
+  unsigned               BytesPerLine;
+  unsigned               BitsPerPixel;
+  GUI_HMEM               hUsage;
+} GUI_MEMDEV;
+
+#define      GUI_MEMDEV_LOCK_H(h) ((GUI_MEMDEV *)GUI_LOCK_H(h))
+
+void         GUI_MEMDEV__CopyFromLCD (GUI_MEMDEV_Handle hMem);
+void         GUI_MEMDEV__GetRect     (GUI_RECT * pRect);
+unsigned     GUI_MEMDEV__Color2Index (LCD_COLOR Color);
+LCD_COLOR    GUI_MEMDEV__Index2Color (int Index);
+unsigned int GUI_MEMDEV__GetIndexMask(void);
+void         GUI_MEMDEV__SetAlphaCallback(unsigned(* pcbSetAlpha)(U8));
+
+GUI_MEMDEV_Handle GUI_MEMDEV__CreateFixed(int x0, int y0, int xSize, int ySize, int Flags,
+                                          const GUI_DEVICE_API     * pDeviceAPI,
+                                          const LCD_API_COLOR_CONV * pColorConvAPI);
+
+void              GUI_MEMDEV__DrawSizedAt        (GUI_MEMDEV_Handle hMem, int xPos, int yPos, int xSize, int ySize);
+GUI_MEMDEV_Handle GUI_MEMDEV__GetEmptyCopy32     (GUI_MEMDEV_Handle hMem, int * pxSize, int * pySize, int * pxPos, int * pyPos);
+void              GUI_MEMDEV__ReadLine           (int x0, int y, int x1, LCD_PIXELINDEX * pBuffer);
+void              GUI_MEMDEV__WriteToActiveAlpha (GUI_MEMDEV_Handle hMem,int x, int y);
+void              GUI_MEMDEV__WriteToActiveAt    (GUI_MEMDEV_Handle hMem,int x, int y);
+void              GUI_MEMDEV__WriteToActiveOpaque(GUI_MEMDEV_Handle hMem,int x, int y);
+void            * GUI_MEMDEV__XY2PTR             (int x,int y);
+void            * GUI_MEMDEV__XY2PTREx           (GUI_MEMDEV * pDev, int x,int y);
+void              GUI_MEMDEV__BlendColor32       (GUI_MEMDEV_Handle hMem, U32 BlendColor, U8 BlendIntens);
+
+unsigned GUI__AlphaSuppressMixing(int OnOff);
+
+#define GUI_POS_AUTO -4095   /* Position value for auto-pos */
+
+#endif
+
+
+/*********************************************************************
+*
+*       LCD_HL_ level defines
+*
+**********************************************************************
+*/
+#define LCD_HL_DrawHLine             GUI_pContext->pLCD_HL->pfDrawHLine
+#define LCD_HL_DrawPixel             GUI_pContext->pLCD_HL->pfDrawPixel
+
+
+/*********************************************************************
+*
+*       Helper functions
+*
+**********************************************************************
+*/
+#define GUI_ZEROINIT(Obj) GUI_MEMSET(Obj, 0, sizeof(Obj))
+int  GUI_cos(int angle);
+int  GUI_sin(int angle);
+extern const U32 GUI_Pow10[10];
+
+/* Multi-touch */
+void GUI_MTOUCH__ManagePID(int OnOff);
+
+/* Anti-aliased drawing */
+int  GUI_AA_Init       (int x0, int x1);
+int  GUI_AA_Init_HiRes (int x0, int x1);
+void GUI_AA_Exit       (void);
+I16  GUI_AA_HiRes2Pixel(int HiRes);
+
+void GL_FillCircleAA_HiRes(int x0, int y0, int r);
+
+void GUI_AA__DrawCharAA2(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
+void GUI_AA__DrawCharAA4(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
+void GUI_AA__DrawCharAA8(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
+
+/* Alpha blending helper functions */
+int   GUI__GetAlphaBuffer  (U32 ** ppCurrent, U32 ** ppConvert, U32 ** ppData, int * pVXSizeMax);
+int   GUI__AllocAlphaBuffer(int AllocDataBuffer);
+U32 * GUI__DoAlphaBlending (int x, int y, U32 * pData, int xSize, tLCDDEV_Index2Color * pfIndex2Color_DEV, int * pDone);
+unsigned GUI__SetAlphaBufferSize(int xSize);
+
+/* System independent font routines */
+int        GUI_SIF__GetCharDistX       (U16P c, int * pSizeX);
+void       GUI_SIF__GetFontInfo        (const GUI_FONT * pFont, GUI_FONTINFO * pfi);
+char       GUI_SIF__IsInFont           (const GUI_FONT * pFont, U16 c);
+const U8 * GUI_SIF__GetpCharInfo       (const GUI_FONT * pFont, U16P c, unsigned SizeOfCharInfo);
+int        GUI_SIF__GetNumCharAreas    (const GUI_FONT * pFont);
+int        GUI_SIF__GetCharDistX_ExtFrm(U16P c, int * pSizeX);
+void       GUI_SIF__GetFontInfo_ExtFrm (const GUI_FONT * pFont, GUI_FONTINFO * pfi);
+char       GUI_SIF__IsInFont_ExtFrm    (const GUI_FONT * pFont, U16 c);
+int        GUI_SIF__GetCharInfo_ExtFrm (U16P c, GUI_CHARINFO_EXT * pInfo);
+void       GUI_SIF__ClearLine_ExtFrm   (const char * s, int Len);
+
+/* External binary font routines */
+int        GUI_XBF__GetOff       (const GUI_XBF_DATA * pXBF_Data, unsigned c, U32 * pOff);
+int        GUI_XBF__GetOffAndSize(const GUI_XBF_DATA * pXBF_Data, unsigned c, U32 * pOff, U16 * pSize);
+int        GUI_XBF__GetCharDistX (U16P c, int * pSizeX);
+void       GUI_XBF__GetFontInfo  (const GUI_FONT * pFont, GUI_FONTINFO * pInfo);
+char       GUI_XBF__IsInFont     (const GUI_FONT * pFont, U16 c);
+int        GUI_XBF__GetCharInfo  (U16P c, GUI_CHARINFO_EXT * pInfo);
+void       GUI_XBF__ClearLine    (const char * s, int Len);
+
+/* Conversion routines */
+void GUI_AddHex     (U32 v, U8 Len, char ** ps);
+void GUI_AddBin     (U32 v, U8 Len, char ** ps);
+void GUI_AddDecMin  (I32 v, char ** ps);
+void GUI_AddDec     (I32 v, U8 Len, char ** ps);
+void GUI_AddDecShift(I32 v, U8 Len, U8 Shift, char ** ps);
+long GUI_AddSign    (long v, char ** ps);
+int  GUI_Long2Len   (I32 v);
+
+#define GUI_UC__GetCharSize(sText)  GUI_pUC_API->pfGetCharSize(sText)
+#define GUI_UC__GetCharCode(sText)  GUI_pUC_API->pfGetCharCode(sText)
+
+int   GUI_UC__CalcSizeOfChar   (U16 Char);
+U16   GUI_UC__GetCharCodeInc   (const char ** ps);
+int   GUI_UC__NumChars2NumBytes(const char * s, int NumChars);
+int   GUI_UC__NumBytes2NumChars(const char * s, int NumBytes);
+
+int  GUI__GetLineNumChars  (const char * s, int MaxNumChars);
+int  GUI__GetNumChars      (const char * s);
+int  GUI__GetOverlap       (U16 Char);
+int  GUI__GetLineDistX     (const char * s, int Len);
+int  GUI__GetFontSizeY     (void);
+int  GUI__HandleEOLine     (const char ** ps);
+void GUI__DispLine         (const char * s, int Len, const GUI_RECT * pr);
+void GUI__AddSpaceHex      (U32 v, U8 Len, char ** ps);
+void GUI__CalcTextRect     (const char * pText, const GUI_RECT * pTextRectIn, GUI_RECT * pTextRectOut, int TextAlign);
+
+void GUI__ClearTextBackground(int xDist, int yDist);
+
+int  GUI__WrapGetNumCharsDisp       (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
+int  GUI__WrapGetNumCharsToNextLine (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
+int  GUI__WrapGetNumBytesToNextLine (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
+void GUI__memset    (U8  * p, U8 Fill, int NumBytes);
+void GUI__memset16  (U16 * p, U16 Fill, int NumWords);
+int  GUI__strlen    (const char * s);
+int  GUI__strcmp    (const char * s0, const char * s1);
+int  GUI__strcmp_hp (GUI_HMEM hs0, const char * s1);
+
+/* Get cursor position */
+int  GUI__GetCursorPosX     (const char * s, int Index, int MaxNumChars);
+int  GUI__GetCursorPosChar  (const char * s, int x, int NumCharsToNextLine);
+U16  GUI__GetCursorCharacter(const char * s, int Index, int MaxNumChars, int * pIsRTL);
+
+/* Arabic support (tbd) */
+U16  GUI__GetPresentationForm     (U16 Char, U16 Next, U16 Prev, int * pIgnoreNext, const char * s);
+int  GUI__IsArabicCharacter       (U16 c);
+
+/* BiDi support */
+int  GUI__BIDI_Log2Vis           (const char * s, int NumChars, char * pBuffer, int BufferSize);
+int  GUI__BIDI_GetCursorPosX     (const char * s, int NumChars, int Index);
+int  GUI__BIDI_GetCursorPosChar  (const char * s, int NumChars, int x);
+U16  GUI__BIDI_GetLogChar        (const char * s, int NumChars, int Index);
+int  GUI__BIDI_GetCharDir        (const char * s, int NumChars, int Index);
+int  GUI__BIDI_IsNSM             (U16 Char);
+U16  GUI__BIDI_GetCursorCharacter(const char * s, int Index, int MaxNumChars, int * pIsRTL);
+int  GUI__BIDI_GetWordWrap       (const char * s, int xSize, int * pxDist);
+int  GUI__BIDI_GetCharWrap       (const char * s, int xSize);
+
+const char * GUI__BIDI_Log2VisBuffered(const char * s, int * pMaxNumChars);
+
+extern int GUI__BIDI_Enabled;
+
+extern int (* _pfGUI__BIDI_Log2Vis         )(const char * s, int NumChars, char * pBuffer, int BufferSize);
+extern int (* _pfGUI__BIDI_GetCursorPosX   )(const char * s, int NumChars, int Index);
+extern int (* _pfGUI__BIDI_GetCursorPosChar)(const char * s, int NumChars, int x);
+extern U16 (* _pfGUI__BIDI_GetLogChar      )(const char * s, int NumChars, int Index);
+extern int (* _pfGUI__BIDI_GetCharDir      )(const char * s, int NumChars, int Index);
+extern int (* _pfGUI__BIDI_IsNSM           )(U16 Char);
+
+/* BiDi-related function pointers */
+extern const char * (* GUI_CharLine_pfLog2Vis)(const char * s, int * pMaxNumChars);
+
+extern int (* GUI__GetCursorPos_pfGetPosX)     (const char * s, int MaxNumChars, int Index);
+extern int (* GUI__GetCursorPos_pfGetPosChar)  (const char * s, int MaxNumChars, int x);
+extern U16 (* GUI__GetCursorPos_pfGetCharacter)(const char * s, int MaxNumChars, int Index, int * pIsRTL);
+
+extern int (* GUI__Wrap_pfGetWordWrap)(const char * s, int xSize, int * pxDist);
+extern int (* GUI__Wrap_pfGetCharWrap)(const char * s, int xSize);
+
+/* Proportional  font support */
+const GUI_FONT_PROP * GUIPROP__FindChar(const GUI_FONT_PROP * pProp, U16P c);
+
+/* Extended proportional font support */
+const GUI_FONT_PROP_EXT * GUIPROP_EXT__FindChar(const GUI_FONT_PROP_EXT * pPropExt, U16P c);
+void  GUIPROP_EXT__DispLine      (const char * s, int Len);
+void  GUIPROP_EXT__ClearLine     (const char * s, int Len);
+void  GUIPROP_EXT__SetfpClearLine(void (* fpClearLine)(const char * s, int Len));
+
+/* Reading data routines */
+U16 GUI__Read16(const U8 ** ppData);
+U32 GUI__Read32(const U8 ** ppData);
+
+/* Virtual screen support */
+void GUI__GetOrg(int * px, int * py);
+void GUI__SetOrgHook(void(* pfHook)(int x, int y));
+
+/* Timer support */
+int              GUI_TIMER__IsActive       (void);
+GUI_TIMER_TIME   GUI_TIMER__GetPeriod      (void);
+GUI_TIMER_HANDLE GUI_TIMER__GetNextTimer   (GUI_TIMER_HANDLE hTimer, U32 * pContext);
+GUI_TIMER_HANDLE GUI_TIMER__GetFirstTimer  (U32 * pContext);
+GUI_TIMER_HANDLE GUI_TIMER__GetNextTimerLin(GUI_TIMER_HANDLE hTimer, U32 * pContext);
+
+/* Get function pointers for color conversion */
+tLCDDEV_Index2Color * GUI_GetpfIndex2ColorEx(int LayerIndex);
+tLCDDEV_Color2Index * GUI_GetpfColor2IndexEx(int LayerIndex);
+
+int GUI_GetBitsPerPixelEx(int LayerIndex);
+
+LCD_PIXELINDEX * LCD_GetpPalConvTable        (const LCD_LOGPALETTE * pLogPal);
+LCD_PIXELINDEX * LCD_GetpPalConvTableUncached(const LCD_LOGPALETTE * pLogPal);
+LCD_PIXELINDEX * LCD_GetpPalConvTableBM      (const LCD_LOGPALETTE * pLogPal, const GUI_BITMAP * pBitmap, int LayerIndex);
+
+/* Setting a function for converting a color palette to an array of index values */
+void GUI_SetFuncGetpPalConvTable(LCD_PIXELINDEX * (* pFunc)(const LCD_LOGPALETTE * pLogPal, const GUI_BITMAP * pBitmap, int LayerIndex));
+
+/*********************************************************************
+*
+*       Format definitions used by streamed bitmaps
+*
+*   IMPORTANT: DO NOT CHANGE THESE VALUES!
+*   THEY HAVE TO CORRESPOND TO THE DEFINITIONS WITHIN THE CODE OF THE BITMAPCONVERTER!
+*/
+#define GUI_STREAM_FORMAT_INDEXED    100 /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_RLE4       6   /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_RLE8       7   /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_565        8   /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_M565       9   /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_555        10  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_M555       11  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_RLE16      12  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_RLEM16     13  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_8888       16  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_RLE32      15  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_24         17  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_RLEALPHA   18  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_444_12     19  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_M444_12    20  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_444_12_1   21  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_M444_12_1  22  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_444_16     23  /* DO NOT CHANGE */
+#define GUI_STREAM_FORMAT_M444_16    24  /* DO NOT CHANGE */
+
+void GUI__ReadHeaderFromStream  (GUI_BITMAP_STREAM * pBitmapHeader, const U8 * pData);
+void GUI__CreateBitmapFromStream(const GUI_BITMAP_STREAM * pBitmapHeader, const void * pData, GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const GUI_BITMAP_METHODS * pMethods);
+
+/* Cache management */
+int GUI__ManageCache  (int Cmd);
+int GUI__ManageCacheEx(int LayerIndex, int Cmd);
+
+/*********************************************************************
+*
+*       2d - GL
+*
+**********************************************************************
+*/
+void GL_DispChar         (U16 c);
+void GL_DrawArc          (int x0, int y0, int rx, int ry, int a0, int a1);
+void GL_DrawBitmap       (const GUI_BITMAP * pBM, int x0, int y0);
+void GL_DrawCircle       (int x0, int y0, int r);
+void GL_DrawEllipse      (int x0, int y0, int rx, int ry, int w);
+void GL_DrawHLine        (int y0, int x0, int x1);
+void GL_DrawPolygon      (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
+void GL_DrawPoint        (int x,  int y);
+void GL_DrawLine1        (int x0, int y0, int x1, int y1);
+void GL_DrawLine1Ex      (int x0, int y0, int x1, int y1, unsigned * pPixelCnt);
+void GL_DrawLineRel      (int dx, int dy);
+void GL_DrawLineTo       (int x,  int y);
+void GL_DrawLineToEx     (int x,  int y, unsigned * pPixelCnt);
+void GL_DrawLine         (int x0, int y0, int x1, int y1);
+void GL_DrawLineEx       (int x0, int y0, int x1, int y1, unsigned * pPixelCnt);
+void GL_MoveTo           (int x,  int y);
+void GL_FillCircle       (int x0, int y0, int r);
+void GL_FillCircleAA     (int x0, int y0, int r);
+void GL_FillEllipse      (int x0, int y0, int rx, int ry);
+void GL_FillPolygon      (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
+void GL_SetDefault       (void);
+
+
+/*********************************************************************
+*
+*       Callback pointers for dynamic linkage
+*
+**********************************************************************
+Dynamic linkage pointers reduces configuration hassles.
+*/
+typedef int  GUI_tfTimer(void);
+typedef int  WM_tfHandlePID(void);
+
+
+/*********************************************************************
+*
+*       Cursors
+*
+**********************************************************************
+*/
+extern GUI_CONST_STORAGE unsigned char  GUI_Pixels_ArrowS[45];
+extern GUI_CONST_STORAGE unsigned char  GUI_Pixels_ArrowM[60];
+extern GUI_CONST_STORAGE unsigned char  GUI_Pixels_ArrowL[150];
+extern GUI_CONST_STORAGE unsigned char  GUI_Pixels_CrossS[33];
+extern GUI_CONST_STORAGE unsigned char  GUI_Pixels_CrossM[126];
+extern GUI_CONST_STORAGE unsigned char  GUI_Pixels_CrossL[248];
+extern GUI_CONST_STORAGE unsigned char  GUI_PixelsHeaderM[5 * 17];
+
+extern GUI_CONST_STORAGE GUI_LOGPALETTE GUI_CursorPal;
+extern GUI_CONST_STORAGE GUI_LOGPALETTE GUI_CursorPalI;
+
+
+/*********************************************************************
+*
+*       Text rotation
+*
+**********************************************************************
+*/
+extern GUI_RECT  GUI_RectDispString; /* Used by LCD_Rotate...() and GUI_DispStringInRect() */
+
+/*********************************************************************
+*
+*       Flag for setting transparency for 'EXT' fonts
+*
+**********************************************************************
+*/
+extern U8 GUI__CharHasTrans;
+
+/*********************************************************************
+*
+*       Multitasking support
+*
+**********************************************************************
+*/
+extern int GUITASK__EntranceCnt;
+
+/*********************************************************************
+*
+*       Bitmap related functions
+*
+**********************************************************************
+*/
+
+int       GUI_GetBitmapPixelIndex(const GUI_BITMAP * pBMP, unsigned x, unsigned y);
+GUI_COLOR GUI_GetBitmapPixelColor(const GUI_BITMAP * pBMP, unsigned x, unsigned y);
+int       GUI_GetBitmapPixelIndexEx(int BitsPerPixel, int BytesPerLine, const U8 * pData, unsigned x, unsigned y);
+
+void      GUI__DrawBitmap16bpp (int x0, int y0, int xsize, int ysize, const U8 * pPixel, const LCD_LOGPALETTE * pLogPal, int xMag, int yMag, tLCDDEV_Index2Color * pfIndex2Color, const LCD_API_COLOR_CONV * pColorConvAPI);
+void      GUI__DrawBitmapA16bpp(int x0, int y0, int xSize, int ySize, const U8 * pPixel, const LCD_LOGPALETTE * pLogPal, int xMag, int yMag, tLCDDEV_Index2Color * pfIndex2Color);
+void      GUI__SetPixelAlpha   (int x, int y, U8 Alpha, LCD_COLOR Color);
+LCD_COLOR GUI__MixColors       (LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
+void      GUI__MixColorsBulk   (U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens);
+
+extern const GUI_UC_ENC_APILIST GUI_UC_None;
+
+/*********************************************************************
+*
+*       LCDDEV_L0_xxx
+*
+**********************************************************************
+*/
+#define LCDDEV_L0_Color2Index         GUI__apDevice[GUI_pContext->SelLayer]->pColorConvAPI->pfColor2Index
+#define LCDDEV_L0_Index2Color         GUI__apDevice[GUI_pContext->SelLayer]->pColorConvAPI->pfIndex2Color
+
+#define LCDDEV_L0_DrawBitmap          GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawBitmap
+#define LCDDEV_L0_DrawHLine           GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawHLine
+#define LCDDEV_L0_DrawVLine           GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawVLine
+#define LCDDEV_L0_DrawPixel           GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawPixel
+#define LCDDEV_L0_FillRect            GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfFillRect
+#define LCDDEV_L0_GetPixel            GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetPixel
+#define LCDDEV_L0_GetRect             GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetRect
+#define LCDDEV_L0_GetPixelIndex       GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetPixelIndex
+#define LCDDEV_L0_SetPixelIndex       GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfSetPixelIndex
+#define LCDDEV_L0_XorPixel            GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfXorPixel
+#define LCDDEV_L0_GetDevFunc          GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetDevFunc
+
+void LCD_ReadRect  (int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
+void GUI_ReadRect  (int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
+void GUI_ReadRectEx(int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
+
+void LCD_ReadRectNoClip(int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
+
+/*********************************************************************
+*
+*       Internal color management
+*
+**********************************************************************
+*/
+typedef struct {
+  void         (* pfSetColor)   (LCD_COLOR Index);
+  void         (* pfSetBkColor) (LCD_COLOR Index);
+  LCD_DRAWMODE (* pfSetDrawMode)(LCD_DRAWMODE dm);
+} LCD_SET_COLOR_API;
+
+extern const LCD_SET_COLOR_API * LCD__pSetColorAPI;
+
+#define LCD__SetBkColorIndex(Index) (*GUI_pContext->LCD_pBkColorIndex = Index)
+#define LCD__SetColorIndex(Index)   (*GUI_pContext->LCD_pColorIndex   = Index)
+#define LCD__GetBkColorIndex()      (*GUI_pContext->LCD_pBkColorIndex)
+#define LCD__GetColorIndex()        (*GUI_pContext->LCD_pColorIndex)
+
+/* The following 2 defines are only required for compatibility to older versions of the TTF library */
+#define LCD_BKCOLORINDEX (*GUI_pContext->LCD_pBkColorIndex)
+#define LCD_COLORINDEX   (*GUI_pContext->LCD_pColorIndex)
+
+/*********************************************************************
+*
+*       EXTERNs for GL_CORE
+*
+**********************************************************************
+*/
+extern const GUI_FONT * GUI__pFontDefault;
+
+extern GUI_SADDR GUI_CONTEXT * GUI_pContext;
+
+extern GUI_DEVICE * GUI__apDevice[GUI_NUM_LAYERS];
+
+//
+// Function pointer for converting a palette containing a color array into an index array
+//
+extern LCD_PIXELINDEX * (* GUI_pfGetpPalConvTable)(const LCD_LOGPALETTE * pLogPal, const GUI_BITMAP * pBitmap, int LayerIndex);
+
+//
+// Function pointer for mixing up 2 colors
+//
+extern LCD_COLOR (* GUI__pfMixColors)(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
+
+//
+// Function pointer for mixing up arrays of colors
+//
+extern void (* GUI__pfMixColorsBulk)(U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens);
+
+#ifdef  GL_CORE_C
+  #define GUI_EXTERN
+#else
+  #define GUI_EXTERN extern
+#endif
+
+GUI_EXTERN const GUI_UC_ENC_APILIST * GUI_pUC_API; /* Unicode encoding API */
+
+GUI_EXTERN GUI_SADDR char             GUI_DecChar;
+GUI_EXTERN           GUI_tfTimer    * GUI_pfTimerExec;
+GUI_EXTERN           WM_tfHandlePID * WM_pfHandlePID;
+GUI_EXTERN   void (* GUI_pfDispCharStyle)(U16 Char);
+
+GUI_EXTERN           int GUI__BufferSize; // Required buffer size in pixels for alpha blending and/or antialiasing
+GUI_EXTERN           int GUI_AA__ClipX0;  // x0-clipping value for AA module
+
+GUI_EXTERN           I8  GUI__aNumBuffers[GUI_NUM_LAYERS]; // Number of buffers used per layer
+
+#if GUI_SUPPORT_ROTATION
+  GUI_EXTERN const tLCD_APIList * GUI_pLCD_APIList; /* Used for rotating text */
+#endif
+
+GUI_EXTERN I16 GUI_OrgX, GUI_OrgY;
+
+#undef GUI_EXTERN
+
+
+#if defined(__cplusplus)
+}
+#endif 
+
+#endif /* GUI_PRIVATE_H */
+
+/*************************** End of file ****************************/