Headers for emWin lib

Dependents:   DISCO-F746NG_rtos_test

Revision:
0:1bf8f02b0770
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emWin_header/GUIDRV_Generic.h	Sat Mar 26 22:49:50 2016 +0000
@@ -0,0 +1,437 @@
+/*********************************************************************
+*                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        : GUIDRV_Generic.h
+Purpose     : Adapter to be able to use the display drivers with simple
+              bus interface from emWin V4.18
+---------------------------END-OF-HEADER------------------------------
+*/
+
+#include "LCD_ConfDefaults.h"
+
+#if defined(LCD_CONTROLLER)
+
+/*********************************************************************
+*
+*       Defines
+*
+**********************************************************************
+*/
+/*********************************************************************
+*
+*       Remap old configuration macros to static data
+*/
+#define LCD_XSIZE       _xSize
+#define LCD_YSIZE       _ySize
+#define LCD_VXSIZE      _vxSize
+#define LCD_VYSIZE      _vySize
+#define LCD_XSIZE_PHYS  _xSizePhys
+#define LCD_YSIZE_PHYS  _ySizePhys
+#define LCD_NUM_COLORS  _NumColors
+
+/*********************************************************************
+*
+*       Required renaming operations
+*/
+#define LCD_On  LCD_L0_On
+#define LCD_Off LCD_L0_Off
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*********************************************************************
+*
+*       Prototypes of LCD_L0_xxx - functions
+*/
+void     LCD_L0_SetPixelIndex(int x, int y, int PixelIndex);
+unsigned LCD_L0_GetPixelIndex(int x, int y);
+void     LCD_L0_XorPixel     (int x, int y);
+void     LCD_L0_DrawHLine    (int x0, int y,  int x1);
+void     LCD_L0_DrawVLine    (int x, int y0,  int y1);
+void     LCD_L0_FillRect     (int x0, int y0, int x1, int y1);
+void     LCD_L0_DrawBitmap   (int x0, int y0, int xsize, int ysize, int BitsPerPixel,  int BytesPerLine, const U8 * pData, int Diff, const LCD_PIXELINDEX * pTrans);
+void     LCD_L0_SetOrg       (int x, int y);
+void     LCD_L0_On           (void);
+void     LCD_L0_Off          (void);
+int      LCD_L0_Init         (void);
+void     LCD_L0_SetLUTEntry  (U8 Pos, LCD_COLOR Color);
+void  (* LCD_L0_GetDevFunc   (int Index))(void);
+
+/*********************************************************************
+*
+*       Prototypes of SIM_xxx - functions
+*/
+void SIM_SetVRAMSize(int LayerIndex, int xSize, int ySize);
+
+/*********************************************************************
+*
+*       Static data
+*
+**********************************************************************
+*/
+static int _xSize;
+static int _ySize;
+static int _vxSize;
+static int _vySize;
+static int _xSizePhys;
+static int _ySizePhys;
+static int _NumColors;
+
+/*********************************************************************
+*
+*       Static code
+*
+**********************************************************************
+*/
+/*********************************************************************
+*
+*       __SetPixelIndex
+*/
+static void __SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_SetPixelIndex(x, y, PixelIndex);
+}
+
+/*********************************************************************
+*
+*       __GetPixelIndex
+*/
+static unsigned int __GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) {
+  GUI_USE_PARA(pDevice);
+  return LCD_L0_GetPixelIndex(x, y);
+}
+
+/*********************************************************************
+*
+*       __XorPixel
+*/
+static void __XorPixel(GUI_DEVICE * pDevice, int x, int y) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_XorPixel(x, y);
+}
+
+/*********************************************************************
+*
+*       __DrawHLine
+*/
+static void __DrawHLine(GUI_DEVICE * pDevice, int x0, int y,  int x1) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_DrawHLine(x0, y, x1);
+}
+
+/*********************************************************************
+*
+*       __DrawVLine, not optimized
+*/
+static void __DrawVLine(GUI_DEVICE * pDevice, int x, int y0,  int y1) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_DrawVLine(x, y0, y1);
+}
+
+/*********************************************************************
+*
+*       __FillRect
+*/
+static void __FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_FillRect(x0, y0, x1, y1);
+}
+
+/*********************************************************************
+*
+*       __DrawBitmap
+*/
+static void __DrawBitmap(GUI_DEVICE * pDevice, int x0, int y0,
+                       int xSize, int ySize,
+                       int BitsPerPixel,
+                       int BytesPerLine,
+                       const U8 * pData, int Diff,
+                       const LCD_PIXELINDEX * pTrans) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_DrawBitmap(x0, y0, xSize, ySize, BitsPerPixel, BytesPerLine, pData, Diff, pTrans);
+}
+
+/*********************************************************************
+*
+*       __SetOrg
+*/
+static void __SetOrg(GUI_DEVICE * pDevice, int x, int y) {
+  GUI_USE_PARA(pDevice);
+  LCD_L0_SetOrg(x, y);
+}
+
+/*********************************************************************
+*
+*       _SetVSize
+*/
+static void _SetVSize(GUI_DEVICE * pDevice, int xSize, int ySize) {
+  LCD_VXSIZE = xSize;
+  LCD_VYSIZE = ySize;
+  #if defined(WIN32) | defined(LCD_SIMCONTROLLER)
+    SIM_SetVRAMSize(pDevice->LayerIndex, xSize, ySize);
+  #else
+    GUI_USE_PARA(pDevice);
+  #endif
+}
+
+/*********************************************************************
+*
+*       _SetSize
+*/
+static void _SetSize(GUI_DEVICE * pDevice, int xSize, int ySize) {
+  GUI_USE_PARA(pDevice);
+  LCD_XSIZE = xSize;
+  LCD_YSIZE = ySize;
+  #if (LCD_SWAP_XY)
+    _xSizePhys = ySize;
+    _ySizePhys = xSize;
+  #else
+    _xSizePhys = xSize;
+    _ySizePhys = ySize;
+  #endif
+}
+
+/*********************************************************************
+*
+*       __ReadRect
+*/
+static void __ReadRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer) {
+  void (* pfReadRect)(int, int, int, int, LCD_PIXELINDEX *);
+
+  GUI_USE_PARA(pDevice);
+  pfReadRect = (void (*)(int, int, int, int, LCD_PIXELINDEX *))LCD_L0_GetDevFunc(LCD_DEVFUNC_READRECT);
+  pfReadRect(x0, y0, x1, y1, pBuffer);
+}
+
+/*********************************************************************
+*
+*       _GetReadRect
+*/
+static void (* _GetReadRect(void))(void) {
+  if (LCD_L0_GetDevFunc(LCD_DEVFUNC_READRECT)) {
+    return (void (*)(void))__ReadRect;
+  }
+  return NULL;
+}
+
+/*********************************************************************
+*
+*       __ControlCache
+*/
+static int __ControlCache(GUI_DEVICE * pDevice, int Cmd) {
+  int (* pfControlCache)(int);
+
+  GUI_USE_PARA(pDevice);
+  pfControlCache = (int (*)(int))LCD_L0_GetDevFunc(LCD_DEVFUNC_CONTROLCACHE);
+  return pfControlCache(Cmd);
+}
+
+/*********************************************************************
+*
+*       _GetControlCache
+*/
+static void (* _GetControlCache(void))(void) {
+  if (LCD_L0_GetDevFunc(LCD_DEVFUNC_CONTROLCACHE)) {
+    return (void (*)(void))__ControlCache;
+  }
+  return NULL;
+}
+
+/*********************************************************************
+*
+*       __Refresh
+*/
+static void __Refresh(GUI_DEVICE * pDevice) {
+  void (* pfRefresh)(void);
+
+  GUI_USE_PARA(pDevice);
+  pfRefresh = (void (*)(void))LCD_L0_GetDevFunc(LCD_DEVFUNC_REFRESH);
+  pfRefresh();
+}
+
+/*********************************************************************
+*
+*       _GetRefresh
+*/
+static void (* _GetRefresh(void))(void) {
+  if (LCD_L0_GetDevFunc(LCD_DEVFUNC_REFRESH)) {
+    return (void (*)(void))__Refresh;
+  }
+  return NULL;
+}
+
+/*********************************************************************
+*
+*       _Init
+*/
+static int _Init(GUI_DEVICE * pDevice) {
+  GUI_USE_PARA(pDevice);
+  return LCD_L0_Init();
+}
+
+/*********************************************************************
+*
+*       __GetDevFunc
+*/
+static void (* __GetDevFunc(GUI_DEVICE ** ppDevice, int Index))(void) {
+  GUI_USE_PARA(ppDevice);
+  switch (Index) {
+  case LCD_DEVFUNC_CONTROLCACHE:
+    return _GetControlCache();
+  case LCD_DEVFUNC_REFRESH:
+    return _GetRefresh();
+  case LCD_DEVFUNC_READRECT:
+    return _GetReadRect();
+  case LCD_DEVFUNC_SET_VSIZE:
+    return (void (*)(void))_SetVSize;
+  case LCD_DEVFUNC_SET_SIZE:
+    return (void (*)(void))_SetSize;
+  case LCD_DEVFUNC_INIT:
+    return (void (*)(void))_Init;
+  default:
+    return (void (*)(void))LCD_L0_GetDevFunc(Index);
+  }
+}
+
+/*********************************************************************
+*
+*       __GetDevProp
+*/
+static I32 __GetDevProp(GUI_DEVICE * pDevice, int Index) {
+  GUI_USE_PARA(pDevice);
+  switch (Index) {
+  case LCD_DEVCAP_XSIZE:
+    return LCD_XSIZE;
+  case LCD_DEVCAP_YSIZE:
+    return LCD_YSIZE;
+  case LCD_DEVCAP_VXSIZE:
+    return LCD_VXSIZE;
+  case LCD_DEVCAP_VYSIZE:
+    return LCD_VYSIZE;
+  case LCD_DEVCAP_BITSPERPIXEL:
+    return LCD_BITSPERPIXEL;
+  case LCD_DEVCAP_NUMCOLORS:
+    return 1 << LCD_BITSPERPIXEL;
+  case LCD_DEVCAP_XMAG:
+    return 1;
+  case LCD_DEVCAP_YMAG:
+    return 1;
+  case LCD_DEVCAP_MIRROR_X:
+    return LCD_MIRROR_X;
+  case LCD_DEVCAP_MIRROR_Y:
+    return LCD_MIRROR_Y;
+  case LCD_DEVCAP_SWAP_XY:
+    return LCD_SWAP_XY;
+  case LCD_DEVCAP_SWAP_RB:
+    return LCD_SWAP_RB;
+  }
+  return -1;
+}
+
+/*********************************************************************
+*
+*       __GetDevData
+*/
+static void * __GetDevData(GUI_DEVICE * pDevice, int Index) {
+  GUI_USE_PARA(pDevice);
+  #if GUI_SUPPORT_MEMDEV
+    switch (Index) {
+    case LCD_DEVDATA_MEMDEV:
+      #if (LCD_BITSPERPIXEL == 1)
+        return (void *)&GUI_MEMDEV_DEVICE_1;
+      #elif (LCD_BITSPERPIXEL <= 8)
+        return (void *)&GUI_MEMDEV_DEVICE_8;
+      #elif (LCD_BITSPERPIXEL <= 16)
+        return (void *)&GUI_MEMDEV_DEVICE_16;
+      #else
+        return (void *)&GUI_MEMDEV_DEVICE_32;
+      #endif
+    }
+  #else
+    GUI_USE_PARA(Index);
+  #endif
+  return NULL;
+}
+
+/*********************************************************************
+*
+*       __GetRect
+*/
+static void __GetRect(GUI_DEVICE * pDevice, LCD_RECT * pRect) {
+  GUI_USE_PARA(pDevice);
+  pRect->x0 = 0;
+  pRect->y0 = 0;
+  pRect->x1 = LCD_VXSIZE - 1;
+  pRect->y1 = LCD_VYSIZE - 1;
+}
+
+/*********************************************************************
+*
+*       Public data
+*
+**********************************************************************
+*/
+/*********************************************************************
+*
+*       GUI_DEVICE_API structure
+*/
+const GUI_DEVICE_API DISPLAY_DRIVER_API = {
+  //
+  // Data
+  //
+  DEVICE_CLASS_DRIVER,
+  //
+  // Drawing functions
+  //
+  __DrawBitmap,
+  __DrawHLine,
+  __DrawVLine,
+  __FillRect,
+  __GetPixelIndex,
+  __SetPixelIndex,
+  __XorPixel,
+  //
+  // Set origin
+  //
+  __SetOrg,
+  //
+  // Request information
+  //
+  __GetDevFunc,
+  __GetDevProp,
+  __GetDevData,
+  __GetRect,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/*************************** End of file ****************************/