Headers for emWin lib
Dependents: DISCO-F746NG_rtos_test
Diff: emWin_header/GUI.h
- Revision:
- 0:1bf8f02b0770
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emWin_header/GUI.h Sat Mar 26 22:49:50 2016 +0000 @@ -0,0 +1,2219 @@ +/********************************************************************* +* 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.h +Purpose : GUI API include file +---------------------------END-OF-HEADER------------------------------ +*/ + +#ifndef GUI_H +#define GUI_H + +#include "GUI_ConfDefaults.h" +#include "GUI_Type.h" +#include "GUI_Version.h" + +#if defined(__cplusplus) +extern "C" { /* Make sure we have C-declarations in C++ programs */ +#endif + +/********************************************************************* +* +* Disable string function warning with newer MSVC versions +*/ +#if defined (_MSC_VER) + #if (_MSC_VER > 1200) + #pragma warning( disable : 4996) + #endif +#endif + +/********************************************************************* +* +* Macros, function replacement +*/ +#define GUI_COUNTOF(a) (sizeof(a) / sizeof(a[0])) +#define GUI_MIN(a,b) (((a) < (b)) ? (a) : (b)) +#define GUI_MAX(a,b) (((a) > (b)) ? (a) : (b)) +#define GUI_ZEROFILL(p, Size) (memset(p, 0, Size)) + +/********************************************************************* +* +* Support for multitasking systems (locking) +*/ +typedef struct GUI_CONTEXT GUI_CONTEXT; + +#if !GUI_OS + #define GUI_LOCK() + #define GUI_UNLOCK() + #define GUITASK_INIT() + #define GUITASK_COPY_CONTEXT() +#else + void GUI_Lock(void); + void GUI_Unlock(void); + void GUITASK_Init(void); + void GUITASK_CopyContext(void); + void GUITASK_SetMaxTask(int MaxTask); + GUI_CONTEXT * GUITASK_GetpContext(int Index); + #define GUI_LOCK() GUI_Lock() + #define GUI_UNLOCK() GUI_Unlock() + #define GUITASK_INIT() GUITASK_Init() + #define GUITASK_COPY_CONTEXT() GUITASK_CopyContext() +#endif + +/********************************************************************* +* +* API table of a display driver +*/ +struct GUI_DEVICE_API { + // + // Data + // + int DeviceClassIndex; + // + // Drawing functions + // + 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); + void (* pfDrawHLine )(GUI_DEVICE * pDevice, int x0, int y0, int x1); + void (* pfDrawVLine )(GUI_DEVICE * pDevice, int x , int y0, int y1); + void (* pfFillRect )(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1); + unsigned (* pfGetPixelIndex)(GUI_DEVICE * pDevice, int x, int y); + void (* pfSetPixelIndex)(GUI_DEVICE * pDevice, int x, int y, int ColorIndex); + void (* pfXorPixel )(GUI_DEVICE * pDevice, int x, int y); + // + // Set origin + // + void (* pfSetOrg )(GUI_DEVICE * pDevice, int x, int y); + // + // Request information + // + void (*(* pfGetDevFunc) (GUI_DEVICE ** ppDevice, int Index))(void); + I32 (* pfGetDevProp )(GUI_DEVICE * pDevice, int Index); + void *(* pfGetDevData )(GUI_DEVICE * pDevice, int Index); + void (* pfGetRect )(GUI_DEVICE * pDevice, LCD_RECT * pRect); +}; + +/********************************************************************* +* +* Device classes +*/ +typedef enum { + DEVICE_CLASS_DRIVER = 0, + DEVICE_CLASS_DRIVER_MODIFIER, // Zoom or delta-pixel modifier + DEVICE_CLASS_VNC, + DEVICE_CLASS_SPRITE, + DEVICE_CLASS_MEMDEV, + DEVICE_CLASS_ALPHA, + DEVICE_CLASS_AUTOALPHA, + DEVICE_CLASS_MEASDEV +} DEVICE_CLASS; + +#define GUI_DEVICE_STAYONTOP 1 + +/********************************************************************* +* +* Display drivers +*/ +// +// Addresses +// +extern const GUI_DEVICE_API GUIDRV_Win_API; + +extern const GUI_DEVICE_API GUIDRV_Template_API; + +// +// Macros to be used in configuration files +// +#define GUIDRV_WIN32 &GUIDRV_Win_API + +#if defined(WIN32) && !defined(LCD_SIMCONTROLLER) + + #define GUIDRV_TEMPLATE &GUIDRV_Win_API + +#else + + #define GUIDRV_TEMPLATE &GUIDRV_Template_API + +#endif + +/********************************************************************* +* +* Definition of GUI_DEVICE structure +*/ +struct GUI_DEVICE { + // + // Linking + // + GUI_DEVICE * pNext; + GUI_DEVICE * pPrev; + // + // Data + // + union { + GUI_HMEM hContext; // Handle of payload data like sprite- or memory device context + void * pContext; // Pointer for context data in a fixed block + } u; + // + // API pointers + // + const GUI_DEVICE_API * pDeviceAPI; + const LCD_API_COLOR_CONV * pColorConvAPI; + U16 Flags; + int LayerIndex; +}; + +extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_1; +extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_8; +extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_16; +extern const GUI_DEVICE_API GUI_MEMDEV_DEVICE_32; + +/********************************************************************* +* +* GUI_CONTEXT +* +* This structure is public for one reason only: +* To allow the application to save and restore the context. +*/ +typedef union { + U8 aColorIndex8[2]; + U16 aColorIndex16[2]; + U32 aColorIndex32[2]; +} LCD_COLORINDEX_UNION; + +struct GUI_CONTEXT { + // + // Variables in LCD module + // + LCD_COLORINDEX_UNION uLCD; + LCD_RECT ClipRect; + U8 DrawMode; + U8 SelLayer; + U8 TextStyle; + // + // Variables in GL module + // + GUI_RECT * pClipRect_HL; // High level clip rectangle ... Speed optimization so drawing routines can optimize + U8 PenSize; + U8 PenShape; + U8 LineStyle; + // + // Variables in GUICHAR module + // + const GUI_FONT * pAFont; + I16P LBorder; + I16P DispPosX, DispPosY; + I16P DrawPosX, DrawPosY; + I16P TextMode, TextAlign; + GUI_COLOR Color, BkColor; // Required only when changing devices and for speed opt (caching) + // + // Pointer to color indices + // + LCD_PIXELINDEX * LCD_pBkColorIndex; + LCD_PIXELINDEX * LCD_pColorIndex; + LCD_PIXELINDEX * LCD_pAColorIndex; + // + // Variables in WM module + // + #if GUI_WINSUPPORT + const GUI_RECT * WM__pUserClipRect; + GUI_HWIN hAWin; + int xOff, yOff; + U8 WM_IsActive; + #endif + // + // Array of pointers to device chains + // + //GUI_DEVICE * apDevice[GUI_NUM_LAYERS]; + GUI_DEVICE * apDriver[GUI_NUM_LAYERS]; + // + // Variables in MEMDEV module (with memory devices only) + // + GUI_HMEM hDevData; + // + // Variables in Anitaliasing module + // + const tLCD_HL_APIList * pLCD_HL; // Required to reroute drawing (HLine & Pixel) to the AA module + U8 AA_Factor; + U8 AA_HiResEnable; + void (* AA_pfSetPixelAA)(int x, int y, U8 Intens); // Function to be used for drawing a single pixel +}; + +/* Rename GUI_SaveContext in order to avoid crashes if wrong GUIConf is used */ +#if (GUI_WINSUPPORT == 1) + #define GUI_SaveContext GUI_SaveContext_W +#else + #define GUI_SaveContext GUI_SaveContext_ +#endif + +/********************************************************************* +* +* Device management +*/ +GUI_DEVICE * GUI_DEVICE_Create (const GUI_DEVICE_API * pDeviceAPI, const LCD_API_COLOR_CONV * pColorConvAPI, U16 Flags, int LayerIndex); +GUI_DEVICE * GUI_DEVICE_CreateAndLink(const GUI_DEVICE_API * pDeviceAPI, const LCD_API_COLOR_CONV * pColorConvAPI, U16 Flags, int LayerIndex); +void GUI_DEVICE_Delete (GUI_DEVICE * pDevice); +int GUI_DEVICE_Link (GUI_DEVICE * pDevice); +void GUI_DEVICE_Unlink (GUI_DEVICE * pDevice); +GUI_DEVICE * GUI_DEVICE__GetpDriver (int LayerIndex); +GUI_DEVICE * GUI_DEVICE__GetpDevice (int LayerIndex, int DeviceClass); + +GUI_DEVICE * GUI_DEVICE_UnlinkTaskDevices(void); +void GUI_DEVICE_LinkDevices (GUI_DEVICE * pDevice); + +/********************************************************************* +* +* GUI_DIRTYDEVICE +*/ +typedef struct { + void * pData; // Pointer to first pixel + int x0, y0; // Coordinates of the upper left pixel + int xSize, ySize; // Size of dirty rectangle + int LineOff; // Virtual xSize in pixels + int BytesPerPixel; // Number of bytes required per pixel +} GUI_DIRTYDEVICE_INFO; + +int GUI_DIRTYDEVICE_Fetch (int LayerIndex, GUI_DIRTYDEVICE_INFO * pInfo); +int GUI_DIRTYDEVICE_Delete(int LayerIndex); +int GUI_DIRTYDEVICE_Create(int LayerIndex); + +/********************************************************************* +* +* General routines +*/ +int GUI_Init (void); +void GUI_Exit (void); +void GUI_SetDefaultFont (const GUI_FONT * pFont); +void GUI_SetDefault (void); +GUI_DRAWMODE GUI_SetDrawMode (GUI_DRAWMODE dm); +const char * GUI_GetVersionString (void); +void GUI_SaveContext ( GUI_CONTEXT * pContext); +void GUI_RestoreContext (const GUI_CONTEXT * pContext); +void GUI_SetScreenSizeX (int xSize); +void GUI_SetScreenSizeY (int ySize); +int GUI_GetScreenSizeX (void); +int GUI_GetScreenSizeY (void); +const GUI_RECT * GUI_SetClipRect (const GUI_RECT * pRect); + +void MainTask (void); + +/********************************************************************* +* +* Rectangle helper functions +*/ +int GUI_RectsIntersect(const GUI_RECT * pr0, const GUI_RECT * pr1); +void GUI_MoveRect (GUI_RECT * pRect, int x, int y); +void GUI_MergeRect (GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1); +int GUI__IntersectRects(GUI_RECT * pDest, const GUI_RECT * pr0, const GUI_RECT * pr1); +void GUI__IntersectRect (GUI_RECT * pDest, const GUI_RECT * pr0); +void GUI__ReduceRect (GUI_RECT * pDest, const GUI_RECT * pRect, int Dist); + +/********************************************************************* +* +* Misc helper functions +*/ +I32 GUI__ATan2(I32 x, I32 y, I32 * ph); +I32 GUI__ASinHQ(I32 SinHQ); +int GUI__CompactPixelIndices (LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel); +int GUI__CompactPixelIndicesEx(LCD_PIXELINDEX * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI); +void GUI__Config(void); +I32 GUI__CosHQ(I32 Ang1000); +int GUI__DivideRound (int a, int b); +I32 GUI__DivideRound32 (I32 a, I32 b); +void GUI__ExpandPixelIndices (void * pBuffer, int NumPixels, int BitsPerPixel); +void GUI__ExpandPixelIndicesEx (void * pBuffer, int NumPixels, int BitsPerPixel, const LCD_API_COLOR_CONV * pColorConvAPI); +void GUI__memcpy(void * pDest, const void * pSrc, int NumBytes); +int GUI__SetText(GUI_HMEM * phText, const char * s); +I32 GUI__SinHQ(I32 Ang1000); +I32 GUI__sqrt32(I32 Square); +void GUI__DrawTwinArc2(int xl, int xr, int y0, int r, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorFill); +void GUI__DrawTwinArc4(int x0, int y0, int x1, int y1, int r, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorFill); +void GUI__FillTrippleArc(int x0, int y0, int Size, GUI_COLOR ColorR0, GUI_COLOR ColorR1, GUI_COLOR ColorR2, GUI_COLOR ColorFill); +void GUI__RegisterExit(GUI_REGISTER_EXIT * pRegisterExit); + +/********************************************************************* +* +* Get / Set Attributes +*/ +GUI_COLOR GUI_GetBkColor (void); +int GUI_GetBkColorIndex(void); +GUI_COLOR GUI_GetColor (void); +int GUI_GetColorIndex (void); +U8 GUI_GetLineStyle (void); +U8 GUI_GetPenSize (void); +U8 GUI_GetPenShape (void); +unsigned GUI_GetPixelIndex (int x, int y); + +void GUI_SetBkColor (GUI_COLOR); +void GUI_SetColor (GUI_COLOR); +void GUI_SetBkColorIndex(int Index); +void GUI_SetColorIndex(int Index); + +U8 GUI_SetPenSize (U8 Size); +U8 GUI_SetPenShape (U8 Shape); +U8 GUI_SetLineStyle (U8 Style); + +/* Get/Set Character used as decimal point (usually '.' or ',') */ +char GUI_GetDecChar(void); +char GUI_SetDecChar(char c); + +/********************************************************************* +* +* Color / Index related functions +*/ +int GUI_Color2Index(GUI_COLOR color); +GUI_COLOR GUI_Color2VisColor(GUI_COLOR color); +char GUI_ColorIsAvailable(GUI_COLOR color); +GUI_COLOR GUI_Index2Color(int Index); +U32 GUI_CalcColorDist (GUI_COLOR Color0, GUI_COLOR Color1); +U32 GUI_CalcVisColorError(GUI_COLOR color); + +/********************************************************************* +* +* Error handler +*/ +void GUI_SetOnErrorFunc(void (* pFunc)(const char * s)); + +/********************************************************************* +* +* Logging (for debugging primarily) +*/ +void GUI_Log (const char * s); +void GUI_Log1 (const char * s, I32 p0); +void GUI_Log2 (const char * s, I32 p0, I32 p1); +void GUI_Log3 (const char * s, I32 p0, I32 p1, I32 p2); +void GUI_Log4 (const char * s, I32 p0, I32 p1, I32 p2,I32 p3); +void GUI_Warn (const char * s); +void GUI_Warn1 (const char * s, I32 p0); +void GUI_Warn2 (const char * s, I32 p0, I32 p1); +void GUI_Warn3 (const char * s, I32 p0, I32 p1, I32 p2); +void GUI_Warn4 (const char * s, I32 p0, I32 p1, I32 p2, I32 p3); +void GUI_ErrorOut (const char * s); +void GUI_ErrorOut1(const char * s, I32 p0); +void GUI_ErrorOut2(const char * s, I32 p0, I32 p1); +void GUI_ErrorOut3(const char * s, I32 p0, I32 p1, I32 p2); +void GUI_ErrorOut4(const char * s, I32 p0, I32 p1, I32 p2, I32 p3); + +/********************************************************************* +* +* 2d - GL +*/ +void GUI_Clear (void); +void GUI_ClearRect (int x0, int y0, int x1, int y1); +void GUI_ClearRectEx (const GUI_RECT * pRect); +void GUI_CopyRect (int x0, int y0, int x1, int y1, int dx, int dy); +void GUI_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1); +void GUI_DrawBitmap (const GUI_BITMAP * pBM, int x0, int y0); +void GUI_DrawBitmapMag (const GUI_BITMAP * pBM, int x0, int y0, int XMul, int YMul); +void GUI_DrawBitmapEx (const GUI_BITMAP * pBM, int x0, int y0, int xCenter, int yCenter, int xMag, int yMag); +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); +void GUI_DrawBitmapHWAlpha(const GUI_BITMAP * pBM, int x0, int y0); +void GUI_DrawCircle (int x0, int y0, int r); +void GUI_DrawEllipse (int x0, int y0, int rx, int ry); +void GUI_DrawGradientH (int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1); +void GUI_DrawGradientV (int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1); +void GUI_DrawGradientRoundedH(int x0, int y0, int x1, int y1, int rd, GUI_COLOR Color0, GUI_COLOR Color1); +void GUI_DrawGradientRoundedV(int x0, int y0, int x1, int y1, int rd, GUI_COLOR Color0, GUI_COLOR Color1); +void GUI_DrawGraph (I16 * pay, int NumPoints, int x0, int y0); +void GUI_DrawGraphEx (I16 * pay, int NumPoints, int x0, int y0, int Numerator, int Denominator, int MirrorX); +void GUI_DrawHLine (int y0, int x0, int x1); +void GUI_DrawLine (int x0, int y0, int x1, int y1); +void GUI_DrawLineRel (int dx, int dy); +void GUI_DrawLineTo (int x, int y); +void GUI_DrawPie (int x0, int y0, int r, int a0, int a1, int Type); +void GUI_DrawPixel (int x, int y); +void GUI_DrawPoint (int x, int y); +void GUI_DrawPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); +void GUI_DrawPolyLine (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); +void GUI_DrawFocusRect (const GUI_RECT * pRect, int Dist); +void GUI_DrawRect (int x0, int y0, int x1, int y1); +void GUI_DrawRectEx (const GUI_RECT * pRect); +void GUI_DrawRoundedFrame (int x0, int y0, int x1, int y1, int r, int w); +void GUI_DrawRoundedRect (int x0, int y0, int x1, int y1, int r); +void GUI_DrawVLine (int x0, int y0, int y1); +void GUI_FillCircle (int x0, int y0, int r); +void GUI_FillEllipse (int x0, int y0, int rx, int ry); +void GUI_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0); +void GUI_FillRect (int x0, int y0, int x1, int y1); +void GUI_FillRectEx (const GUI_RECT * pRect); +void GUI_FillRoundedFrame (int x0, int y0, int x1, int y1, int r, int w); +void GUI_FillRoundedRect (int x0, int y0, int x1, int y1, int r); +void GUI_FillRoundedRectB (int x0, int y0, int x1, int y1, int r); +void GUI_FillRoundedRectT (int x0, int y0, int x1, int y1, int r); +void GUI_GetClientRect (GUI_RECT * pRect); +void GUI_InvertRect (int x0, int y0, int x1, int y1); +void GUI_MoveRel (int dx, int dy); +void GUI_MoveTo (int x, int y); + +/********************************************************************* +* +* Graphic file support +*/ +typedef int GUI_GET_DATA_FUNC(void * p, const U8 ** ppData, unsigned NumBytes, U32 Off); + +/********************************************************************* +* +* GIF file support +*/ +int GUI_GIF_Draw (const void * pGIF, U32 NumBytes, int x0, int y0); +int GUI_GIF_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); +int GUI_GIF_DrawSub (const void * pGIF, U32 NumBytes, int x0, int y0, int Index); +int GUI_GIF_DrawSubEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Index); +int GUI_GIF_DrawSubScaled (const void * pGIF, U32 NumBytes, int x0, int y0, int Index, int Num, int Denom); +int GUI_GIF_DrawSubScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Index, int Num, int Denom); +int GUI_GIF_GetComment (const void * pGIF, U32 NumBytes, U8 * pBuffer, int MaxSize, int Index); +int GUI_GIF_GetCommentEx (GUI_GET_DATA_FUNC * pfGetData, void * p, U8 * pBuffer, int MaxSize, int Index); +int GUI_GIF_GetImageInfo (const void * pGIF, U32 NumBytes, GUI_GIF_IMAGE_INFO * pInfo, int Index); +int GUI_GIF_GetImageInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_GIF_IMAGE_INFO * pInfo, int Index); +int GUI_GIF_GetInfo (const void * pGIF, U32 NumBytes, GUI_GIF_INFO * pInfo); +int GUI_GIF_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_GIF_INFO * pInfo); +int GUI_GIF_GetXSize (const void * pGIF); +int GUI_GIF_GetXSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); +int GUI_GIF_GetYSize (const void * pGIF); +int GUI_GIF_GetYSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); +int GUI_GIF_SetFillTrans (int OnOff); + +/********************************************************************* +* +* BMP file support +*/ +int GUI_BMP_Draw (const void * pFileData, int x0, int y0); +int GUI_BMP_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); +int GUI_BMP_DrawScaled (const void * pFileData, int x0, int y0, int Num, int Denom); +int GUI_BMP_DrawScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Num, int Denom); +int GUI_BMP_GetXSize (const void * pFileData); +int GUI_BMP_GetXSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); +int GUI_BMP_GetYSize (const void * pFileData); +int GUI_BMP_GetYSizeEx (GUI_GET_DATA_FUNC * pfGetData, void * p); +void GUI_BMP_EnableAlpha (void); +void GUI_BMP_DisableAlpha(void); + +/********************************************************************* +* +* PNG file support +*/ +int GUI_PNG_Draw (const void * pFileData, int DataSize, int x0, int y0); +int GUI_PNG_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); +int GUI_PNG_GetXSize (const void * pFileData, int FileSize); +int GUI_PNG_GetXSizeEx(GUI_GET_DATA_FUNC * pfGetData, void * p); +int GUI_PNG_GetYSize (const void * pFileData, int FileSize); +int GUI_PNG_GetYSizeEx(GUI_GET_DATA_FUNC * pfGetData, void * p); + +/********************************************************************* +* +* JPEG file support +*/ +typedef struct { + int XSize; + int YSize; +} GUI_JPEG_INFO; + +int GUI_JPEG_Draw (const void * pFileData, int DataSize, int x0, int y0); +int GUI_JPEG_DrawEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0); +int GUI_JPEG_DrawScaled (const void * pFileData, int DataSize, int x0, int y0, int Num, int Denom); +int GUI_JPEG_DrawScaledEx(GUI_GET_DATA_FUNC * pfGetData, void * p, int x0, int y0, int Num, int Denom); +int GUI_JPEG_GetInfo (const void * pFileData, int DataSize, GUI_JPEG_INFO * pInfo); +int GUI_JPEG_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * p, GUI_JPEG_INFO * pInfo); + +/********************************************************************* +* +* MOVIE file support +*/ +#define GUI_MOVIE_NOTIFICATION_PREDRAW 0 // Immediately before frame is drawn +#define GUI_MOVIE_NOTIFICATION_POSTDRAW 1 // Immediately after a frame is drawn +#define GUI_MOVIE_NOTIFICATION_START 2 // Send when start playing a movie +#define GUI_MOVIE_NOTIFICATION_STOP 3 // Movie has stopped +#define GUI_MOVIE_NOTIFICATION_DELETE 4 // Movie has been deleted + +typedef GUI_HMEM GUI_MOVIE_HANDLE; + +typedef void GUI_MOVIE_FUNC(GUI_MOVIE_HANDLE hMovie, int Notification, U32 CurrentFrame); + +typedef struct { + int xSize; // X-size of images + int ySize; // Y-size of images + int msPerFrame; // Default duration of 1 frame + U32 NumFrames; // Number of frames +} GUI_MOVIE_INFO; + +GUI_MOVIE_HANDLE GUI_MOVIE_Create (const void * pFileData, U32 FileSize, GUI_MOVIE_FUNC * pfNotify); +GUI_MOVIE_HANDLE GUI_MOVIE_CreateEx (GUI_GET_DATA_FUNC * pfGetData, void * pParam, GUI_MOVIE_FUNC * pfNotify); +int GUI_MOVIE_Delete (GUI_MOVIE_HANDLE hMovie); +U32 GUI_MOVIE_GetFrameIndex(GUI_MOVIE_HANDLE hMovie); +int GUI_MOVIE_GetInfo (const void * pFileData, U32 FileSize, GUI_MOVIE_INFO * pInfo); +int GUI_MOVIE_GetInfoEx (GUI_GET_DATA_FUNC * pfGetData, void * pParam, GUI_MOVIE_INFO * pInfo); +int GUI_MOVIE_GetPos (GUI_MOVIE_HANDLE hMovie, int * pxPos, int * pyPos, int * pxSize, int * pySize); +int GUI_MOVIE_GotoFrame (GUI_MOVIE_HANDLE hMovie, U32 Frame); +int GUI_MOVIE_Pause (GUI_MOVIE_HANDLE hMovie); +int GUI_MOVIE_Play (GUI_MOVIE_HANDLE hMovie); +int GUI_MOVIE_SetPeriod (GUI_MOVIE_HANDLE hMovie, unsigned Period); +int GUI_MOVIE_SetPos (GUI_MOVIE_HANDLE hMovie, int xPos, int yPos); +int GUI_MOVIE_Show (GUI_MOVIE_HANDLE hMovie, int xPos, int yPos, int DoLoop); + +/********************************************************************* +* +* Cursor routines +*/ +#define GUI_CURSOR_SHOW 0 +#define GUI_CURSOR_HIDE 1 + +typedef struct { + const GUI_BITMAP * pBitmap; + int xHot; + int yHot; +} GUI_CURSOR; + +typedef struct { + const GUI_BITMAP ** ppBm; + int xHot; + int yHot; + unsigned Period; + const unsigned * pPeriod; + int NumItems; +} GUI_CURSOR_ANIM; + +#if GUI_SUPPORT_CURSOR + int GUI_CURSOR_GetState (void); + int GUI_CURSOR_GetStateEx (int Layer); + void GUI_CURSOR_Hide (void); + void GUI_CURSOR_HideEx (int Layer); + const GUI_CURSOR * GUI_CURSOR_Select (const GUI_CURSOR * pCursor); + const GUI_CURSOR * GUI_CURSOR_SelectEx (const GUI_CURSOR * pCursor, int Layer); + int GUI_CURSOR_SelectAnim (const GUI_CURSOR_ANIM * pCursorAnim); + int GUI_CURSOR_SelectAnimEx (const GUI_CURSOR_ANIM * pCursorAnim, int LayerIndex); + int GUI_CURSOR_SetBitmap (const GUI_BITMAP * pBM); + int GUI_CURSOR_SetBitmapEx (const GUI_BITMAP * pBM, int Layer); + void GUI_CURSOR_SetPosition (int x, int y); + void GUI_CURSOR_SetPositionEx(int xNewPos, int yNewPos, int Layer); + void GUI_CURSOR_Show (void); + void GUI_CURSOR_ShowEx (int Layer); + GUI_HSPRITE GUI_CURSOR__GetSpriteEx (int LayerIndex, int * pxPos, int * pyPos); + void GUI_CURSOR__SetSpriteEx (GUI_HSPRITE hSprite, const GUI_CURSOR * pCursor, int LayerIndex); +#else + #define GUI_CURSOR_Show(); + #define GUI_CURSOR_Clear(); +#endif + +/********************************************************************* +* +* Sprite support +*/ +#define GUI_SPRITE_CF_STAYONTOP (1 << 0) +#define GUI_SPRITE_CF_SHOW (1 << 1) + +#define GUI_SPRITE_SHOW 0 +#define GUI_SPRITE_HIDE 1 + +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 */ +void GUI_SPRITE__SetCallback (GUI_HSPRITE hSprite, GUI_HMEM hContext, void (* pCB)(GUI_HSPRITE, int)); +GUI_HSPRITE GUI_SPRITE_Create (const GUI_BITMAP * pBM, int x, int y); +GUI_HSPRITE GUI_SPRITE_CreateAnim (const GUI_BITMAP ** ppBm, int x, int y, unsigned Period, const unsigned * pPeriod, int NumItems); +GUI_HSPRITE GUI_SPRITE_CreateEx (const GUI_BITMAP * pBM, int x, int y, int Layer); +GUI_HSPRITE GUI_SPRITE_CreateExAnim (const GUI_BITMAP ** ppBm, int x, int y, unsigned Period, const unsigned * pPeriod, int NumItems, int LayerIndex); +GUI_HSPRITE GUI_SPRITE_CreateHidden (const GUI_BITMAP * pBM, int x, int y); +GUI_HSPRITE GUI_SPRITE_CreateHiddenEx (const GUI_BITMAP * pBM, int x, int y, int Layer); +void GUI_SPRITE_Delete (GUI_HSPRITE hSprite); +int GUI_SPRITE_GetState (GUI_HSPRITE hSprite); +void GUI_SPRITE_Hide (GUI_HSPRITE hSprite); +int GUI_SPRITE_SetBitmap (GUI_HSPRITE hSprite, const GUI_BITMAP * pBM); +int GUI_SPRITE_SetBitmapAndPosition(GUI_HSPRITE hSprite, const GUI_BITMAP * pBM, int x, int y); +int GUI_SPRITE_SetLoop (GUI_HSPRITE hSprite, int OnOff); +void GUI_SPRITE_SetPosition (GUI_HSPRITE hSprite, int x, int y); +int GUI_SPRITE_StartAnim (GUI_HSPRITE hSprite); +int GUI_SPRITE_StopAnim (GUI_HSPRITE hSprite); +void GUI_SPRITE_Show (GUI_HSPRITE hSprite); + +/********************************************************************* +* +* Cursors and their bitmaps +*/ +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowS, GUI_CursorArrowSI; +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowM, GUI_CursorArrowMI; +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorArrowL, GUI_CursorArrowLI; +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossS, GUI_CursorCrossSI; +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossM, GUI_CursorCrossMI; +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorCrossL, GUI_CursorCrossLI; +extern GUI_CONST_STORAGE GUI_CURSOR GUI_CursorHeaderM, GUI_CursorHeaderMI; + +extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapArrowS, GUI_BitmapArrowSI; +extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapArrowM, GUI_BitmapArrowMI; +extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapArrowL, GUI_BitmapArrowLI; +extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapCrossS, GUI_BitmapCrossSI; +extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapCrossM, GUI_BitmapCrossMI; +extern GUI_CONST_STORAGE GUI_BITMAP GUI_BitmapCrossL, GUI_BitmapCrossLI; + +extern GUI_CONST_STORAGE GUI_CURSOR_ANIM GUI_CursorAnimHourglassM; + +/********************************************************************* +* +* Wrap modes +*/ +typedef enum { GUI_WRAPMODE_NONE, GUI_WRAPMODE_WORD, GUI_WRAPMODE_CHAR } GUI_WRAPMODE; + +/********************************************************************* +* +* Text related routines +*/ +void GUI_DispCEOL (void); +void GUI_DispChar (U16 c); +void GUI_DispCharAt (U16 c, I16P x, I16P y); +void GUI_DispChars (U16 c, int Cnt); +void GUI_DispNextLine (void); +void GUI_DispString (const char * s); +void GUI_DispStringAt (const char * s, int x, int y); +void GUI_DispStringAtCEOL (const char * s, int x, int y); +void GUI_DispStringHCenterAt (const char * s, int x, int y); +void GUI__DispStringInRect (const char * s, GUI_RECT * pRect, int TextAlign, int MaxNumChars); +void GUI_DispStringInRect (const char * s, GUI_RECT * pRect, int TextAlign); +#if GUI_SUPPORT_ROTATION + void GUI_DispStringInRectEx (const char * s, GUI_RECT * pRect, int TextAlign, int MaxLen, const GUI_ROTATION * pLCD_Api); +#endif +void GUI_DispStringInRectMax (const char * s, GUI_RECT * pRect, int TextAlign, int MaxLen); /* Not to be doc. */ +void GUI_DispStringInRectWrap (const char * s, GUI_RECT * pRect, int TextAlign, GUI_WRAPMODE WrapMode); /* Not to be doc. */ +void GUI_DispStringLen (const char * s, int Len); +void GUI_GetTextExtend (GUI_RECT* pRect, const char * s, int Len); +int GUI_GetYAdjust (void); +int GUI_GetDispPosX (void); +int GUI_GetDispPosY (void); +const GUI_FONT * GUI_GetFont(void); +int GUI_GetCharDistX (U16 c); +int GUI_GetCharDistXEx (U16 c, int * pSizeX); +int GUI_GetStringDistX (const char * s); +GUI_DRAWMODE GUI_GetDrawMode (void); +int GUI_GetFontDistY (void); +int GUI_GetFontSizeY (void); +void GUI_GetFontInfo (const GUI_FONT * pFont, GUI_FONTINFO * pfi); +void GUI_GetOrg (int * px, int * py); +int GUI_GetYSizeOfFont (const GUI_FONT * pFont); +int GUI_GetYDistOfFont (const GUI_FONT * pFont); +int GUI_GetTextAlign (void); +int GUI_GetTextMode (void); +char GUI_IsInFont (const GUI_FONT * pFont, U16 c); +int GUI_SetTextAlign (int Align); +int GUI_SetTextMode (int Mode); +char GUI_SetTextStyle (char Style); +int GUI_SetLBorder (int x); +const GUI_FONT * GUI_SetFont(const GUI_FONT * pNewFont); +char GUI_GotoXY (int x, int y); +char GUI_GotoX (int x); +char GUI_GotoY (int y); +int GUI_WrapGetNumLines (const char * pText, int xSize, GUI_WRAPMODE WrapMode); + +int GUI_GetLeadingBlankCols (U16 c); +int GUI_GetTrailingBlankCols(U16 c); + + +/********************************************************************* +* +* System independent fonts (SIF) +*/ +void GUI_SIF_CreateFont(const void * pFontData, GUI_FONT * pFont, const GUI_SIF_TYPE * pFontType); +void GUI_SIF_DeleteFont(GUI_FONT * pFont); + +/********************************************************************* +* +* External binary fonts (XBF) +*/ +int GUI_XBF_CreateFont(GUI_FONT * pFont, GUI_XBF_DATA * pXBF, const GUI_XBF_TYPE * pFontType, GUI_XBF_GET_DATA_FUNC * pfGetData, void * pVoid); +void GUI_XBF_DeleteFont(GUI_FONT * pFont); + +/********************************************************************* +* +* TrueType support (TTF) +*/ +int GUI_TTF_CreateFont (GUI_FONT * pFont, GUI_TTF_CS * pCS); +int GUI_TTF_CreateFontAA (GUI_FONT * pFont, GUI_TTF_CS * pCS); +void GUI_TTF_DestroyCache (void); +void GUI_TTF_Done (void); +int GUI_TTF_GetFamilyName(GUI_FONT * pFont, char * pBuffer, int NumBytes); +int GUI_TTF_GetStyleName (GUI_FONT * pFont, char * pBuffer, int NumBytes); +void GUI_TTF_SetCacheSize (unsigned MaxFaces, unsigned MaxSizes, U32 MaxBytes); + +/********************************************************************* +* +* Resource file support +*/ +int GUI_LANG_GetNumItems (int IndexLang); +const char * GUI_LANG_GetText (int IndexText); +int GUI_LANG_GetTextBuffered (int IndexText, char * pBuffer, int SizeOfBuffer); +int GUI_LANG_GetTextBufferedEx(int IndexText, int IndexLang, char * pBuffer, int SizeOfBuffer); +const char * GUI_LANG_GetTextEx (int IndexText, int IndexLang); +int GUI_LANG_LoadCSV (U8 * pFileData, U32 FileSize); +int GUI_LANG_LoadCSVEx (GUI_GET_DATA_FUNC * pfGetData, void * p); +int GUI_LANG_LoadText (U8 * pFileData, U32 FileSize, int IndexLang); +int GUI_LANG_LoadTextEx (GUI_GET_DATA_FUNC * pfGetData, void * p, int IndexLang); +int GUI_LANG_SetLang (int IndexLang); +unsigned GUI_LANG_SetMaxNumLang (unsigned MaxNumLang); +U16 GUI_LANG_SetSep (U16 Sep); + +/********************************************************************* +* +* Unicode support +*/ +int GUI_UC_ConvertUC2UTF8 (const U16 * s, int Len, char * pBuffer, int BufferSize); +int GUI_UC_ConvertUTF82UC (const char * s, int Len, U16 * pBuffer, int BufferSize); +int GUI_UC_Encode (char * s, U16 Char); +int GUI_UC_GetCharSize (const char * s); +U16 GUI_UC_GetCharCode (const char * s); +void GUI_UC_SetEncodeNone (void); +void GUI_UC_SetEncodeUTF8 (void); +int GUI_UC_EnableBIDI (int OnOff); + +void GUI_UC_DispString(const U16 * s); +void GUI_UC2DB (U16 Code, U8 * pOut); +U16 GUI_DB2UC (U8 Byte0, U8 Byte1); + +/********************************************************************* +* +* Drawing of binary, decimal and hexadecimal values +*/ +void GUI_DispBin (U32 v, U8 Len); +void GUI_DispBinAt(U32 v, I16P x, I16P y, U8 Len); +void GUI_DispDec (I32 v, U8 Len); +void GUI_DispDecAt (I32 v, I16P x, I16P y, U8 Len); +void GUI_DispDecMin(I32 v); +void GUI_DispDecShift(I32 v, U8 Len, U8 Shift); +void GUI_DispDecSpace(I32 v, U8 MaxDigits); +void GUI_DispHex (U32 v, U8 Len); +void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len); +void GUI_DispSDec(I32 v, U8 Len); +void GUI_DispSDecShift(I32 v, U8 Len, U8 Shift); + +/********************************************************************* +* +* Drawing of floating point values +*/ +void GUI_DispFloat (float v, char Len); +void GUI_DispFloatFix (float v, char Len, char Fract); +void GUI_DispFloatMin (float v, char Fract); +void GUI_DispSFloatFix(float v, char Len, char Fract); +void GUI_DispSFloatMin(float v, char Fract); + +/********************************************************************* +* +* Dynamic memory management +*/ +#if !defined(GUI_ALLOC_ALLOC) + /* diagnostics */ + GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumFreeBlocks(void); + GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumFreeBytes (void); + GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumUsedBlocks(void); + GUI_ALLOC_DATATYPE GUI_ALLOC_GetNumUsedBytes (void); +#else + #define GUI_ALLOC_GetNumFreeBlocks() 0 + #define GUI_ALLOC_GetNumFreeBytes() 0 + #define GUI_ALLOC_GetNumUsedBlocks() 0 + #define GUI_ALLOC_GetNumUsedBytes() 0 +#endif + +GUI_HMEM GUI_ALLOC_AllocInit (const void * pInitData, GUI_ALLOC_DATATYPE Size); +GUI_HMEM GUI_ALLOC_AllocNoInit (GUI_ALLOC_DATATYPE size); +GUI_HMEM GUI_ALLOC_AllocZero (GUI_ALLOC_DATATYPE size); +void GUI_ALLOC_AssignMemory (void * p, U32 NumBytes); +void GUI_ALLOC_Free (GUI_HMEM hMem); +void GUI_ALLOC_FreeFixedBlock (void * p); +void GUI_ALLOC_FreePtrArray (GUI_HMEM * pArray, int NumElems); +void GUI_ALLOC_FreePtr (GUI_HMEM * phMem); +void * GUI_ALLOC_GetFixedBlock (GUI_ALLOC_DATATYPE Size); +GUI_ALLOC_DATATYPE GUI_ALLOC_GetMaxSize (void); +GUI_ALLOC_DATATYPE GUI_ALLOC_GetSize (GUI_HMEM hMem); +void * GUI_ALLOC_h2p (GUI_HMEM hMem); +GUI_HMEM GUI_ALLOC_p2h (void * p); +void GUI_ALLOC_Init (void); +void GUI_ALLOC_Lock (void); +void * GUI_ALLOC_LockH (GUI_HMEM hMem); +GUI_HMEM GUI_ALLOC_Realloc (GUI_HMEM hOld, int NewSize); +GUI_ALLOC_DATATYPE GUI_ALLOC_RequestSize (void); +void GUI_ALLOC_SetAvBlockSize (U32 BlockSize); +void GUI_ALLOC_Unlock (void); +void * GUI_ALLOC_UnlockH (void ** pp); +int GUI_ALLOC_SetMaxPercentage(int MaxPercentage); + + +/********************************************************************* +* +* Memory devices: GUI_MEMDEV +*/ +#define GUI_MEMDEV_HASTRANS 0 +#define GUI_MEMDEV_NOTRANS (1<<0) + +typedef GUI_HMEM GUI_MEMDEV_Handle; +typedef void GUI_CALLBACK_VOID_P (void * p); +typedef int GUI_ANIMATION_CALLBACK_FUNC(int TimeRem, void * pVoid); + +extern GUI_ANIMATION_CALLBACK_FUNC * GUI_MEMDEV__pCbAnimation; +extern void * GUI_MEMDEV__pVoid; + +typedef struct { + GUI_RECT rView, rPrev; + char FirstCall; +} GUI_AUTODEV; + +typedef struct { + char DrawFixed; + char IsMeasurement; +} GUI_AUTODEV_INFO; + +int GUI_MEMDEV_CreateAuto(GUI_AUTODEV * pAutoDev); +void GUI_MEMDEV_DeleteAuto(GUI_AUTODEV * pAutoDev); +int GUI_MEMDEV_DrawAuto (GUI_AUTODEV * pAutoDev, GUI_AUTODEV_INFO * pAutoDevInfo, GUI_CALLBACK_VOID_P * pfDraw, void * pData); + +/* Create a memory device which is compatible to the selected LCD */ +GUI_MEMDEV_Handle GUI_MEMDEV_Create (int x0, int y0, int xSize, int ySize); +GUI_MEMDEV_Handle GUI_MEMDEV_CreateEx (int x0, int y0, int xSize, int ySize, int Flags); +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); +GUI_MEMDEV_Handle GUI_MEMDEV_CreateFixed32(int x0, int y0, int xSize, int ySize); + +void GUI_MEMDEV_Clear (GUI_MEMDEV_Handle hMem); +int GUI_MEMDEV_ClearAlpha (GUI_MEMDEV_Handle hMemData, GUI_MEMDEV_Handle hMemMask); +void GUI_MEMDEV_CopyFromLCD (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_CopyFromLCDAA (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_CopyToLCD (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_CopyToLCDAA (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_CopyToLCDAt (GUI_MEMDEV_Handle hMem, int x, int y); +int GUI_MEMDEV_CompareWithLCD (GUI_MEMDEV_Handle hMem, int * px, int * py, int * pExp, int * pAct); +void GUI_MEMDEV_Delete (GUI_MEMDEV_Handle MemDev); +void GUI_MEMDEV_DrawPerspectiveX (GUI_MEMDEV_Handle hMem, int x, int y, int h0, int h1, int dx, int dy); +int GUI_MEMDEV_GetXPos (GUI_MEMDEV_Handle hMem); +int GUI_MEMDEV_GetXSize (GUI_MEMDEV_Handle hMem); +int GUI_MEMDEV_GetYPos (GUI_MEMDEV_Handle hMem); +int GUI_MEMDEV_GetYSize (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_MarkDirty (GUI_MEMDEV_Handle hMem, int x0, int y0, int x1, int y1); +void GUI_MEMDEV_ReduceYSize (GUI_MEMDEV_Handle hMem, int YSize); +void GUI_MEMDEV_Rotate (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); +void GUI_MEMDEV_RotateHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag); +void GUI_MEMDEV__Rotate (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag, U32 AndMask); +void GUI_MEMDEV__RotateHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag, U32 AndMask); +void GUI_MEMDEV_RotateHQ (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); +void GUI_MEMDEV_RotateHQHR (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, I32 dx, I32 dy, int a, int Mag); +void GUI_MEMDEV_RotateHQT (GUI_MEMDEV_Handle hSrc, GUI_MEMDEV_Handle hDst, int dx, int dy, int a, int Mag); +GUI_MEMDEV_Handle GUI_MEMDEV_Select (GUI_MEMDEV_Handle hMem); /* Select (activate) a particular memory device. */ +void GUI_MEMDEV_SetOrg (GUI_MEMDEV_Handle hMem, int x0, int y0); +void GUI_MEMDEV_WriteAt (GUI_MEMDEV_Handle hMem, int x, int y); +void GUI_MEMDEV_Write (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_WriteAlphaAt (GUI_MEMDEV_Handle hMem, int Alpha, int x, int y); +void GUI_MEMDEV_WriteAlpha (GUI_MEMDEV_Handle hMem, int Alpha); +void GUI_MEMDEV_WriteExAt (GUI_MEMDEV_Handle hMem, int x, int y, int xMag, int yMag, int Alpha); +void GUI_MEMDEV_WriteEx (GUI_MEMDEV_Handle hMem, int xMag, int yMag, int Alpha); +int GUI_MEMDEV_Draw (GUI_RECT * pRect, GUI_CALLBACK_VOID_P * pfDraw, void * pData, int NumLines, int Flags); +void* GUI_MEMDEV_GetDataPtr (GUI_MEMDEV_Handle hMem); +void GUI_MEMDEV_SetColorConv (GUI_MEMDEV_Handle hMem, const LCD_API_COLOR_CONV * pColorConvAPI); +const LCD_API_COLOR_CONV * GUI_MEMDEV_GetColorConv(GUI_MEMDEV_Handle hMemDev); +int GUI_MEMDEV_GetBitsPerPixel (GUI_MEMDEV_Handle hMemDev); +int GUI_MEMDEV_FadeDevices (GUI_MEMDEV_Handle hMem0, GUI_MEMDEV_Handle hMem1, int Period); +void GUI_MEMDEV_SerializeBMP (GUI_MEMDEV_Handle hDev, GUI_CALLBACK_VOID_U8_P * pfSerialize, void * p); +void GUI_MEMDEV_SetAnimationCallback(GUI_ANIMATION_CALLBACK_FUNC * pCbAnimation, void * pVoid); +void GUI_MEMDEV__FadeDevice (GUI_MEMDEV_Handle hMemWin, GUI_MEMDEV_Handle hMemBk, GUI_MEMDEV_Handle hMemDst, U8 Intens); +void GUI_MEMDEV__FadeDeviceEx (GUI_MEMDEV_Handle hMemWin, GUI_MEMDEV_Handle hMemBk, GUI_MEMDEV_Handle hMemDst, U8 Intens, int xPosWin, int yPosWin); +int GUI_MEMDEV_PunchOutDevice (GUI_MEMDEV_Handle hMemData, GUI_MEMDEV_Handle hMemMask); +void GUI_SelectLCD(void); + +GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32 (GUI_MEMDEV_Handle hMem, U8 Depth); +GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32HQ(GUI_MEMDEV_Handle hMem, U8 Depth); +GUI_MEMDEV_Handle GUI_MEMDEV_CreateBlurredDevice32LQ(GUI_MEMDEV_Handle hMem, U8 Depth); +void GUI_MEMDEV_SetBlurHQ (void); +void GUI_MEMDEV_SetBlurLQ (void); +int GUI_MEMDEV_BlendColor32 (GUI_MEMDEV_Handle hMem, U32 BlendColor, U8 BlendIntens); + +/********************************************************************* +* +* Alpha blending +*/ +typedef struct { + U32 UserAlpha; +} GUI_ALPHA_STATE; + +#define GUI_MAKE_ALPHA(Alpha, Color) ((U32)(((U32)Alpha << 24) | Color)) + +unsigned GUI_EnableAlpha (unsigned OnOff); +U32 GUI_RestoreUserAlpha (GUI_ALPHA_STATE * pAlphaState); +unsigned GUI_SetAlpha (U8 Alpha); +U32 GUI_SetUserAlpha (GUI_ALPHA_STATE * pAlphaState, U32 UserAlpha); +void GUI_SetFuncAlphaBlending(void (* pfAlphaBlending)(LCD_COLOR *, LCD_COLOR *, LCD_COLOR *, U32)); +void GUI_SetFuncMixColors (LCD_COLOR (* pFunc)(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens)); +void GUI_SetFuncMixColorsBulk(void (* pFunc)(U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens)); + +/********************************************************************* +* +* Multi layer support +*/ +unsigned GUI_SelectLayer(unsigned Index); +unsigned GUI_GetSelLayer(void); + +int GUI_SetLayerPosEx (unsigned Index, int xPos, int yPos); +int GUI_SetLayerSizeEx (unsigned Index, int xSize, int ySize); +int GUI_SetLayerVisEx (unsigned Index, int OnOff); +int GUI_SetLayerAlphaEx(unsigned Index, int Alpha); +void GUI_GetLayerPosEx (unsigned Index, int * pxPos, int * pyPos); + +void GUI_AssignCursorLayer(unsigned Index, unsigned CursorLayer); +unsigned GUI_GetCursorLayer (unsigned Index); + +/********************************************************************* +* +* Multiple buffers and display origin +*/ +void GUI_SetOrg(int x, int y); + +void GUI_MULTIBUF_Begin (void); +void GUI_MULTIBUF_BeginEx (int LayerIndex); +void GUI_MULTIBUF_End (void); +void GUI_MULTIBUF_EndEx (int LayerIndex); +void GUI_MULTIBUF_Config (int NumBuffers); +void GUI_MULTIBUF_ConfigEx (int LayerIndex, int NumBuffers); +void GUI_MULTIBUF_Confirm (int Index); +void GUI_MULTIBUF_ConfirmEx (int LayerIndex, int BufferIndex); +int GUI_MULTIBUF_GetNumBuffers (void); +int GUI_MULTIBUF_GetNumBuffersEx(int LayerIndex); +void GUI_MULTIBUF_UseSingleBuffer(void); + +/********************************************************************* +* +* Display orientation +*/ +/********************************************************************* +* +* GUI_ORIENTATION_API +*/ +typedef struct { + 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); + void (* pfDrawHLine )(GUI_DEVICE * pDevice, int x0, int y0, int x1); + void (* pfDrawVLine )(GUI_DEVICE * pDevice, int x , int y0, int y1); + void (* pfFillRect )(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1); + unsigned (* pfGetPixelIndex)(GUI_DEVICE * pDevice, int x, int y); + void (* pfSetPixelIndex)(GUI_DEVICE * pDevice, int x, int y, int ColorIndex); + void (* pfXorPixel )(GUI_DEVICE * pDevice, int x, int y); + int BytesPerPixel; +} GUI_ORIENTATION_API; + +extern const GUI_ORIENTATION_API GUI_OrientationAPI_C0; +extern const GUI_ORIENTATION_API GUI_OrientationAPI_C8; +extern const GUI_ORIENTATION_API GUI_OrientationAPI_C16; +extern const GUI_ORIENTATION_API GUI_OrientationAPI_C32; + +#define GUI_ORIENTATION_C0 &GUI_OrientationAPI_C0 +#define GUI_ORIENTATION_C8 &GUI_OrientationAPI_C8 +#define GUI_ORIENTATION_C16 &GUI_OrientationAPI_C16 +#define GUI_ORIENTATION_C32 &GUI_OrientationAPI_C32 + +int GUI_SetOrientation (int Orientation); +int GUI_SetOrientationEx (int Orientation, int LayerIndex); +int GUI_SetOrientationExCached(int Orientation, int LayerIndex, const GUI_ORIENTATION_API * pAPI); + +/********************************************************************* +* +* Measure device: GUI_MEASDEV +*/ +typedef GUI_HMEM GUI_MEASDEV_Handle; + +GUI_MEASDEV_Handle GUI_MEASDEV_Create (void); +void GUI_MEASDEV_Delete (GUI_MEASDEV_Handle hMemDev); +void GUI_MEASDEV_Select (GUI_MEASDEV_Handle hMem); +void GUI_MEASDEV_GetRect(GUI_MEASDEV_Handle hMem, GUI_RECT * pRect); +void GUI_MEASDEV_ClearRect(GUI_MEASDEV_Handle hMem); + +/********************************************************************* +* +* Polygon helpers +*/ +void GUI_RotatePolygon (GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, float Angle); +void GUI_MagnifyPolygon(GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, int Mag); +void GUI_EnlargePolygon(GUI_POINT * pDest, const GUI_POINT * pSrc, int NumPoints, int Len); + +/********************************************************************* +* +* Streamed bitmaps +*/ +#define GUI_BITMAPSTREAM_GET_BUFFER 1 +#define GUI_BITMAPSTREAM_RELEASE_BUFFER 2 +#define GUI_BITMAPSTREAM_MODIFY_PALETTE 3 + +#define DECLARE_CREATE_FROM_STREAM(ID) int GUI_CreateBitmapFromStream##ID(GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const void * p); + +DECLARE_CREATE_FROM_STREAM(IDX) +DECLARE_CREATE_FROM_STREAM(RLE4) +DECLARE_CREATE_FROM_STREAM(RLE8) +DECLARE_CREATE_FROM_STREAM(565) +DECLARE_CREATE_FROM_STREAM(M565) +DECLARE_CREATE_FROM_STREAM(555) +DECLARE_CREATE_FROM_STREAM(M555) +DECLARE_CREATE_FROM_STREAM(A565) +DECLARE_CREATE_FROM_STREAM(AM565) +DECLARE_CREATE_FROM_STREAM(A555) +DECLARE_CREATE_FROM_STREAM(AM555) +DECLARE_CREATE_FROM_STREAM(RLE16) +DECLARE_CREATE_FROM_STREAM(RLEM16) +DECLARE_CREATE_FROM_STREAM(24) +DECLARE_CREATE_FROM_STREAM(Alpha) +DECLARE_CREATE_FROM_STREAM(RLEAlpha) +DECLARE_CREATE_FROM_STREAM(RLE32) +DECLARE_CREATE_FROM_STREAM(444_12) +DECLARE_CREATE_FROM_STREAM(M444_12) +DECLARE_CREATE_FROM_STREAM(444_12_1) +DECLARE_CREATE_FROM_STREAM(M444_12_1) +DECLARE_CREATE_FROM_STREAM(444_16) +DECLARE_CREATE_FROM_STREAM(M444_16) + +int GUI_CreateBitmapFromStream (GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const void * p); +void GUI_DrawStreamedBitmap (const void * p, int x, int y); +void GUI_DrawStreamedBitmapAuto (const void * p, int x, int y); +int GUI_DrawStreamedBitmapEx (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapExAuto (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmap555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapM555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmap565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapM565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapA555Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapAM555Ex(GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapA565Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmapAM565Ex(GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +int GUI_DrawStreamedBitmap24Ex (GUI_GET_DATA_FUNC * pfGetData, const void * p, int x, int y); +void GUI_GetStreamedBitmapInfo (const void * p, GUI_BITMAPSTREAM_INFO * pInfo); +int GUI_GetStreamedBitmapInfoEx (GUI_GET_DATA_FUNC * pfGetData, const void * p, GUI_BITMAPSTREAM_INFO * pInfo); +void GUI_SetStreamedBitmapHook (GUI_BITMAPSTREAM_CALLBACK pfStreamedBitmapHook); + +void LCD__RLE4_SetFunc (GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off, const LCD_LOGPALETTE * pLogPal); +void LCD__RLE8_SetFunc (GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off, const LCD_LOGPALETTE * pLogPal); +void LCD__RLE16_SetFunc(GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off); +void LCD__RLE32_SetFunc(GUI_GET_DATA_FUNC * pfGetData, void * pVoid, U32 Off); + +/********************************************************************* +* +* BMP-export +*/ +void GUI_BMP_Serialize (GUI_CALLBACK_VOID_U8_P * pfSerialize, void * p); +void GUI_BMP_SerializeEx (GUI_CALLBACK_VOID_U8_P * pfSerialize, int x0, int y0, int xSize, int ySize, void * p); +void GUI_BMP_SerializeExBpp(GUI_CALLBACK_VOID_U8_P * pfSerialize, int x0, int y0, int xSize, int ySize, void * p, int BitsPerPixel); + +/********************************************************************* +* +* Time / execution related routines +*/ +void GUI_Delay (int Period); +GUI_TIMER_TIME GUI_GetTime(void); +int GUI_Exec(void); /* Execute all jobs ... Return 0 if nothing was done. */ +int GUI_Exec1(void); /* Execute one job ... Return 0 if nothing was done. */ + +/********************************************************************* +* +* MessageBox +*/ +int GUI_MessageBox (const char * sMessage, const char * sCaption, int Flags); +#define GUI_MESSAGEBOX_CF_MOVEABLE (1 << 0) +#define GUI_MESSAGEBOX_CF_MODAL (1 << 1) + +#define GUI_MB_OK 20 +#define GUI_MB_WARNING 21 + +/********************************************************************* +* +* GUI_TIMER module +*/ +#define GUI_TIMER_CF_WINDOW (1 << 0) +#define GUI_TIMER_CF_CURSOR (1 << 1) + +typedef GUI_HMEM GUI_TIMER_HANDLE; + +typedef struct { + GUI_TIMER_TIME Time; + U32 Context; + GUI_TIMER_HANDLE hTimer; +} GUI_TIMER_MESSAGE; + +typedef void GUI_TIMER_CALLBACK(/*const*/ GUI_TIMER_MESSAGE* pTM); + +GUI_TIMER_HANDLE GUI_TIMER_Create (GUI_TIMER_CALLBACK * cb, GUI_TIMER_TIME Time, U32 Context, U16 Flags); +void GUI_TIMER_Delete (GUI_TIMER_HANDLE hObj); + +/* Methods changing properties */ +GUI_TIMER_TIME GUI_TIMER_GetPeriod(GUI_TIMER_HANDLE hObj); +void GUI_TIMER_SetPeriod(GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period); +void GUI_TIMER_SetTime (GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Period); +void GUI_TIMER_SetDelay (GUI_TIMER_HANDLE hObj, GUI_TIMER_TIME Delay); +void GUI_TIMER_Restart (GUI_TIMER_HANDLE hObj); +int GUI_TIMER_GetFlag (GUI_TIMER_HANDLE hObj, int Flag); /* Not to be documented */ +int GUI_TIMER_Exec (void); + +/********************************************************************* +* +* Anti Aliasing +*/ +#define GUI_AA_TRANS 0 // Foreground color mixed up with current content of framebuffer +#define GUI_AA_NOTRANS 1 // Foreground color mixed up with current background color + +void GUI_AA_DisableHiRes (void); +void GUI_AA_EnableHiRes (void); +int GUI_AA_GetFactor (void); +void GUI_AA_SetFactor (int Factor); +void GUI_AA_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1); +void GUI_AA_DrawLine (int x0, int y0, int x1, int y1); +void GUI_AA_DrawPolyOutline (const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y); +void GUI_AA_DrawPolyOutlineEx(const GUI_POINT * pSrc, int NumPoints, int Thickness, int x, int y, GUI_POINT * pBuffer); +void GUI_AA_DrawRoundedRect (int x0, int y0, int x1, int y1, int r); +void GUI_AA_DrawRoundedRectEx(GUI_RECT * pRect, int r); +void GUI_AA_FillCircle (int x0, int y0, int r); +void GUI_AA_FillPolygon (GUI_POINT * pPoints, int NumPoints, int x0, int y0); +void GUI_AA_FillRoundedRect (int x0, int y0, int x1, int y1, int r); +void GUI_AA_FillRoundedRectEx(GUI_RECT * pRect, int r); +int GUI_AA_PreserveTrans (int OnOff); +int GUI_AA_SetDrawMode (int Mode); + +/********************************************************************* +* +* Keyboard +*/ +/* Message layer */ +void GUI_StoreKeyMsg(int Key, int Pressed); +void GUI_SendKeyMsg (int Key, int Pressed); +int GUI_PollKeyMsg (void); +void GUI_GetKeyState(GUI_KEY_STATE * pState); + +/* Application layer */ +int GUI_GetKey(void); +int GUI_WaitKey(void); +void GUI_StoreKey(int c); +void GUI_ClearKeyBuffer(void); + +/********************************************************************* +* +* Task synchronization +*/ +void GUI_WaitEvent (void); +void GUI_SignalEvent (void); +void GUI_SetSignalEventFunc (GUI_SIGNAL_EVENT_FUNC pfSignalEvent); +void GUI_SetWaitEventFunc (GUI_WAIT_EVENT_FUNC pfWaitEvent); +void GUI_SetWaitEventTimedFunc(GUI_WAIT_EVENT_TIMED_FUNC pfWaitEventTimed); + +/********************************************************************* +* +* Joystick, generic +*/ +void GUI_JOYSTICK_StoreState(const GUI_PID_STATE * pState); + +/********************************************************************* +* +* PID (Pointer input device ... mouse/touch) +*/ +void GUI_PID_StoreState (const GUI_PID_STATE * pState); +int GUI_PID_GetState ( GUI_PID_STATE * pState); +void GUI_PID_GetCurrentState( GUI_PID_STATE * pState); +int GUI_PID_IsEmpty (void); +int GUI_PID_IsPressed (void); + +/********************************************************************* +* +* Mouse, generic +*/ +int GUI_MOUSE_GetState ( GUI_PID_STATE * pState); +void GUI_MOUSE_StoreState(const GUI_PID_STATE * pState); + +/********************************************************************* +* +* TOUCH screen, generic +*/ +int GUI_TOUCH_GetState (GUI_PID_STATE * pState); +void GUI_TOUCH_GetUnstable (int * px, int * py); /* for diagnostics only */ +void GUI_TOUCH_SetLayer (int Layer); +void GUI_TOUCH_StoreState (int x, int y); +void GUI_TOUCH_StoreStateEx (const GUI_PID_STATE * pState); +void GUI_TOUCH_StoreUnstable(int x, int y); + +/********************************************************************* +* +* Mouse, PS2 driver +*/ +void GUI_MOUSE_DRIVER_PS2_Init(void); /* optional */ +void GUI_MOUSE_DRIVER_PS2_OnRx(unsigned char Data); + +/********************************************************************* +* +* TOUCH screen, analog driver +*/ +void GUI_TOUCH_Exec (void); +int GUI_TOUCH_Calibrate (int Coord, int Log0, int Log1, int Phys0, int Phys1); +void GUI_TOUCH_SetDefaultCalibration(void); +int GUI_TOUCH_GetxPhys (void); /* for diagnostics only */ +int GUI_TOUCH_GetyPhys (void); /* for diagnostics only */ +void GUI_TOUCH_GetCalData (int Coord, int * pMin, int * pMax); +void GUI_TOUCH_SetOrientation (unsigned Orientation); +void GUI_TOUCH_SetOrientationPhys (unsigned Orientation); + +/********************************************************************* +* +* TOUCH: imports +* +* Please note: The following functions are required by the module. +* They need to be part of your application software (or rather, part +* of the hardware-layer of your software). +*/ +void GUI_TOUCH_X_ActivateX(void); +void GUI_TOUCH_X_ActivateY(void); +void GUI_TOUCH_X_Disable (void); +int GUI_TOUCH_X_MeasureX (void); +int GUI_TOUCH_X_MeasureY (void); + +/********************************************************************* +* +* GUI_X_ +* +* Externals, to be defined by application +* +* The externals defined below should be defined by the +* application. They are per default contained in the module +* GUI_X.c. +* Note that a lot if not all of these are not required in most target +* systems. +* For this module, samples are available for configurations +* with or without operating system. +*/ + +// +// Configuration +// +void GUI_X_Config(void); +void GUI_X_Init (void); + +// +// Timing routines +// +GUI_TIMER_TIME GUI_X_GetTime(void); +void GUI_X_Delay (int Period); + +// +// Multitask routines - required only if multitasking is used (#define GUI_OS 1) +// +void GUI_X_Unlock (void); +void GUI_X_Lock (void); +U32 GUI_X_GetTaskId(void); +void GUI_X_InitOS (void); + +// +// Event driving (optional with multitasking) +// +void GUI_X_ExecIdle (void); +void GUI_X_WaitEvent (void); +void GUI_X_WaitEventTimed(int Period); +void GUI_X_SignalEvent (void); + +// +// Recording (logs/warnings and errors) - required only for higher levels +// +void GUI_X_Log (const char * s); +void GUI_X_Warn (const char * s); +void GUI_X_ErrorOut(const char * s); + +/********************************************************************* +* +* Constants for fonts and bitmaps +*/ +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE4; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE4Ex; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE8; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE8Ex; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE16; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE16Ex; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEM16; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEM16Ex; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE32; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLE32Ex; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsRLEAlpha; + +extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_12; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_12; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_12_1; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_12_1; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods444_16; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM444_16; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods555; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM555; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods565; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM565; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods24; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods888; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsM888; +extern const GUI_BITMAP_METHODS GUI_BitmapMethods8888; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsA565; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsAM565; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsA555; +extern const GUI_BITMAP_METHODS GUI_BitmapMethodsAM555; + +#define GUI_COMPRESS_RLE4 0 +#define GUI_COMPRESS_RLE8 0 + +#define GUI_DRAW_RLE4 &GUI_BitmapMethodsRLE4 /* Method table ! */ +#define GUI_DRAW_RLE8 &GUI_BitmapMethodsRLE8 /* Method table ! */ +#define GUI_DRAW_RLE16 &GUI_BitmapMethodsRLE16 /* Method table ! */ +#define GUI_DRAW_RLEM16 &GUI_BitmapMethodsRLEM16 /* Method table ! */ +#define GUI_DRAW_RLE32 &GUI_BitmapMethodsRLE32 /* Method table ! */ +#define GUI_DRAW_RLEALPHA &GUI_BitmapMethodsRLEAlpha /* Method table ! */ + +#define GUI_DRAW_BMP444_12 &GUI_BitmapMethods444_12 /* Method table ! */ +#define GUI_DRAW_BMPM444_12 &GUI_BitmapMethodsM444_12 /* Method table ! */ +#define GUI_DRAW_BMP444_12_1 &GUI_BitmapMethods444_12_1 /* Method table ! */ +#define GUI_DRAW_BMPM444_12_1 &GUI_BitmapMethodsM444_12_1 /* Method table ! */ +#define GUI_DRAW_BMP444_16 &GUI_BitmapMethods444_16 /* Method table ! */ +#define GUI_DRAW_BMPM444_16 &GUI_BitmapMethodsM444_16 /* Method table ! */ +#define GUI_DRAW_BMP555 &GUI_BitmapMethods555 /* Method table ! */ +#define GUI_DRAW_BMPM555 &GUI_BitmapMethodsM555 /* Method table ! */ +#define GUI_DRAW_BMP565 &GUI_BitmapMethods565 /* Method table ! */ +#define GUI_DRAW_BMPM565 &GUI_BitmapMethodsM565 /* Method table ! */ +#define GUI_DRAW_BMP24 &GUI_BitmapMethods24 /* Method table ! */ +#define GUI_DRAW_BMP888 &GUI_BitmapMethods888 /* Method table ! */ +#define GUI_DRAW_BMPM888 &GUI_BitmapMethodsM888 /* Method table ! */ +#define GUI_DRAW_BMP8888 &GUI_BitmapMethods8888 /* Method table ! */ +#define GUI_DRAW_BMPA555 &GUI_BitmapMethodsA555 /* Method table ! */ +#define GUI_DRAW_BMPAM555 &GUI_BitmapMethodsAM555 /* Method table ! */ +#define GUI_DRAW_BMPA565 &GUI_BitmapMethodsA565 /* Method table ! */ +#define GUI_DRAW_BMPAM565 &GUI_BitmapMethodsAM565 /* Method table ! */ + +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop; +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_Ext; +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_Frm; +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA2; +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA4; +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA2_EXT; +extern const tGUI_SIF_APIList GUI_SIF_APIList_Prop_AA4_EXT; + +extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop; +extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_Ext; +extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_Frm; +extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_AA2_Ext; +extern const tGUI_XBF_APIList GUI_XBF_APIList_Prop_AA4_Ext; + +/********************************************************************* +* +* GUI_KEY_... +* +* These ID values are basically meant to be used with widgets +* Note that we have chosen the values to be close to existing +* "standards", so do not change them unless forced to. +* +*/ +#define GUI_KEY_BACKSPACE 8 /* ASCII: BACKSPACE Crtl-H */ +#define GUI_KEY_TAB 9 /* ASCII: TAB Crtl-I */ +#define GUI_KEY_BACKTAB 10 +#define GUI_KEY_ENTER 13 /* ASCII: ENTER Crtl-M */ +#define GUI_KEY_LEFT 16 +#define GUI_KEY_UP 17 +#define GUI_KEY_RIGHT 18 +#define GUI_KEY_DOWN 19 +#define GUI_KEY_HOME 23 +#define GUI_KEY_END 24 +#define GUI_KEY_SHIFT 25 +#define GUI_KEY_CONTROL 26 +#define GUI_KEY_ESCAPE 27 /* ASCII: ESCAPE 0x1b */ +#define GUI_KEY_INSERT 29 +#define GUI_KEY_DELETE 30 +#define GUI_KEY_SPACE 32 +#define GUI_KEY_PGUP 33 +#define GUI_KEY_PGDOWN 34 + +#define GUI_KEY_F1 40 +#define GUI_KEY_F2 41 + +/********************************************************************* +* +* Dialog item IDs +* +* The IDs below are arbitrary values. They just have to be unique +* within the dialog. +* +* If you use your own Ids, we recommend to use values above GUI_ID_USER. +*/ +#define GUI_ID_OK 1 +#define GUI_ID_CANCEL 2 +#define GUI_ID_YES 3 +#define GUI_ID_NO 4 +#define GUI_ID_CLOSE 5 +#define GUI_ID_HELP 6 +#define GUI_ID_MAXIMIZE 7 +#define GUI_ID_MINIMIZE 8 + +#define GUI_ID_VSCROLL 0xFE +#define GUI_ID_HSCROLL 0xFF + +#define GUI_ID_EDIT0 0x100 +#define GUI_ID_EDIT1 0x101 +#define GUI_ID_EDIT2 0x102 +#define GUI_ID_EDIT3 0x103 +#define GUI_ID_EDIT4 0x104 +#define GUI_ID_EDIT5 0x105 +#define GUI_ID_EDIT6 0x106 +#define GUI_ID_EDIT7 0x107 +#define GUI_ID_EDIT8 0x108 +#define GUI_ID_EDIT9 0x109 + +#define GUI_ID_LISTBOX0 0x110 +#define GUI_ID_LISTBOX1 0x111 +#define GUI_ID_LISTBOX2 0x112 +#define GUI_ID_LISTBOX3 0x113 +#define GUI_ID_LISTBOX4 0x114 +#define GUI_ID_LISTBOX5 0x115 +#define GUI_ID_LISTBOX6 0x116 +#define GUI_ID_LISTBOX7 0x117 +#define GUI_ID_LISTBOX8 0x118 +#define GUI_ID_LISTBOX9 0x119 + +#define GUI_ID_CHECK0 0x120 +#define GUI_ID_CHECK1 0x121 +#define GUI_ID_CHECK2 0x122 +#define GUI_ID_CHECK3 0x123 +#define GUI_ID_CHECK4 0x124 +#define GUI_ID_CHECK5 0x125 +#define GUI_ID_CHECK6 0x126 +#define GUI_ID_CHECK7 0x127 +#define GUI_ID_CHECK8 0x128 +#define GUI_ID_CHECK9 0x129 + +#define GUI_ID_SLIDER0 0x130 +#define GUI_ID_SLIDER1 0x131 +#define GUI_ID_SLIDER2 0x132 +#define GUI_ID_SLIDER3 0x133 +#define GUI_ID_SLIDER4 0x134 +#define GUI_ID_SLIDER5 0x135 +#define GUI_ID_SLIDER6 0x136 +#define GUI_ID_SLIDER7 0x137 +#define GUI_ID_SLIDER8 0x138 +#define GUI_ID_SLIDER9 0x139 + +#define GUI_ID_SCROLLBAR0 0x140 +#define GUI_ID_SCROLLBAR1 0x141 +#define GUI_ID_SCROLLBAR2 0x142 +#define GUI_ID_SCROLLBAR3 0x143 + +#define GUI_ID_RADIO0 0x150 +#define GUI_ID_RADIO1 0x151 +#define GUI_ID_RADIO2 0x152 +#define GUI_ID_RADIO3 0x153 +#define GUI_ID_RADIO4 0x154 +#define GUI_ID_RADIO5 0x155 +#define GUI_ID_RADIO6 0x156 +#define GUI_ID_RADIO7 0x157 + +#define GUI_ID_TEXT0 0x160 +#define GUI_ID_TEXT1 0x161 +#define GUI_ID_TEXT2 0x162 +#define GUI_ID_TEXT3 0x163 +#define GUI_ID_TEXT4 0x164 +#define GUI_ID_TEXT5 0x165 +#define GUI_ID_TEXT6 0x166 +#define GUI_ID_TEXT7 0x167 +#define GUI_ID_TEXT8 0x168 +#define GUI_ID_TEXT9 0x169 + +#define GUI_ID_BUTTON0 0x170 +#define GUI_ID_BUTTON1 0x171 +#define GUI_ID_BUTTON2 0x172 +#define GUI_ID_BUTTON3 0x173 +#define GUI_ID_BUTTON4 0x174 +#define GUI_ID_BUTTON5 0x175 +#define GUI_ID_BUTTON6 0x176 +#define GUI_ID_BUTTON7 0x177 +#define GUI_ID_BUTTON8 0x178 +#define GUI_ID_BUTTON9 0x179 + +#define GUI_ID_DROPDOWN0 0x180 +#define GUI_ID_DROPDOWN1 0x181 +#define GUI_ID_DROPDOWN2 0x182 +#define GUI_ID_DROPDOWN3 0x183 + +#define GUI_ID_MULTIEDIT0 0x190 +#define GUI_ID_MULTIEDIT1 0x191 +#define GUI_ID_MULTIEDIT2 0x192 +#define GUI_ID_MULTIEDIT3 0x193 + +#define GUI_ID_LISTVIEW0 0x200 +#define GUI_ID_LISTVIEW1 0x201 +#define GUI_ID_LISTVIEW2 0x202 +#define GUI_ID_LISTVIEW3 0x203 + +#define GUI_ID_PROGBAR0 0x210 +#define GUI_ID_PROGBAR1 0x211 +#define GUI_ID_PROGBAR2 0x212 +#define GUI_ID_PROGBAR3 0x213 + +#define GUI_ID_GRAPH0 0x220 +#define GUI_ID_GRAPH1 0x221 +#define GUI_ID_GRAPH2 0x222 +#define GUI_ID_GRAPH3 0x223 + +#define GUI_ID_MULTIPAGE0 0x230 +#define GUI_ID_MULTIPAGE1 0x231 +#define GUI_ID_MULTIPAGE2 0x232 +#define GUI_ID_MULTIPAGE3 0x233 + +#define GUI_ID_TREEVIEW0 0x240 +#define GUI_ID_TREEVIEW1 0x241 +#define GUI_ID_TREEVIEW2 0x242 +#define GUI_ID_TREEVIEW3 0x243 + +#define GUI_ID_ICONVIEW0 0x250 +#define GUI_ID_ICONVIEW1 0x251 +#define GUI_ID_ICONVIEW2 0x252 +#define GUI_ID_ICONVIEW3 0x253 + +#define GUI_ID_LISTWHEEL0 0x260 +#define GUI_ID_LISTWHEEL1 0x261 +#define GUI_ID_LISTWHEEL2 0x262 +#define GUI_ID_LISTWHEEL3 0x263 + +#define GUI_ID_IMAGE0 0x270 +#define GUI_ID_IMAGE1 0x271 +#define GUI_ID_IMAGE2 0x272 +#define GUI_ID_IMAGE3 0x273 +#define GUI_ID_IMAGE4 0x274 +#define GUI_ID_IMAGE5 0x275 +#define GUI_ID_IMAGE6 0x276 +#define GUI_ID_IMAGE7 0x277 +#define GUI_ID_IMAGE8 0x278 +#define GUI_ID_IMAGE9 0x279 + +#define GUI_ID_SPINBOX0 0x280 +#define GUI_ID_SPINBOX1 0x281 +#define GUI_ID_SPINBOX2 0x282 +#define GUI_ID_SPINBOX3 0x283 +#define GUI_ID_SPINBOX4 0x284 +#define GUI_ID_SPINBOX5 0x285 +#define GUI_ID_SPINBOX6 0x286 +#define GUI_ID_SPINBOX7 0x287 +#define GUI_ID_SPINBOX8 0x288 +#define GUI_ID_SPINBOX9 0x289 + +#define GUI_ID_CALENDAR0 0x290 + +#define GUI_ID_KNOB0 0x300 +#define GUI_ID_KNOB1 0x301 +#define GUI_ID_KNOB2 0x302 +#define GUI_ID_KNOB3 0x303 +#define GUI_ID_KNOB4 0x304 +#define GUI_ID_KNOB5 0x305 +#define GUI_ID_KNOB6 0x306 +#define GUI_ID_KNOB7 0x307 +#define GUI_ID_KNOB8 0x308 +#define GUI_ID_KNOB9 0x309 + +#define GUI_ID_USER 0x800 + +/********************************************************************* +* +* Mouse buttons +*/ +#define GUI_LBUTTON (1 << 0) /* Left button */ +#define GUI_RBUTTON (1 << 1) /* Right button */ +#define GUI_MBUTTON (1 << 2) /* Middle button */ +#define GUI_DBUTTON (1 << 7) /* Double-click button */ + +/********************************************************************* +* +* Text styles +*/ +#define GUI_TS_NORMAL (0) +#define GUI_TS_UNDERLINE (1 << 0) +#define GUI_TS_STRIKETHRU (1 << 1) +#define GUI_TS_OVERLINE (1 << 2) + +/********************************************************************* +* +* Line styles +*/ +#define GUI_LS_SOLID (0) +#define GUI_LS_DASH (1) +#define GUI_LS_DOT (2) +#define GUI_LS_DASHDOT (3) +#define GUI_LS_DASHDOTDOT (4) + +/********************************************************************* +* +* Pen shapes +*/ +#define GUI_PS_ROUND (0) +#define GUI_PS_FLAT (1) +#define GUI_PS_SQUARE (2) + +/********************************************************************* +* +* Standard colors +*/ +#define GUI_BLUE 0x00FF0000 +#define GUI_GREEN 0x0000FF00 +#define GUI_RED 0x000000FF +#define GUI_CYAN 0x00FFFF00 +#define GUI_MAGENTA 0x00FF00FF +#define GUI_YELLOW 0x0000FFFF +#define GUI_LIGHTBLUE 0x00FF8080 +#define GUI_LIGHTGREEN 0x0080FF80 +#define GUI_LIGHTRED 0x008080FF +#define GUI_LIGHTCYAN 0x00FFFF80 +#define GUI_LIGHTMAGENTA 0x00FF80FF +#define GUI_LIGHTYELLOW 0x0080FFFF +#define GUI_DARKBLUE 0x00800000 +#define GUI_DARKGREEN 0x00008000 +#define GUI_DARKRED 0x00000080 +#define GUI_DARKCYAN 0x00808000 +#define GUI_DARKMAGENTA 0x00800080 +#define GUI_DARKYELLOW 0x00008080 +#define GUI_WHITE 0x00FFFFFF +#define GUI_LIGHTGRAY 0x00D3D3D3 +#define GUI_GRAY 0x00808080 +#define GUI_DARKGRAY 0x00404040 +#define GUI_BLACK 0x00000000 +#define GUI_BROWN 0x002A2AA5 +#define GUI_ORANGE 0x0000A5FF +#define GUI_TRANSPARENT 0xFF000000 + +#define GUI_INVALID_COLOR 0xFFFFFFF /* Invalid color - more than 24 bits */ + +/********************************************************************* +* +* MultiTouch-Support +*/ +// +// Defines +// +#define GUI_MTOUCH_FLAG_DOWN (1 << 0) +#define GUI_MTOUCH_FLAG_MOVE (1 << 1) +#define GUI_MTOUCH_FLAG_UP (1 << 2) + +// +// Variables +// +extern T_GUI_MTOUCH_STOREEVENT GUI_MTOUCH__pStoreEvent; + +// +// Interface +// +void GUI_MTOUCH_Enable (int OnOff); +int GUI_MTOUCH_GetEvent (GUI_MTOUCH_EVENT * pEvent); +int GUI_MTOUCH_GetTouchInput (GUI_MTOUCH_EVENT * pEvent, GUI_MTOUCH_INPUT * pBuffer, unsigned Index); +int GUI_MTOUCH_IsEmpty (void); +void GUI_MTOUCH_SetOrientation (int Orientation); +void GUI_MTOUCH_SetOrientationEx(int Orientation, int LayerIndex); +void GUI_MTOUCH_StoreEvent (GUI_MTOUCH_EVENT * pEvent, GUI_MTOUCH_INPUT * pInput); + +/********************************************************************* +* +* Coordinates used in touch driver +*/ +#define GUI_COORD_X 0 +#define GUI_COORD_Y 1 + +/********************************************************************* +* +* Addresses of standard fonts +*/ +// +// Proportional fonts +// +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8_ASCII, GUI_Font8_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font10S_ASCII, GUI_Font10S_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font10_ASCII, GUI_Font10_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font13_ASCII, GUI_Font13_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font13B_ASCII, GUI_Font13B_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font13H_ASCII, GUI_Font13H_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font13HB_ASCII, GUI_Font13HB_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font16_ASCII, GUI_Font16_1, GUI_Font16_HK, GUI_Font16_1HK; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font16B_ASCII, GUI_Font16B_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font20_ASCII, GUI_Font20_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font20B_ASCII, GUI_Font20B_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font24_ASCII, GUI_Font24_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font24B_ASCII, GUI_Font24B_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font32_ASCII, GUI_Font32_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font32B_ASCII, GUI_Font32B_1; + +// +// Proportional fonts, framed +// +extern GUI_CONST_STORAGE GUI_FONT GUI_Font20F_ASCII; + +// +// Monospaced +// +extern GUI_CONST_STORAGE GUI_FONT GUI_Font4x6; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font6x8, GUI_Font6x9; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font6x8_ASCII, GUI_Font6x8_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x8, GUI_Font8x9; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x8_ASCII, GUI_Font8x8_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x10_ASCII; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x12_ASCII; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x13_ASCII, GUI_Font8x13_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x15B_ASCII, GUI_Font8x15B_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16, GUI_Font8x17, GUI_Font8x18; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16x1x2, GUI_Font8x16x2x2, GUI_Font8x16x3x3; +extern GUI_CONST_STORAGE GUI_FONT GUI_Font8x16_ASCII, GUI_Font8x16_1; + +// +// Digits +// +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD24x32; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD32; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD36x48; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD48; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD48x64; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD64; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD60x80; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontD80; + +// +// Comic fonts +// +extern GUI_CONST_STORAGE GUI_FONT GUI_FontComic18B_ASCII, GUI_FontComic18B_1; +extern GUI_CONST_STORAGE GUI_FONT GUI_FontComic24B_ASCII, GUI_FontComic24B_1; + +/********************************************************************* +* +* Macros to be used +*/ +// +// Proportional fonts +// +#define GUI_FONT_8_ASCII &GUI_Font8_ASCII +#define GUI_FONT_8_1 &GUI_Font8_1 +#define GUI_FONT_10S_ASCII &GUI_Font10S_ASCII +#define GUI_FONT_10S_1 &GUI_Font10S_1 +#define GUI_FONT_10_ASCII &GUI_Font10_ASCII +#define GUI_FONT_10_1 &GUI_Font10_1 +#define GUI_FONT_13_ASCII &GUI_Font13_ASCII +#define GUI_FONT_13_1 &GUI_Font13_1 +#define GUI_FONT_13B_ASCII &GUI_Font13B_ASCII +#define GUI_FONT_13B_1 &GUI_Font13B_1 +#define GUI_FONT_13H_ASCII &GUI_Font13H_ASCII +#define GUI_FONT_13H_1 &GUI_Font13H_1 +#define GUI_FONT_13HB_ASCII &GUI_Font13HB_ASCII +#define GUI_FONT_13HB_1 &GUI_Font13HB_1 +#define GUI_FONT_16_ASCII &GUI_Font16_ASCII +#define GUI_FONT_16_1 &GUI_Font16_1 +#define GUI_FONT_16_HK &GUI_Font16_HK +#define GUI_FONT_16_1HK &GUI_Font16_1HK +#define GUI_FONT_16B_ASCII &GUI_Font16B_ASCII +#define GUI_FONT_16B_1 &GUI_Font16B_1 +#define GUI_FONT_20_ASCII &GUI_Font20_ASCII +#define GUI_FONT_20_1 &GUI_Font20_1 +#define GUI_FONT_20B_ASCII &GUI_Font20B_ASCII +#define GUI_FONT_20B_1 &GUI_Font20B_1 +#define GUI_FONT_24_ASCII &GUI_Font24_ASCII +#define GUI_FONT_24_1 &GUI_Font24_1 +#define GUI_FONT_24B_ASCII &GUI_Font24B_ASCII +#define GUI_FONT_24B_1 &GUI_Font24B_1 +#define GUI_FONT_32_ASCII &GUI_Font32_ASCII +#define GUI_FONT_32_1 &GUI_Font32_1 +#define GUI_FONT_32B_ASCII &GUI_Font32B_ASCII +#define GUI_FONT_32B_1 &GUI_Font32B_1 + +// +// Proportional fonts, framed +// +#define GUI_FONT_20F_ASCII &GUI_Font20F_ASCII + +// +// Monospaced +// +#define GUI_FONT_4X6 &GUI_Font4x6 +#define GUI_FONT_6X8 &GUI_Font6x8 +#define GUI_FONT_6X8_ASCII &GUI_Font6x8_ASCII +#define GUI_FONT_6X8_1 &GUI_Font6x8_1 +#define GUI_FONT_6X9 &GUI_Font6x9 +#define GUI_FONT_8X8 &GUI_Font8x8 +#define GUI_FONT_8X8_ASCII &GUI_Font8x8_ASCII +#define GUI_FONT_8X8_1 &GUI_Font8x8_1 +#define GUI_FONT_8X9 &GUI_Font8x9 +#define GUI_FONT_8X10_ASCII &GUI_Font8x10_ASCII +#define GUI_FONT_8X12_ASCII &GUI_Font8x12_ASCII +#define GUI_FONT_8X13_ASCII &GUI_Font8x13_ASCII +#define GUI_FONT_8X13_1 &GUI_Font8x13_1 +#define GUI_FONT_8X15B_ASCII &GUI_Font8x15B_ASCII +#define GUI_FONT_8X15B_1 &GUI_Font8x15B_1 +#define GUI_FONT_8X16 &GUI_Font8x16 +#define GUI_FONT_8X17 &GUI_Font8x17 +#define GUI_FONT_8X18 &GUI_Font8x18 +#define GUI_FONT_8X16X1X2 &GUI_Font8x16x1x2 +#define GUI_FONT_8X16X2X2 &GUI_Font8x16x2x2 +#define GUI_FONT_8X16X3X3 &GUI_Font8x16x3x3 +#define GUI_FONT_8X16_ASCII &GUI_Font8x16_ASCII +#define GUI_FONT_8X16_1 &GUI_Font8x16_1 + +// +// Digits +// +#define GUI_FONT_D24X32 &GUI_FontD24x32 +#define GUI_FONT_D32 &GUI_FontD32 +#define GUI_FONT_D36X48 &GUI_FontD36x48 +#define GUI_FONT_D48 &GUI_FontD48 +#define GUI_FONT_D48X64 &GUI_FontD48x64 +#define GUI_FONT_D64 &GUI_FontD64 +#define GUI_FONT_D60X80 &GUI_FontD60x80 +#define GUI_FONT_D80 &GUI_FontD80 + +// +// Comic fonts +// +#define GUI_FONT_COMIC18B_ASCII &GUI_FontComic18B_ASCII +#define GUI_FONT_COMIC18B_1 &GUI_FontComic18B_1 +#define GUI_FONT_COMIC24B_ASCII &GUI_FontComic24B_ASCII +#define GUI_FONT_COMIC24B_1 &GUI_FontComic24B_1 + +/********************************************************************* +* +* Text and drawing modes +* +* These defines come in two flavors: the long version (.._DRAWMODE_..) +* and the short ones (.._DM_..). They are identical, feel free to use +* which ever one you like best. +*/ +#define GUI_DRAWMODE_NORMAL LCD_DRAWMODE_NORMAL +#define GUI_DRAWMODE_XOR LCD_DRAWMODE_XOR +#define GUI_DRAWMODE_TRANS LCD_DRAWMODE_TRANS +#define GUI_DRAWMODE_REV LCD_DRAWMODE_REV +#define GUI_DM_NORMAL LCD_DRAWMODE_NORMAL +#define GUI_DM_XOR LCD_DRAWMODE_XOR +#define GUI_DM_TRANS LCD_DRAWMODE_TRANS +#define GUI_DM_REV LCD_DRAWMODE_REV + +#define GUI_TEXTMODE_NORMAL LCD_DRAWMODE_NORMAL +#define GUI_TEXTMODE_XOR LCD_DRAWMODE_XOR +#define GUI_TEXTMODE_TRANS LCD_DRAWMODE_TRANS +#define GUI_TEXTMODE_REV LCD_DRAWMODE_REV +#define GUI_TM_NORMAL LCD_DRAWMODE_NORMAL +#define GUI_TM_XOR LCD_DRAWMODE_XOR +#define GUI_TM_TRANS LCD_DRAWMODE_TRANS +#define GUI_TM_REV LCD_DRAWMODE_REV + +/* Text alignment flags, horizontal */ +#define GUI_TA_HORIZONTAL (3<<0) +#define GUI_TA_LEFT (0<<0) +#define GUI_TA_RIGHT (1<<0) +#define GUI_TA_CENTER (2<<0) +#define GUI_TA_HCENTER GUI_TA_CENTER /* easier to remember :-) */ + +/* Text alignment flags, vertical */ +#define GUI_TA_VERTICAL (3<<2) +#define GUI_TA_TOP (0<<2) +#define GUI_TA_BOTTOM (1<<2) +#define GUI_TA_BASELINE (2<<2) +#define GUI_TA_VCENTER (3<<2) + +/* General orientation flags */ +#define GUI_MIRROR_X (1 << 0) +#define GUI_MIRROR_Y (1 << 1) +#define GUI_SWAP_XY (1 << 2) + +/********************************************************************* +* +* Min/Max coordinates +* +* Define minimum and maximum coordinates in x and y +*/ +#if 1 + #define GUI_XMIN -16383 + #define GUI_XMAX 16383 + #define GUI_YMIN -16383 + #define GUI_YMAX 16383 +#else + #define GUI_XMIN -4095 + #define GUI_XMAX 4095 + #define GUI_YMIN -4095 + #define GUI_YMAX 4095 +#endif + +/********************************************************************* +* +* Defines for constants +*/ +#define ________ 0x0 +#define _______X 0x1 +#define ______X_ 0x2 +#define ______XX 0x3 +#define _____X__ 0x4 +#define _____X_X 0x5 +#define _____XX_ 0x6 +#define _____XXX 0x7 +#define ____X___ 0x8 +#define ____X__X 0x9 +#define ____X_X_ 0xa +#define ____X_XX 0xb +#define ____XX__ 0xc +#define ____XX_X 0xd +#define ____XXX_ 0xe +#define ____XXXX 0xf +#define ___X____ 0x10 +#define ___X___X 0x11 +#define ___X__X_ 0x12 +#define ___X__XX 0x13 +#define ___X_X__ 0x14 +#define ___X_X_X 0x15 +#define ___X_XX_ 0x16 +#define ___X_XXX 0x17 +#define ___XX___ 0x18 +#define ___XX__X 0x19 +#define ___XX_X_ 0x1a +#define ___XX_XX 0x1b +#define ___XXX__ 0x1c +#define ___XXX_X 0x1d +#define ___XXXX_ 0x1e +#define ___XXXXX 0x1f +#define __X_____ 0x20 +#define __X____X 0x21 +#define __X___X_ 0x22 +#define __X___XX 0x23 +#define __X__X__ 0x24 +#define __X__X_X 0x25 +#define __X__XX_ 0x26 +#define __X__XXX 0x27 +#define __X_X___ 0x28 +#define __X_X__X 0x29 +#define __X_X_X_ 0x2a +#define __X_X_XX 0x2b +#define __X_XX__ 0x2c +#define __X_XX_X 0x2d +#define __X_XXX_ 0x2e +#define __X_XXXX 0x2f +#define __XX____ 0x30 +#define __XX___X 0x31 +#define __XX__X_ 0x32 +#define __XX__XX 0x33 +#define __XX_X__ 0x34 +#define __XX_X_X 0x35 +#define __XX_XX_ 0x36 +#define __XX_XXX 0x37 +#define __XXX___ 0x38 +#define __XXX__X 0x39 +#define __XXX_X_ 0x3a +#define __XXX_XX 0x3b +#define __XXXX__ 0x3c +#define __XXXX_X 0x3d +#define __XXXXX_ 0x3e +#define __XXXXXX 0x3f +#define _X______ 0x40 +#define _X_____X 0x41 +#define _X____X_ 0x42 +#define _X____XX 0x43 +#define _X___X__ 0x44 +#define _X___X_X 0x45 +#define _X___XX_ 0x46 +#define _X___XXX 0x47 +#define _X__X___ 0x48 +#define _X__X__X 0x49 +#define _X__X_X_ 0x4a +#define _X__X_XX 0x4b +#define _X__XX__ 0x4c +#define _X__XX_X 0x4d +#define _X__XXX_ 0x4e +#define _X__XXXX 0x4f +#define _X_X____ 0x50 +#define _X_X___X 0x51 +#define _X_X__X_ 0x52 +#define _X_X__XX 0x53 +#define _X_X_X__ 0x54 +#define _X_X_X_X 0x55 +#define _X_X_XX_ 0x56 +#define _X_X_XXX 0x57 +#define _X_XX___ 0x58 +#define _X_XX__X 0x59 +#define _X_XX_X_ 0x5a +#define _X_XX_XX 0x5b +#define _X_XXX__ 0x5c +#define _X_XXX_X 0x5d +#define _X_XXXX_ 0x5e +#define _X_XXXXX 0x5f +#define _XX_____ 0x60 +#define _XX____X 0x61 +#define _XX___X_ 0x62 +#define _XX___XX 0x63 +#define _XX__X__ 0x64 +#define _XX__X_X 0x65 +#define _XX__XX_ 0x66 +#define _XX__XXX 0x67 +#define _XX_X___ 0x68 +#define _XX_X__X 0x69 +#define _XX_X_X_ 0x6a +#define _XX_X_XX 0x6b +#define _XX_XX__ 0x6c +#define _XX_XX_X 0x6d +#define _XX_XXX_ 0x6e +#define _XX_XXXX 0x6f +#define _XXX____ 0x70 +#define _XXX___X 0x71 +#define _XXX__X_ 0x72 +#define _XXX__XX 0x73 +#define _XXX_X__ 0x74 +#define _XXX_X_X 0x75 +#define _XXX_XX_ 0x76 +#define _XXX_XXX 0x77 +#define _XXXX___ 0x78 +#define _XXXX__X 0x79 +#define _XXXX_X_ 0x7a +#define _XXXX_XX 0x7b +#define _XXXXX__ 0x7c +#define _XXXXX_X 0x7d +#define _XXXXXX_ 0x7e +#define _XXXXXXX 0x7f +#define X_______ 0x80 +#define X______X 0x81 +#define X_____X_ 0x82 +#define X_____XX 0x83 +#define X____X__ 0x84 +#define X____X_X 0x85 +#define X____XX_ 0x86 +#define X____XXX 0x87 +#define X___X___ 0x88 +#define X___X__X 0x89 +#define X___X_X_ 0x8a +#define X___X_XX 0x8b +#define X___XX__ 0x8c +#define X___XX_X 0x8d +#define X___XXX_ 0x8e +#define X___XXXX 0x8f +#define X__X____ 0x90 +#define X__X___X 0x91 +#define X__X__X_ 0x92 +#define X__X__XX 0x93 +#define X__X_X__ 0x94 +#define X__X_X_X 0x95 +#define X__X_XX_ 0x96 +#define X__X_XXX 0x97 +#define X__XX___ 0x98 +#define X__XX__X 0x99 +#define X__XX_X_ 0x9a +#define X__XX_XX 0x9b +#define X__XXX__ 0x9c +#define X__XXX_X 0x9d +#define X__XXXX_ 0x9e +#define X__XXXXX 0x9f +#define X_X_____ 0xa0 +#define X_X____X 0xa1 +#define X_X___X_ 0xa2 +#define X_X___XX 0xa3 +#define X_X__X__ 0xa4 +#define X_X__X_X 0xa5 +#define X_X__XX_ 0xa6 +#define X_X__XXX 0xa7 +#define X_X_X___ 0xa8 +#define X_X_X__X 0xa9 +#define X_X_X_X_ 0xaa +#define X_X_X_XX 0xab +#define X_X_XX__ 0xac +#define X_X_XX_X 0xad +#define X_X_XXX_ 0xae +#define X_X_XXXX 0xaf +#define X_XX____ 0xb0 +#define X_XX___X 0xb1 +#define X_XX__X_ 0xb2 +#define X_XX__XX 0xb3 +#define X_XX_X__ 0xb4 +#define X_XX_X_X 0xb5 +#define X_XX_XX_ 0xb6 +#define X_XX_XXX 0xb7 +#define X_XXX___ 0xb8 +#define X_XXX__X 0xb9 +#define X_XXX_X_ 0xba +#define X_XXX_XX 0xbb +#define X_XXXX__ 0xbc +#define X_XXXX_X 0xbd +#define X_XXXXX_ 0xbe +#define X_XXXXXX 0xbf +#define XX______ 0xc0 +#define XX_____X 0xc1 +#define XX____X_ 0xc2 +#define XX____XX 0xc3 +#define XX___X__ 0xc4 +#define XX___X_X 0xc5 +#define XX___XX_ 0xc6 +#define XX___XXX 0xc7 +#define XX__X___ 0xc8 +#define XX__X__X 0xc9 +#define XX__X_X_ 0xca +#define XX__X_XX 0xcb +#define XX__XX__ 0xcc +#define XX__XX_X 0xcd +#define XX__XXX_ 0xce +#define XX__XXXX 0xcf +#define XX_X____ 0xd0 +#define XX_X___X 0xd1 +#define XX_X__X_ 0xd2 +#define XX_X__XX 0xd3 +#define XX_X_X__ 0xd4 +#define XX_X_X_X 0xd5 +#define XX_X_XX_ 0xd6 +#define XX_X_XXX 0xd7 +#define XX_XX___ 0xd8 +#define XX_XX__X 0xd9 +#define XX_XX_X_ 0xda +#define XX_XX_XX 0xdb +#define XX_XXX__ 0xdc +#define XX_XXX_X 0xdd +#define XX_XXXX_ 0xde +#define XX_XXXXX 0xdf +#define XXX_____ 0xe0 +#define XXX____X 0xe1 +#define XXX___X_ 0xe2 +#define XXX___XX 0xe3 +#define XXX__X__ 0xe4 +#define XXX__X_X 0xe5 +#define XXX__XX_ 0xe6 +#define XXX__XXX 0xe7 +#define XXX_X___ 0xe8 +#define XXX_X__X 0xe9 +#define XXX_X_X_ 0xea +#define XXX_X_XX 0xeb +#define XXX_XX__ 0xec +#define XXX_XX_X 0xed +#define XXX_XXX_ 0xee +#define XXX_XXXX 0xef +#define XXXX____ 0xf0 +#define XXXX___X 0xf1 +#define XXXX__X_ 0xf2 +#define XXXX__XX 0xf3 +#define XXXX_X__ 0xf4 +#define XXXX_X_X 0xf5 +#define XXXX_XX_ 0xf6 +#define XXXX_XXX 0xf7 +#define XXXXX___ 0xf8 +#define XXXXX__X 0xf9 +#define XXXXX_X_ 0xfa +#define XXXXX_XX 0xfb +#define XXXXXX__ 0xfc +#define XXXXXX_X 0xfd +#define XXXXXXX_ 0xfe +#define XXXXXXXX 0xff + +/********************************************************************* +* +* Compatibility with older versions +*/ +#define GUI_DispString_UC GUI_UC_DispString +#define TOUCH_X_ActivateX GUI_TOUCH_X_ActivateX +#define TOUCH_X_ActivateY GUI_TOUCH_X_ActivateY +#define TOUCH_X_Disable GUI_TOUCH_X_Disable +#define TOUCH_X_MeasureX GUI_TOUCH_X_MeasureX +#define TOUCH_X_MeasureY GUI_TOUCH_X_MeasureY +#define GUI_SelLayer GUI_SelectLayer +#if defined(__cplusplus) +} +#endif + +#endif /* ifdef GUI_H */ + +/*************************** End of file ****************************/