LCD.H
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:14k
源码类别:

uCOS

开发平台:

C/C++

  1. /*
  2. *********************************************************************************************************
  3. *                                                uC/GUI
  4. *                        Universal graphic software for embedded applications
  5. *
  6. *                       (c) Copyright 2002, Micrium Inc., Weston, FL
  7. *                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
  8. *
  9. *              礐/GUI is protected by international copyright laws. Knowledge of the
  10. *              source code may not be used to write a similar product. This file may
  11. *              only be used in accordance with a license and should not be redistributed
  12. *              in any way. We appreciate your understanding and fairness.
  13. *
  14. ----------------------------------------------------------------------
  15. File        : LCD.H
  16. Purpose     : Declares LCD interface functions
  17. ----------------------------------------------------------------------
  18. */
  19. #ifndef LCD_H
  20. #define LCD_H
  21. /*
  22.   ********************************************************************
  23.   *                                                                  *
  24.   *                   Basic type defines                             *
  25.   *                                                                  *
  26.   ********************************************************************
  27. The follwing are defines for types used in the LCD-driver and the
  28. emWin layers on top of that. Since "C" does not provide data types of
  29. fixed length which are identical on all platforms, this is done here.
  30. For most 16/32 controllers, the settings will work fine. However, if
  31. you have similar defines in other sections of your program, you might
  32. want to change or relocate these defines, e.g. in a TYPE.H file.
  33. */
  34. //#ifndef I8
  35. #define I8    signed char
  36. //#endif
  37. //#ifndef U8
  38. #define U8  unsigned char     /* unsigned 8  bits. */
  39. //#endif
  40. //#ifndef I16
  41. #define I16   signed short    /*   signed 16 bits. */
  42. //#endif
  43. #ifndef U16
  44. #define U16 unsigned short    /* unsigned 16 bits. */
  45. #endif
  46. //#ifndef I32
  47. #define I32   signed int   /*   signed 32 bits. */
  48. //#endif
  49. #ifndef U32
  50. #define U32 unsigned int   /* unsigned 32 bits. */
  51. #endif
  52. #ifndef I16P
  53. #define I16P I16              /*   signed 16 bits OR MORE ! */
  54. #endif
  55. #ifndef U16P
  56. #define U16P U16              /* unsigned 16 bits OR MORE ! */
  57. #endif
  58. /*
  59.   ********************************************************************
  60.   *                                                                  *
  61.   *               Settings for windows simulation                    *
  62.   *                                                                  *
  63.   ********************************************************************
  64. Some settings in the configuration may conflict with the values required
  65. in the Simulation. This is why we ignore the target settings for data
  66. types and use the correct settings for the simulation.
  67. (U32 could be defined as long, which would yield a 64 bit type on
  68. the PC)
  69. */
  70. #ifdef WIN32
  71.   #pragma warning( disable : 4244 )  // Disable warning messages in simulation
  72.   #pragma warning( disable : 4761 )  // Disable warning "integral size mismatch in argument; conversion supplied"
  73. #endif                                      
  74. /*      *************************************************************
  75.         *                                                           *
  76.         *                Constants                                  *
  77.         *                                                           *
  78.         *************************************************************
  79. */
  80. #define LCD_ERR0 (0x10)
  81. #define LCD_ERR_CONTROLLER_NOT_FOUND (LCD_ERR0+1)
  82. #define LCD_ERR_MEMORY               (LCD_ERR0+2)
  83. /*
  84.       *********************************
  85.       *                               *
  86.       *      Drawing modes            *
  87.       *                               *
  88.       *********************************
  89. */
  90. #define LCD_DRAWMODE_NORMAL (0)
  91. #define LCD_DRAWMODE_XOR    (1<<0)
  92. #define LCD_DRAWMODE_TRANS  (1<<1)
  93. #define LCD_DRAWMODE_REV    (1<<2)
  94.  
  95. /*      *************************************************************
  96.         *                                                           *
  97.         *                Typedefs                                   *
  98.         *                                                           *
  99.         *************************************************************
  100. */
  101. typedef int LCD_DRAWMODE;
  102. typedef U32 LCD_COLOR;
  103.  
  104. /********************************************************
  105. *
  106. *     Data structures
  107. *
  108. *********************************************************
  109. */
  110. typedef struct { I16P x,y; } GUI_POINT;
  111. typedef struct { I16 x0,y0,x1,y1; } LCD_RECT;
  112. /*typedef struct { GUI_POINT P0, P1; } LCD_RECT; */
  113. typedef struct {
  114.   int              NumEntries; 
  115.   char             HasTrans;         
  116.   const LCD_COLOR* pPalEntries; 
  117. } LCD_LOGPALETTE; 
  118. /* This is used for the simulation only ! */
  119. typedef struct {
  120.   int x,y;
  121.   unsigned char KeyStat;
  122. } LCD_tMouseState;
  123. /********************************************************
  124. *
  125. *     Index2Color
  126. *
  127. *********************************************************
  128.   This function needs to be int the public part of the software
  129.   since it is needed by the simulation. Most other driver
  130.   functions are hidden in the private header file.
  131. */
  132. typedef LCD_COLOR    tLCDDEV_Index2Color     (int Index);
  133. #if !defined (__C51__) /* To bypass Keil-compiler bug */
  134.   tLCDDEV_Index2Color LCD_L0_Index2Color, LCD_L0_1_Index2Color;
  135. #else
  136.   LCD_COLOR    LCD_L0_Index2Color  (int Index);
  137.   LCD_COLOR    LCD_L0_1_Index2Color(int Index);
  138. #endif
  139. /*      *************************************************************
  140.         *                                                           *
  141.         *                   Defines                                 *
  142.         *                                                           *
  143.         *    for device capabilities                                *
  144.         *                                                           *
  145.         *************************************************************
  146. The following is the list of device capabilities which can, but do
  147. not have to be implemented in the driver. This way the driver can be
  148. enhanced in the future without affecting the driver interface,
  149. keeping older drivers compatible.
  150. More DevCaps can always be added in the future, as older drivers
  151. are guaranteed to return 0 for all unimplemented features or queries.
  152. The values below define the legal parameters to the LCD_GetDeviceCaps
  153. and the LCD_GetpCapFunc routines.
  154. */
  155. #define LCD_DEVCAP_NUMCOLORS    0x0     /* Quest number of colors
  156.                                            which LCD can display */
  157. #define LCD_DEVCAP_XSIZE        0x1     /* Quest horiz. res. of display */
  158. #define LCD_DEVCAP_YSIZE        0x2     /* Quest vert. res. of display */
  159. #define LCD_DEVCAP_VXSIZE       0x3     /* Quest vert. res. of virtual disp.*/
  160. #define LCD_DEVCAP_VYSIZE       0x4     /* Quest vert. res. of virtual disp.*/
  161. #define LCD_DEVCAP_XORG         0x5     /* X-origin ... usually 0 */
  162. #define LCD_DEVCAP_YORG         0x6     /* Y-origin ... usually 0 */
  163. #define LCD_DEVCAP_CONTROLLER   0x7     /* LCD Controller (Numerical) */
  164. #define LCD_DEVCAP_BITSPERPIXEL 0x8     /* Bits per pixel ... 1/2/4/8 */
  165. #define LCD_DEVCAP_NUMPAGES     0x10    /* Quest number of pages of display */
  166. #define LCD_DEVCAP_COLOR        0x1000  /* Quest Color[0]
  167.                                 0x1001     Quest Color[1]
  168.                                 0x1002     Quest Color[2]
  169.                                          ...                    */
  170.  /* The next 4095 entries are reserved so up to 4096 colors
  171.     can be queried          ...*/
  172. int LCD_GetXSize(void);
  173. int LCD_GetYSize(void);
  174. int LCD_GetVXSize(void);
  175. int LCD_GetVYSize(void);
  176. U32 LCD_GetNumColors(void);
  177. int LCD_GetBitsPerPixel(void);
  178. int LCD_GetFixedPalette(void);
  179. int LCD_GetXMag(void);
  180. int LCD_GetYMag(void);
  181. int LCD_GetNumDisplays(void);
  182. int LCD_GetXSize_1(void);
  183. int LCD_GetYSize_1(void);
  184. int LCD_GetVXSize_1(void);
  185. int LCD_GetVYSize_1(void);
  186. U32 LCD_GetNumColors_1(void);
  187. int LCD_GetBitsPerPixel_1(void);
  188. int LCD_GetFixedPalette_1(void);
  189. int LCD_GetXMag_1(void);
  190. int LCD_GetYMag_1(void);
  191. #define LCD_GET_XSIZE()        LCD_GetXSize()
  192. #define LCD_GET_YSIZE()        LCD_GetYSize()
  193. #define LCD_GET_VXSIZE()       LCD_GetVXSize()
  194. #define LCD_GET_VYSIZE()       LCD_GetVYSize()
  195. #define LCD_GET_NUMCOLORS()    LCD_GetNumColors()
  196. #define LCD_GET_BITSPERPIXEL() LCD_GetBitsPerPixel()
  197. /*********************************************************************
  198. *
  199. *      LCD_CLIP function table
  200. *
  201. **********************************************************************
  202. */
  203. typedef void         tLCD_HL_DrawHLine    (int x0, int y0,  int x1);
  204. typedef void         tLCD_HL_DrawPixel    (int x0, int y0);
  205. typedef struct {
  206.   tLCD_HL_DrawHLine*          pfDrawHLine;
  207.   tLCD_HL_DrawPixel*          pfDrawPixel;
  208. } tLCD_HL_APIList;
  209. #if defined (__C51__) /* To bypass Keil-compiler bug */
  210.   void LCD_DrawHLine(int x0, int y0,  int x1);
  211.   void LCD_DrawPixel(int x0, int y0);
  212. #else
  213.   tLCD_HL_DrawHLine LCD_DrawHLine;
  214.   tLCD_HL_DrawPixel LCD_DrawPixel;
  215. #endif
  216. void LCD_DrawVLine  (int x, int y0,  int y1);
  217. /*********************************************************************
  218. *
  219. *              Declarations for LCD_
  220. *
  221. **********************************************************************
  222. */
  223. void LCD_SetClipRectEx(const LCD_RECT* pRect);
  224. void LCD_SetClipRectMax(void);
  225. /* Get device capabilities (0 if not supported) */
  226. I32  LCD_GetDevCap(int Index);
  227. /* Initialize LCD using config-paramters */
  228. int LCD_Init(void);
  229. void LCD_SetBkColor   (LCD_COLOR Color); /* Set background color */
  230. void LCD_SetColor     (LCD_COLOR Color); /* Set foreground color */
  231. void LCD_SetPixelIndex(int x, int y, int ColorIndex);
  232. /* Palette routines (Not available on all drivers) */
  233. void LCD_InitLUT(void);
  234. /* Decompressors */
  235. typedef void tfDrawSpecialBitmap(int x0,int y0,int xsize, int ysize, const U8*pPixel, const LCD_LOGPALETTE* pLogPal, int xMag, int yMag);
  236. #if !defined (__C51__) /* To bypass Keil-compiler bug */
  237.   tfDrawSpecialBitmap LCD_DrawBitmap_RLE8, LCD_DrawBitmap_RLE4;
  238. #else
  239.   void LCD_DrawBitmap_RLE8(int x0,int y0,int xsize, int ysize, const U8*pPixel, const LCD_LOGPALETTE* pLogPal, int xMag, int yMag);
  240.   void LCD_DrawBitmap_RLE4(int x0,int y0,int xsize, int ysize, const U8*pPixel, const LCD_LOGPALETTE* pLogPal, int xMag, int yMag);
  241. #endif
  242. LCD_DRAWMODE LCD_SetDrawMode  (LCD_DRAWMODE dm);
  243. void LCD_SetColorIndex(int Index);
  244. void LCD_SetBkColorIndex(int Index);
  245. void LCD_FillRect(int x0, int y0, int x1, int y1);
  246. void LCD_DrawBitmap   (int x0, int y0,
  247.                        int xsize, int ysize,
  248.                        int xMul, int yMul,
  249.                        int BitsPerPixel,
  250.                        int BytesPerLine,
  251.                        const U8* pPixel,
  252.                        const LCD_LOGPALETTE* pLogPal);
  253. typedef void tLCD_SetPixelAA(int x, int y, U8 Intens);
  254. #if defined (__C51__)  /* To bypass Keil-compiler bug */
  255.   void tLCD_SetPixelAA(int x, int y, U8 Intens);
  256.   void LCD_SetPixelAA_NoTrans(int x, int y, U8 Intens);
  257. #else
  258.   tLCD_SetPixelAA LCD_SetPixelAA;
  259.   tLCD_SetPixelAA LCD_SetPixelAA_NoTrans;
  260. #endif
  261. LCD_COLOR LCD_AA_MixColors(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
  262. LCD_COLOR    LCD_GetPixelColor(int x, int y);     /* Get RGB color of pixel */
  263. unsigned int LCD_GetPixelIndex(int x, int y);
  264. int LCD_GetBkColorIndex (void);
  265. int LCD_GetColorIndex (void);
  266. /*      *************************************************************
  267.         *                                                           *
  268.         *      LCD  publics not used by GUI                         *
  269.         *                                                           *
  270.         *************************************************************
  271.   
  272. The following functions can, but do not have to be defined in the LCD driver
  273. as they are not used by the GUI level.
  274. */
  275. #define LCD_On          LCD_L0_On
  276. #define LCD_Off         LCD_L0_Off
  277. #define LCD_ReInit      LCD_L0_ReInit
  278. #define LCD_SetLUTEntry LCD_L0_SetLUTEntry
  279. #define LCD_CC_UNLOCK (0)    /* Default mode: Cache is transparent */
  280. #define LCD_CC_LOCK   (1)    /* Cache is locked, no write operations */
  281. #define LCD_CC_FLUSH  (2)    /* Flush cache, do not change mode */
  282. U8 LCD_L0_ControlCache(U8 mode);
  283. /* Check if controller is still properly initialized */
  284. int  LCD_L0_CheckInit(void);        /* returns if init is still O.K.
  285.                                       by reading all available registers of
  286.                                       Display controller.
  287.                                       0: Init O.K.
  288.                                     */
  289. #define LCD_ControlCache LCD_L0_ControlCache
  290. /*
  291.         ******************************************
  292.         *                                        *
  293.         *        Support for paging              *
  294.         *                                        *
  295.         ******************************************
  296. */
  297. int LCD_SelPage  (int NewPage);    /* returns formerly sel. page */
  298. int LCD_ShowPage (int NewPage);    /* sets / returns visible page */
  299. int LCD_GetSelPage (void);         /* returns selected page */
  300. int LCD_GetVisPage (void);         /* returns visible page */
  301. /*      *************************************************************
  302.         *                                                           *
  303.         *      LCD  imports                                         *
  304.         *                  (for routines in LCDColor)               *
  305.         *                                                           *
  306.         *************************************************************
  307. */
  308.   
  309. int              LCD_Color2Index     (LCD_COLOR Color);
  310. LCD_COLOR        LCD_Index2Color     (int Index);
  311. /*********************************************************************
  312. *
  313. *       LCD_X_...
  314. *
  315. **********************************************************************
  316. */
  317. void LCD_X_Init(void);
  318. void LCD_X_On  (void);
  319. void LCD_X_Off (void);
  320. #endif /* LCD_H */