RT1050 GUI demo using emWin library

Revision:
0:dd702039127a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emwin/emWin_header/LCD.h	Thu Sep 20 19:16:34 2018 +0000
@@ -0,0 +1,754 @@
+/*********************************************************************
+*                SEGGER Microcontroller GmbH & Co. KG                *
+*        Solutions for real time microcontroller applications        *
+**********************************************************************
+*                                                                    *
+*        (c) 1996 - 2016  SEGGER Microcontroller GmbH & Co. KG       *
+*                                                                    *
+*        Internet: www.segger.com    Support:  support@segger.com    *
+*                                                                    *
+**********************************************************************
+
+** emWin V5.38 - 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.
+----------------------------------------------------------------------
+Licensing information
+
+Licensor:                 SEGGER Microcontroller Systems LLC
+Licensed to:              NXP Semiconductors, 1109 McKay Dr, M/S 76, San Jose, CA 95131, USA
+Licensed SEGGER software: emWin
+License number:           GUI-00186
+License model:            emWin License Agreement, dated August 20th 2011
+Licensed product:         -
+Licensed platform:        NXP's ARM 7/9, Cortex-M0,M3,M4
+Licensed number of seats: -
+----------------------------------------------------------------------
+File        : LCD.h
+Purpose     : Declares LCD interface functions
+----------------------------------------------------------------------
+*/
+
+#ifndef LCD_H
+#define LCD_H
+
+#include "GUI_ConfDefaults.h" /* Used for GUI_CONST_STORAGE */
+#include "Global.h"
+
+#if defined(__cplusplus)
+extern "C" {     /* Make sure we have C-declarations in C++ programs */
+#endif
+
+/*********************************************************************
+*
+*       Basic type defines
+*
+* The follwing are defines for types used in the LCD-driver and the
+* GUI layers on top of that. Since "C" does not provide data types of
+* fixed length which are identical on all platforms, this is done here.
+* For most 16/32 controllers, the settings will work fine. However, if
+* you have similar defines in other sections of your program, you might
+* want to change or relocate these defines, e.g. in a TYPE.h file.
+*/
+#define I16P I16              /*   signed 16 bits OR MORE ! */
+#define U16P U16              /* unsigned 16 bits OR MORE ! */
+
+/*********************************************************************
+*
+*       Settings for windows simulation
+*
+* Some settings in the configuration may conflict with the values required
+* in the Simulation. This is why we ignore the target settings for data
+* types and use the correct settings for the simulation.
+* (U32 could be defined as long, which would yield a 64 bit type on
+* the PC)
+*/
+#ifdef WIN32
+  #pragma warning( disable : 4244 )  // Disable warning messages in simulation
+  #pragma warning( disable : 4761 )  // Disable warning "integral size mismatch in argument; conversion supplied"
+#endif
+
+/*********************************************************************
+*
+*       Constants
+*/
+#define LCD_ERR0 (0x10)
+#define LCD_ERR_CONTROLLER_NOT_FOUND (LCD_ERR0+1)
+#define LCD_ERR_MEMORY               (LCD_ERR0+2)
+
+/*********************************************************************
+*
+*       Drawing modes
+*/
+#define LCD_DRAWMODE_NORMAL (0)
+#define LCD_DRAWMODE_XOR    (1<<0)
+#define LCD_DRAWMODE_TRANS  (1<<1)
+#define LCD_DRAWMODE_REV    (1<<2)
+
+/*********************************************************************
+*
+*       Typedefs
+*/
+typedef int LCD_DRAWMODE;
+typedef U32 LCD_COLOR;
+
+/*********************************************************************
+*
+*       Data structures
+*/
+typedef struct { I16P x,y; } GUI_POINT;
+typedef struct { I16 x0,y0,x1,y1; } LCD_RECT;
+
+typedef struct {
+  int              NumEntries;
+  char             HasTrans;
+  const LCD_COLOR * pPalEntries;
+} LCD_LOGPALETTE;
+
+/* This is used for the simulation only ! */
+typedef struct {
+  int x,y;
+  unsigned char KeyStat;
+} LCD_tMouseState;
+
+typedef struct {
+  int               NumEntries;
+  const LCD_COLOR * pPalEntries;
+} LCD_PHYSPALETTE;
+
+/*********************************************************************
+*
+*       LCD_L0_... color conversion
+*/
+typedef LCD_COLOR      tLCDDEV_Index2Color  (LCD_PIXELINDEX Index);
+typedef LCD_PIXELINDEX tLCDDEV_Color2Index  (LCD_COLOR Color);
+typedef LCD_PIXELINDEX tLCDDEV_GetIndexMask (void);
+
+typedef void tLCDDEV_Index2ColorBulk(void * pIndex, LCD_COLOR * pColor, U32 NumItems, U8 SizeOfIndex);
+typedef void tLCDDEV_Color2IndexBulk(LCD_COLOR * pColor, void * pIndex, U32 NumItems, U8 SizeOfIndex);
+
+/*********************************************************************
+*
+*       Color conversion API tables
+*/
+typedef struct {
+  tLCDDEV_Color2Index  * pfColor2Index;
+  tLCDDEV_Index2Color  * pfIndex2Color;
+  tLCDDEV_GetIndexMask * pfGetIndexMask;
+  int NoAlpha;
+  tLCDDEV_Color2IndexBulk * pfColor2IndexBulk;
+  tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk;
+} LCD_API_COLOR_CONV;
+
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_0;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_2;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_4;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_5;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_8;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_16;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_24;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_2;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_4;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_5;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_6;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_16;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1616I;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_111;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_222;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_233;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_323;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_332;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_444_12;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_444_12_1;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_444_16;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_555;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_565;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_556;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_655;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_666;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_666_9;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_822216;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_84444;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8666;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8666_1;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_88666I;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_888;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8888;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M111;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M1555I;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M222;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M233;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M323;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M332;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M4444I;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M444_12;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M444_12_1;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M444_16;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M555;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M565;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M556;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M655;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M666;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M666_9;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M8565;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M888;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M8888;
+extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M8888I;
+
+#define GUICC_0         &LCD_API_ColorConv_0
+#define GUICC_1         &LCD_API_ColorConv_1
+#define GUICC_1_2       &LCD_API_ColorConv_1_2
+#define GUICC_1_4       &LCD_API_ColorConv_1_4
+#define GUICC_1_5       &LCD_API_ColorConv_1_5
+#define GUICC_1_8       &LCD_API_ColorConv_1_8
+#define GUICC_1_16      &LCD_API_ColorConv_1_16
+#define GUICC_1_24      &LCD_API_ColorConv_1_24
+#define GUICC_2         &LCD_API_ColorConv_2
+#define GUICC_4         &LCD_API_ColorConv_4
+#define GUICC_5         &LCD_API_ColorConv_5
+#define GUICC_6         &LCD_API_ColorConv_6
+#define GUICC_8         &LCD_API_ColorConv_8
+#define GUICC_16        &LCD_API_ColorConv_16
+#define GUICC_1616I     &LCD_API_ColorConv_1616I
+#define GUICC_111       &LCD_API_ColorConv_111
+#define GUICC_222       &LCD_API_ColorConv_222
+#define GUICC_233       &LCD_API_ColorConv_233
+#define GUICC_323       &LCD_API_ColorConv_323
+#define GUICC_332       &LCD_API_ColorConv_332
+#define GUICC_M4444I    &LCD_API_ColorConv_M4444I
+#define GUICC_444_12    &LCD_API_ColorConv_444_12
+#define GUICC_444_12_1  &LCD_API_ColorConv_444_12_1
+#define GUICC_444_16    &LCD_API_ColorConv_444_16
+#define GUICC_555       &LCD_API_ColorConv_555
+#define GUICC_565       &LCD_API_ColorConv_565
+#define GUICC_556       &LCD_API_ColorConv_556
+#define GUICC_655       &LCD_API_ColorConv_655
+#define GUICC_666       &LCD_API_ColorConv_666
+#define GUICC_666_9     &LCD_API_ColorConv_666_9
+#define GUICC_822216    &LCD_API_ColorConv_822216
+#define GUICC_84444     &LCD_API_ColorConv_84444
+#define GUICC_8666      &LCD_API_ColorConv_8666
+#define GUICC_8666_1    &LCD_API_ColorConv_8666_1
+#define GUICC_88666I    &LCD_API_ColorConv_88666I
+#define GUICC_888       &LCD_API_ColorConv_888
+#define GUICC_8888      &LCD_API_ColorConv_8888
+#define GUICC_M111      &LCD_API_ColorConv_M111
+#define GUICC_M1555I    &LCD_API_ColorConv_M1555I
+#define GUICC_M222      &LCD_API_ColorConv_M222
+#define GUICC_M233      &LCD_API_ColorConv_M233
+#define GUICC_M323      &LCD_API_ColorConv_M323
+#define GUICC_M332      &LCD_API_ColorConv_M332
+#define GUICC_M444_12   &LCD_API_ColorConv_M444_12
+#define GUICC_M444_12_1 &LCD_API_ColorConv_M444_12_1
+#define GUICC_M444_16   &LCD_API_ColorConv_M444_16
+#define GUICC_M555      &LCD_API_ColorConv_M555
+#define GUICC_M565      &LCD_API_ColorConv_M565
+#define GUICC_M556      &LCD_API_ColorConv_M556
+#define GUICC_M655      &LCD_API_ColorConv_M655
+#define GUICC_M666      &LCD_API_ColorConv_M666
+#define GUICC_M666_9    &LCD_API_ColorConv_M666_9
+#define GUICC_M8565     &LCD_API_ColorConv_M8565
+#define GUICC_M888      &LCD_API_ColorConv_M888
+#define GUICC_M8888     &LCD_API_ColorConv_M8888
+#define GUICC_M8888I    &LCD_API_ColorConv_M8888I
+
+void GUICC_M1555I_SetCustColorConv(tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
+void GUICC_M565_SetCustColorConv  (tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
+void GUICC_M4444I_SetCustColorConv(tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
+void GUICC_M888_SetCustColorConv  (tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
+void GUICC_M8888I_SetCustColorConv(tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
+
+/*********************************************************************
+*
+*       Compatibility defines for older versions
+*/
+#define GUI_COLOR_CONV_1    GUICC_1
+#define GUI_COLOR_CONV_2    GUICC_2
+#define GUI_COLOR_CONV_4    GUICC_4
+#define GUI_COLOR_CONV_8666 GUICC_8666
+#define GUI_COLOR_CONV_888  GUICC_888
+#define GUI_COLOR_CONV_8888 GUICC_8888
+#define GUI_COLOR_CONV_565  GUICC_565
+#define GUI_COLOR_CONV_M565 GUICC_M565
+
+/*********************************************************************
+*
+*       LCDDEV function table
+*
+*  Below the routines which need to in an LCDDEV routine table are
+*  defined. All of these routines have to be in the low-level driver
+*  (LCD_L0) or in the memory device which can be used to replace the
+*  driver.
+*  The one exception to this is the SetClipRect routine, which would
+*  be identical for all drivers and is therefor contained in the
+*  level above (LCD).
+*/
+typedef void         tLCDDEV_DrawPixel    (int x, int y);
+typedef void         tLCDDEV_DrawHLine    (int x0, int y0,  int x1);
+typedef void         tLCDDEV_DrawVLine    (int x , int y0,  int y1);
+typedef void         tLCDDEV_FillRect     (int x0, int y0, int x1, int y1);
+typedef unsigned int tLCDDEV_GetPixelIndex(int x, int y);
+typedef void         tLCDDEV_SetPixelIndex(int x, int y, int ColorIndex);
+typedef void         tLCDDEV_XorPixel     (int x, int y);
+typedef void         tLCDDEV_FillPolygon  (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
+typedef void         tLCDDEV_FillPolygonAA(const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
+typedef void         tLCDDEV_GetRect      (LCD_RECT * pRect);
+typedef int          tLCDDEV_Init         (void);
+typedef void         tLCDDEV_On           (void);
+typedef void         tLCDDEV_Off          (void);
+typedef void         tLCDDEV_SetLUTEntry  (U8 Pos, LCD_COLOR color);
+typedef void *       tLCDDEV_GetDevFunc   (int Index);
+typedef I32          tLCDDEV_GetDevProp   (int Index);
+typedef void         tLCDDEV_SetOrg       (int x, int y);
+
+/*********************************************************************
+*
+*       Memory device API tables
+*/
+typedef struct GUI_DEVICE     GUI_DEVICE;
+typedef struct GUI_DEVICE_API GUI_DEVICE_API;
+
+typedef void tLCDDEV_DrawBitmap   (int x0, int y0, int xsize, int ysize,
+                       int BitsPerPixel, int BytesPerLine,
+                       const U8 * pData, int Diff,
+                       const void * pTrans);   /* Really LCD_PIXELINDEX, but is void to avoid compiler warnings */
+#define GUI_MEMDEV_APILIST_1  &GUI_MEMDEV_DEVICE_1
+#define GUI_MEMDEV_APILIST_8  &GUI_MEMDEV_DEVICE_8
+#define GUI_MEMDEV_APILIST_16 &GUI_MEMDEV_DEVICE_16
+#define GUI_MEMDEV_APILIST_32 &GUI_MEMDEV_DEVICE_32
+
+/*********************************************************************
+*
+*       Defines for device capabilities
+*
+* The following is the list of device capabilities which can, but do
+* not have to be implemented in the driver. This way the driver can be
+* enhanced in the future without affecting the driver interface,
+* keeping older drivers compatible.
+* More DevCaps can always be added in the future, as older drivers
+* are guaranteed to return 0 for all unimplemented features or queries.
+*
+* The values below define the legal parameters to the LCD_GetDeviceCaps
+* and the LCD_GetpCapFunc routines.
+*/
+
+#define LCD_DEVCAP_XSIZE             0x01    /* Quest horiz. res. of display */
+#define LCD_DEVCAP_YSIZE             0x02    /* Quest vert. res. of display */
+#define LCD_DEVCAP_VXSIZE            0x03    /* Quest vert. res. of virtual disp.*/
+#define LCD_DEVCAP_VYSIZE            0x04    /* Quest vert. res. of virtual disp.*/
+#define LCD_DEVCAP_XORG              0x05    /* X-origin ... usually 0 */
+#define LCD_DEVCAP_YORG              0x06    /* Y-origin ... usually 0 */
+#define LCD_DEVCAP_CONTROLLER        0x07    /* LCD Controller (Numerical) */
+#define LCD_DEVCAP_BITSPERPIXEL      0x08    /* Bits per pixel ... 1/2/4/8 */
+#define LCD_DEVCAP_NUMCOLORS         0x09    /* Quest number of colors */
+#define LCD_DEVCAP_XMAG              0x0A
+#define LCD_DEVCAP_YMAG              0x0B
+#define LCD_DEVCAP_MIRROR_X          0x0C
+#define LCD_DEVCAP_MIRROR_Y          0x0D
+#define LCD_DEVCAP_SWAP_XY           0x0E
+#define LCD_DEVCAP_SWAP_RB           0x0F
+
+int LCD_GetXSizeMax(void);
+int LCD_GetYSizeMax(void);
+int LCD_GetVXSizeMax(void);
+int LCD_GetVYSizeMax(void);
+int LCD_GetBitsPerPixelMax(void);
+void LCD_SetDisplaySize(int xSizeDisplay, int ySizeDisplay);
+int LCD_GetXSizeDisplay(void);
+int LCD_GetYSizeDisplay(void);
+
+int LCD_GetXSizeEx          (int LayerIndex);
+int LCD_GetYSizeEx          (int LayerIndex);
+int LCD_GetVXSizeEx         (int LayerIndex);
+int LCD_GetVYSizeEx         (int LayerIndex);
+int LCD_GetBitsPerPixelEx   (int LayerIndex);
+U32 LCD_GetNumColorsEx      (int LayerIndex);
+int LCD_GetXMagEx           (int LayerIndex);
+int LCD_GetYMagEx           (int LayerIndex);
+int LCD_GetMirrorXEx        (int LayerIndex);
+int LCD_GetMirrorYEx        (int LayerIndex);
+int LCD_GetSwapXYEx         (int LayerIndex);
+int LCD_GetReversLUTEx      (int LayerIndex);
+int LCD_GetPhysColorsInRAMEx(int LayerIndex);
+
+int LCD_GetXSize            (void);
+int LCD_GetYSize            (void);
+int LCD_GetVXSize           (void);
+int LCD_GetVYSize           (void);
+int LCD_GetBitsPerPixel     (void);
+U32 LCD_GetNumColors        (void);
+int LCD_GetXMag             (void);
+int LCD_GetYMag             (void);
+int LCD_GetMirrorX          (void);
+int LCD_GetMirrorY          (void);
+int LCD_GetSwapXY           (void);
+int LCD_GetReversLUT        (void);
+int LCD_GetPhysColorsInRAM  (void);
+
+I32 LCD__GetBPP      (U32 IndexMask);
+I32 LCD__GetBPPDevice(U32 IndexMask);
+
+tLCDDEV_Index2Color * LCD_GetpfIndex2ColorEx(int LayerIndex);
+tLCDDEV_Color2Index * LCD_GetpfColor2IndexEx(int LayerIndex);
+
+tLCDDEV_Color2Index * LCD_GetpfColor2Index(void);
+
+int LCD_GetNumLayers(void);
+
+LCD_COLOR * LCD_GetPalette  (void);
+LCD_COLOR * LCD_GetPaletteEx(int LayerIndex);
+
+void (* LCD_GetDevFunc(int LayerIndex, int Item))(void);
+
+/*********************************************************************
+*
+*       Values for requesting and setting function pointers (display driver)
+*/
+                                       /* Request of a function pointer for... */
+#define LCD_DEVFUNC_READRECT      0x01 /* ...reading a rectangular display area */
+#define LCD_DEVFUNC_SETALPHA      0x02 /* ...setting the alpha blending factor */
+#define LCD_DEVFUNC_SETPOS        0x03 /* ...setting the layer position */
+#define LCD_DEVFUNC_GETPOS        0x04 /* ...getting the layer position */
+#define LCD_DEVFUNC_SETSIZE       0x05 /* ...setting the layer size */
+#define LCD_DEVFUNC_SETVIS        0x06 /* ...setting the visibility of a layer */
+#define LCD_DEVFUNC_24BPP         0x07 /* ...drawing 24bpp bitmaps */
+#define LCD_DEVFUNC_NEXT_PIXEL    0x08 /* ...drawing a bitmap pixel by pixel */
+#define LCD_DEVFUNC_SET_VRAM_ADDR 0x09 /* ...setting the VRAM address */
+#define LCD_DEVFUNC_SET_VSIZE     0x0A /* ...setting the VRAM size */
+#define LCD_DEVFUNC_SET_SIZE      0x0B /* ...setting the display size */
+#define LCD_DEVFUNC_INIT          0x0C /* ...initializing the display controller */
+#define LCD_DEVFUNC_CONTROLCACHE  0x0D /* ...controlling the cache */
+#define LCD_DEVFUNC_ON            0x0E /* ...switching the display on */
+#define LCD_DEVFUNC_OFF           0x0F /* ...switching the display off */
+#define LCD_DEVFUNC_SETLUTENTRY   0x10 /* ...setting a LUT entry */
+#define LCD_DEVFUNC_FILLPOLY      0x11 /* ...filling a polygon */
+#define LCD_DEVFUNC_FILLPOLYAA    0x12 /* ...filling an antialiased polygon */
+#define LCD_DEVFUNC_ALPHAMODE     0x13 /* ...setting the alpha blending mode */
+#define LCD_DEVFUNC_CHROMAMODE    0x14 /* ...setting the chroma blending mode */
+#define LCD_DEVFUNC_CHROMA        0x15 /* ...setting the chroma values */
+#define LCD_DEVFUNC_SETFUNC       0x16 /* ...setting a function pointer */
+#define LCD_DEVFUNC_REFRESH       0x17 /* ...refreshing the display */
+#define LCD_DEVFUNC_SETRECT       0x18 /* ...setting the drawing rectangle */
+                                       /* Setting a function pointer for... */
+#define LCD_DEVFUNC_FILLRECT      0x19 /* ...filling a rectangular area */
+#define LCD_DEVFUNC_DRAWBMP_1BPP  0x20 /* ...drawing a 1bpp bitmap */
+#define LCD_DEVFUNC_COPYBUFFER    0x21 /* ...copying complete frame buffers */
+#define LCD_DEVFUNC_SHOWBUFFER    0x22 /* ...shows the given buffer */
+#define LCD_DEVFUNC_COPYRECT      0x23 /* ...filling a rectangular area */
+#define LCD_DEVFUNC_DRAWBMP_16BPP 0x24 /* ...drawing a 16bpp bitmap */
+#define LCD_DEVFUNC_DRAWBMP_8BPP  0x25 /* ...drawing a 8bpp bitmap */
+#define LCD_DEVFUNC_READPIXEL     0x26 /* ...reading a pixel index */
+#define LCD_DEVFUNC_READMPIXELS   0x27 /* ...reading multiple pixel indices */
+#define LCD_DEVFUNC_DRAWBMP_32BPP 0x28 /* ...drawing a 32bpp bitmap */
+
+/*********************************************************************
+*
+*       Values for requesting function pointers (memory devices)
+*/
+                                          /* Request of a function pointer for... */
+#define MEMDEV_DEVFUNC_WRITETOACTIVE 0x16 /* ...writing the memory device */
+
+/*********************************************************************
+*
+*       Values for requesting data
+*/
+                                       /* Request pointer to... */
+#define LCD_DEVDATA_MEMDEV        0x01 /* ...default memory device API */
+#define LCD_DEVDATA_PHYSPAL       0x02 /* ...physical palette */
+
+/*********************************************************************
+*
+*       Structures for passing data to LCD_X_DisplayDriver()
+*/
+typedef struct {
+  void * pVRAM;
+} LCD_X_SETVRAMADDR_INFO;
+
+typedef struct {
+  int xPos, yPos;
+} LCD_X_SETORG_INFO;
+
+typedef struct {
+  LCD_COLOR Color;
+  U8 Pos;
+} LCD_X_SETLUTENTRY_INFO;
+
+typedef struct {
+  int xSize, ySize;
+} LCD_X_SETSIZE_INFO;
+
+typedef struct {
+  int xPos, yPos;
+  int xLen, yLen;
+  int BytesPerPixel;
+  U32 Off;
+} LCD_X_SETPOS_INFO;
+
+typedef struct {
+  int Alpha;
+} LCD_X_SETALPHA_INFO;
+
+typedef struct {
+  int OnOff;
+} LCD_X_SETVIS_INFO;
+
+typedef struct {
+  int AlphaMode;
+} LCD_X_SETALPHAMODE_INFO;
+
+typedef struct {
+  int ChromaMode;
+} LCD_X_SETCHROMAMODE_INFO;
+
+typedef struct {
+  LCD_COLOR ChromaMin;
+  LCD_COLOR ChromaMax;
+} LCD_X_SETCHROMA_INFO;
+
+typedef struct {
+  int Index;
+} LCD_X_SHOWBUFFER_INFO;
+
+/*********************************************************************
+*
+*       Commands for LCD_X_DisplayDriver()
+*/
+#define LCD_X_INITCONTROLLER 0x01 /* Initializing the display controller */
+#define LCD_X_SETVRAMADDR    0x02 /* Setting the video RAM address */
+#define LCD_X_SETORG         0x03 /* Setting the origin within a layer */
+#define LCD_X_SETLUTENTRY    0x04 /* Setting an entry of the LUT */
+#define LCD_X_ON             0x05 /* Switching the display on */
+#define LCD_X_OFF            0x06 /* Switching the display off */
+#define LCD_X_SETSIZE        0x07 /* Setting the layer size */
+#define LCD_X_SETPOS         0x08 /* Setting the layer position */
+#define LCD_X_SETVIS         0x09 /* Setting the visibility of a layer */
+#define LCD_X_SETALPHA       0x0A /* Setting the alpha value of the layer */
+#define LCD_X_SETALPHAMODE   0x0B /* Setting the alpha blending mode */
+#define LCD_X_SETCHROMAMODE  0x0C /* Setting the chroma blending mode */
+#define LCD_X_SETCHROMA      0x0D /* Setting the chroma values */
+#define LCD_X_SHOWBUFFER     0x0E /* Switching to the given buffer */
+
+int  LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData);
+void LCD_X_Config(void);
+
+/*********************************************************************
+*
+*       Set layer properties
+*/
+int LCD_SetAlphaEx     (int LayerIndex, int Alpha);
+int LCD_SetPosEx       (int LayerIndex, int xPos, int yPos);
+int LCD_SetSizeEx      (int LayerIndex, int xSize, int ySize);
+int LCD_SetVisEx       (int LayerIndex, int OnOff);
+int LCD_SetVRAMAddrEx  (int LayerIndex, void * pVRAM);
+int LCD_SetVSizeEx     (int LayerIndex, int xSize, int ySize);
+int LCD_SetAlphaModeEx (int LayerIndex, int AlphaMode);
+int LCD_SetChromaModeEx(int LayerIndex, int ChromaMode);
+int LCD_SetChromaEx    (int LayerIndex, LCD_COLOR ChromaMin, LCD_COLOR ChromaMax);
+
+int LCD_SetAlpha     (int Alpha);
+int LCD_SetVRAMAddr  (void * pVRAM);
+int LCD_SetVSize     (int xSize, int ySize);
+int LCD_SetSize      (int xSize, int ySize);
+int LCD_SetVis       (int OnOff);
+int LCD_SetPos       (int xPos, int yPos);
+int LCD_SetAlphaMode (int AlphaMode);
+int LCD_SetChromaMode(int ChromaMode);
+int LCD_SetChroma    (LCD_COLOR ChromaMin, LCD_COLOR ChromaMax);
+int LCD_SetLUTEntry  (U8 Pos, LCD_COLOR Color);
+int LCD_SetDevFunc   (int LayerIndex, int IdFunc, void (* pDriverFunc)(void));
+
+void LCD_SetOrg(int xOrg, int yOrg);
+
+/*********************************************************************
+*
+*       Get layer properties
+*/
+int LCD_GetPosEx(int LayerIndex, int * pxPos, int * pyPos);
+
+int LCD_GetPos  (int * pxPos, int * pyPos);
+
+/*********************************************************************
+*
+*       Display refresh (optional)
+*/
+int LCD_Refresh  (void);
+int LCD_RefreshEx(int LayerIndex);
+
+/*********************************************************************
+*
+*       NEXT_PIXEL API support
+*/
+typedef struct {
+  int  (* pfStart)   (int x0, int y0, int x1, int y1);
+  void (* pfSetPixel)(LCD_PIXELINDEX PixelIndex);
+  void (* pfNextLine)(void);
+  void (* pfEnd)     (void);
+} LCD_API_NEXT_PIXEL;
+
+LCD_API_NEXT_PIXEL * LCD_GetNextPixelAPI(void);
+
+/*********************************************************************
+*
+*      LCD_CLIP function table
+*/
+typedef void tLCD_HL_DrawHLine    (int x0, int y0,  int x1);
+typedef void tLCD_HL_DrawPixel    (int x0, int y0);
+
+typedef struct {
+  tLCD_HL_DrawHLine * pfDrawHLine;
+  tLCD_HL_DrawPixel * pfDrawPixel;
+} tLCD_HL_APIList;
+
+void LCD_DrawHLine(int x0, int y0,  int x1);
+void LCD_DrawPixel(int x0, int y0);
+void LCD_DrawVLine(int x,  int y0,  int y1);
+
+
+/*********************************************************************
+*
+*       Declarations for LCD_
+*/
+void LCD_SetClipRectEx(const LCD_RECT * pRect);
+void LCD_SetClipRectMax(void);
+
+/* Get device capabilities (0 if not supported) */
+I32  LCD_GetDevCap  (int Index);
+I32  LCD_GetDevCapEx(int LayerIndex, int Index);
+
+/* Initialize LCD using config-parameters */
+int LCD_Init(void);
+int LCD_InitColors(void);
+
+void LCD_SetBkColor   (LCD_COLOR Color); /* Set background color */
+void LCD_SetColor     (LCD_COLOR Color); /* Set foreground color */
+void LCD_SetPixelIndex(int x, int y, int ColorIndex);
+
+/* Palette routines (Not available on all drivers) */
+void LCD_InitLUT(void);
+int  LCD_SetLUTEntryEx(int LayerIndex, U8 Pos, LCD_COLOR Color);
+void LCD_SetLUTEx(int LayerIndex, const LCD_PHYSPALETTE * pPalette);
+void LCD_SetLUT  (const LCD_PHYSPALETTE * pPalette);
+
+LCD_DRAWMODE LCD_SetDrawMode  (LCD_DRAWMODE dm);
+void LCD_SetColorIndex(unsigned PixelIndex);
+void LCD_SetBkColorIndex(unsigned PixelIndex);
+void LCD_FillRect(int x0, int y0, int x1, int y1);
+typedef void tLCD_SetPixelAA(int x, int y, U8 Intens);
+
+void LCD_SetPixelAA4_Trans  (int x, int y, U8 Intens);
+void LCD_SetPixelAA4_NoTrans(int x, int y, U8 Intens);
+
+void LCD_SetPixelAA8_Trans  (int x, int y, U8 Intens);
+void LCD_SetPixelAA8_NoTrans(int x, int y, U8 Intens);
+
+void LCD_AA_EnableGamma(int OnOff);
+void LCD_AA_SetGamma   (U8 * pGamma);
+void LCD_AA_GetGamma   (U8 * pGamma);
+
+LCD_COLOR    LCD_AA_MixColors16 (LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
+LCD_COLOR    LCD_AA_MixColors256(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
+LCD_COLOR    LCD_MixColors256   (LCD_COLOR Color, LCD_COLOR BkColor, unsigned Intens);
+LCD_COLOR    LCD_GetPixelColor(int x, int y);     /* Get RGB color of pixel */
+unsigned int LCD_GetPixelIndex(int x, int y);
+int          LCD_GetBkColorIndex (void);
+int          LCD_GetColorIndex (void);
+#if (GUI_USE_ARGB)
+U32          LCD_AA_SetOrMask(U32 OrMask);
+#else
+U32          LCD_AA_SetAndMask(U32 AndMask);
+#endif
+
+/* Configuration */
+int  LCD_SetMaxNumColors(unsigned MaxNumColors);
+int  LCD_GetMaxNumColors(void);
+void LCD__SetPaletteConversionHook(void (* pfPaletteConversionHook)(const LCD_LOGPALETTE * pLogPal));
+
+/*********************************************************************
+*
+*       Optional support for rotation
+*/
+#if GUI_SUPPORT_ROTATION
+
+typedef void tLCD_DrawBitmap(int x0, int y0, int xsize, int ysize,
+                             int xMul, int yMul, int BitsPerPixel, int BytesPerLine,
+                             const U8 * pPixel, const void * pTrans);
+typedef void tRect2TextRect (LCD_RECT * pRect);
+
+struct tLCD_APIList_struct {
+  tLCD_DrawBitmap   * pfDrawBitmap;
+  tRect2TextRect    * pfRect2TextRect;
+  tRect2TextRect    * pfTransformRect;
+};
+
+typedef struct tLCD_APIList_struct tLCD_APIList;
+
+extern tLCD_APIList LCD_APIListCCW;
+extern tLCD_APIList LCD_APIListCW;
+extern tLCD_APIList LCD_APIList180;
+
+#define GUI_ROTATION   tLCD_APIList
+#define GUI_ROTATE_CCW &LCD_APIListCCW
+#define GUI_ROTATE_CW  &LCD_APIListCW
+#define GUI_ROTATE_180 &LCD_APIList180
+#define GUI_ROTATE_0   0
+
+tLCD_SetPixelAA * LCD__GetPfSetPixel(int BitsPerPixel);
+
+#endif
+
+/*********************************************************************
+*
+*       Physical color access, internally used only
+*/
+void LCD__SetPhysColor(U8 Pos, LCD_COLOR Color);
+
+/*********************************************************************
+*
+*       Cache control
+*/
+#define LCD_CC_UNLOCK (0)    /* Default mode: Cache is transparent */
+#define LCD_CC_LOCK   (1)    /* Cache is locked, no write operations */
+#define LCD_CC_FLUSH  (2)    /* Flush cache, do not change mode */
+
+int LCD_ControlCache  (int Cmd);
+int LCD_ControlCacheEx(int LayerIndex, int Cmd);
+
+/*********************************************************************
+*
+*       Color conversion
+*/
+LCD_PIXELINDEX   LCD_Color2Index     (LCD_COLOR Color);
+LCD_COLOR        LCD_Index2Color     (int Index);
+LCD_COLOR        LCD_Index2ColorEx   (int i, unsigned LayerIndex);
+
+/*********************************************************************
+*
+*       LCD_X_...
+*/
+unsigned char LCD_X_Read00(void);
+unsigned char LCD_X_Read01(void);
+void LCD_X_Write00 (unsigned char c);
+void LCD_X_Write01 (unsigned char c);
+void LCD_X_WriteM01(unsigned char * pData, int NumBytes);
+
+#if defined(__cplusplus)
+  }
+#endif
+
+#endif /* LCD_H */
+
+/*************************** End of file ****************************/