RT1050 GUI demo using emWin library

Committer:
alejandroRL
Date:
Thu Sep 20 19:16:34 2018 +0000
Revision:
0:dd702039127a
emWin GUI Demo for RT1050

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alejandroRL 0:dd702039127a 1 /*********************************************************************
alejandroRL 0:dd702039127a 2 * SEGGER Microcontroller GmbH & Co. KG *
alejandroRL 0:dd702039127a 3 * Solutions for real time microcontroller applications *
alejandroRL 0:dd702039127a 4 **********************************************************************
alejandroRL 0:dd702039127a 5 * *
alejandroRL 0:dd702039127a 6 * (c) 1996 - 2016 SEGGER Microcontroller GmbH & Co. KG *
alejandroRL 0:dd702039127a 7 * *
alejandroRL 0:dd702039127a 8 * Internet: www.segger.com Support: support@segger.com *
alejandroRL 0:dd702039127a 9 * *
alejandroRL 0:dd702039127a 10 **********************************************************************
alejandroRL 0:dd702039127a 11
alejandroRL 0:dd702039127a 12 ** emWin V5.38 - Graphical user interface for embedded applications **
alejandroRL 0:dd702039127a 13 All Intellectual Property rights in the Software belongs to SEGGER.
alejandroRL 0:dd702039127a 14 emWin is protected by international copyright laws. Knowledge of the
alejandroRL 0:dd702039127a 15 source code may not be used to write a similar product. This file may
alejandroRL 0:dd702039127a 16 only be used in accordance with the following terms:
alejandroRL 0:dd702039127a 17
alejandroRL 0:dd702039127a 18 The software has been licensed to NXP Semiconductors USA, Inc. whose
alejandroRL 0:dd702039127a 19 registered office is situated at 411 E. Plumeria Drive, San Jose,
alejandroRL 0:dd702039127a 20 CA 95134, USA solely for the purposes of creating libraries for
alejandroRL 0:dd702039127a 21 NXPs M0, M3/M4 and ARM7/9 processor-based devices, sublicensed and
alejandroRL 0:dd702039127a 22 distributed under the terms and conditions of the NXP End User License
alejandroRL 0:dd702039127a 23 Agreement.
alejandroRL 0:dd702039127a 24 Full source code is available at: www.segger.com
alejandroRL 0:dd702039127a 25
alejandroRL 0:dd702039127a 26 We appreciate your understanding and fairness.
alejandroRL 0:dd702039127a 27 ----------------------------------------------------------------------
alejandroRL 0:dd702039127a 28 Licensing information
alejandroRL 0:dd702039127a 29
alejandroRL 0:dd702039127a 30 Licensor: SEGGER Microcontroller Systems LLC
alejandroRL 0:dd702039127a 31 Licensed to: NXP Semiconductors, 1109 McKay Dr, M/S 76, San Jose, CA 95131, USA
alejandroRL 0:dd702039127a 32 Licensed SEGGER software: emWin
alejandroRL 0:dd702039127a 33 License number: GUI-00186
alejandroRL 0:dd702039127a 34 License model: emWin License Agreement, dated August 20th 2011
alejandroRL 0:dd702039127a 35 Licensed product: -
alejandroRL 0:dd702039127a 36 Licensed platform: NXP's ARM 7/9, Cortex-M0,M3,M4
alejandroRL 0:dd702039127a 37 Licensed number of seats: -
alejandroRL 0:dd702039127a 38 ----------------------------------------------------------------------
alejandroRL 0:dd702039127a 39 File : LCD.h
alejandroRL 0:dd702039127a 40 Purpose : Declares LCD interface functions
alejandroRL 0:dd702039127a 41 ----------------------------------------------------------------------
alejandroRL 0:dd702039127a 42 */
alejandroRL 0:dd702039127a 43
alejandroRL 0:dd702039127a 44 #ifndef LCD_H
alejandroRL 0:dd702039127a 45 #define LCD_H
alejandroRL 0:dd702039127a 46
alejandroRL 0:dd702039127a 47 #include "GUI_ConfDefaults.h" /* Used for GUI_CONST_STORAGE */
alejandroRL 0:dd702039127a 48 #include "Global.h"
alejandroRL 0:dd702039127a 49
alejandroRL 0:dd702039127a 50 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 51 extern "C" { /* Make sure we have C-declarations in C++ programs */
alejandroRL 0:dd702039127a 52 #endif
alejandroRL 0:dd702039127a 53
alejandroRL 0:dd702039127a 54 /*********************************************************************
alejandroRL 0:dd702039127a 55 *
alejandroRL 0:dd702039127a 56 * Basic type defines
alejandroRL 0:dd702039127a 57 *
alejandroRL 0:dd702039127a 58 * The follwing are defines for types used in the LCD-driver and the
alejandroRL 0:dd702039127a 59 * GUI layers on top of that. Since "C" does not provide data types of
alejandroRL 0:dd702039127a 60 * fixed length which are identical on all platforms, this is done here.
alejandroRL 0:dd702039127a 61 * For most 16/32 controllers, the settings will work fine. However, if
alejandroRL 0:dd702039127a 62 * you have similar defines in other sections of your program, you might
alejandroRL 0:dd702039127a 63 * want to change or relocate these defines, e.g. in a TYPE.h file.
alejandroRL 0:dd702039127a 64 */
alejandroRL 0:dd702039127a 65 #define I16P I16 /* signed 16 bits OR MORE ! */
alejandroRL 0:dd702039127a 66 #define U16P U16 /* unsigned 16 bits OR MORE ! */
alejandroRL 0:dd702039127a 67
alejandroRL 0:dd702039127a 68 /*********************************************************************
alejandroRL 0:dd702039127a 69 *
alejandroRL 0:dd702039127a 70 * Settings for windows simulation
alejandroRL 0:dd702039127a 71 *
alejandroRL 0:dd702039127a 72 * Some settings in the configuration may conflict with the values required
alejandroRL 0:dd702039127a 73 * in the Simulation. This is why we ignore the target settings for data
alejandroRL 0:dd702039127a 74 * types and use the correct settings for the simulation.
alejandroRL 0:dd702039127a 75 * (U32 could be defined as long, which would yield a 64 bit type on
alejandroRL 0:dd702039127a 76 * the PC)
alejandroRL 0:dd702039127a 77 */
alejandroRL 0:dd702039127a 78 #ifdef WIN32
alejandroRL 0:dd702039127a 79 #pragma warning( disable : 4244 ) // Disable warning messages in simulation
alejandroRL 0:dd702039127a 80 #pragma warning( disable : 4761 ) // Disable warning "integral size mismatch in argument; conversion supplied"
alejandroRL 0:dd702039127a 81 #endif
alejandroRL 0:dd702039127a 82
alejandroRL 0:dd702039127a 83 /*********************************************************************
alejandroRL 0:dd702039127a 84 *
alejandroRL 0:dd702039127a 85 * Constants
alejandroRL 0:dd702039127a 86 */
alejandroRL 0:dd702039127a 87 #define LCD_ERR0 (0x10)
alejandroRL 0:dd702039127a 88 #define LCD_ERR_CONTROLLER_NOT_FOUND (LCD_ERR0+1)
alejandroRL 0:dd702039127a 89 #define LCD_ERR_MEMORY (LCD_ERR0+2)
alejandroRL 0:dd702039127a 90
alejandroRL 0:dd702039127a 91 /*********************************************************************
alejandroRL 0:dd702039127a 92 *
alejandroRL 0:dd702039127a 93 * Drawing modes
alejandroRL 0:dd702039127a 94 */
alejandroRL 0:dd702039127a 95 #define LCD_DRAWMODE_NORMAL (0)
alejandroRL 0:dd702039127a 96 #define LCD_DRAWMODE_XOR (1<<0)
alejandroRL 0:dd702039127a 97 #define LCD_DRAWMODE_TRANS (1<<1)
alejandroRL 0:dd702039127a 98 #define LCD_DRAWMODE_REV (1<<2)
alejandroRL 0:dd702039127a 99
alejandroRL 0:dd702039127a 100 /*********************************************************************
alejandroRL 0:dd702039127a 101 *
alejandroRL 0:dd702039127a 102 * Typedefs
alejandroRL 0:dd702039127a 103 */
alejandroRL 0:dd702039127a 104 typedef int LCD_DRAWMODE;
alejandroRL 0:dd702039127a 105 typedef U32 LCD_COLOR;
alejandroRL 0:dd702039127a 106
alejandroRL 0:dd702039127a 107 /*********************************************************************
alejandroRL 0:dd702039127a 108 *
alejandroRL 0:dd702039127a 109 * Data structures
alejandroRL 0:dd702039127a 110 */
alejandroRL 0:dd702039127a 111 typedef struct { I16P x,y; } GUI_POINT;
alejandroRL 0:dd702039127a 112 typedef struct { I16 x0,y0,x1,y1; } LCD_RECT;
alejandroRL 0:dd702039127a 113
alejandroRL 0:dd702039127a 114 typedef struct {
alejandroRL 0:dd702039127a 115 int NumEntries;
alejandroRL 0:dd702039127a 116 char HasTrans;
alejandroRL 0:dd702039127a 117 const LCD_COLOR * pPalEntries;
alejandroRL 0:dd702039127a 118 } LCD_LOGPALETTE;
alejandroRL 0:dd702039127a 119
alejandroRL 0:dd702039127a 120 /* This is used for the simulation only ! */
alejandroRL 0:dd702039127a 121 typedef struct {
alejandroRL 0:dd702039127a 122 int x,y;
alejandroRL 0:dd702039127a 123 unsigned char KeyStat;
alejandroRL 0:dd702039127a 124 } LCD_tMouseState;
alejandroRL 0:dd702039127a 125
alejandroRL 0:dd702039127a 126 typedef struct {
alejandroRL 0:dd702039127a 127 int NumEntries;
alejandroRL 0:dd702039127a 128 const LCD_COLOR * pPalEntries;
alejandroRL 0:dd702039127a 129 } LCD_PHYSPALETTE;
alejandroRL 0:dd702039127a 130
alejandroRL 0:dd702039127a 131 /*********************************************************************
alejandroRL 0:dd702039127a 132 *
alejandroRL 0:dd702039127a 133 * LCD_L0_... color conversion
alejandroRL 0:dd702039127a 134 */
alejandroRL 0:dd702039127a 135 typedef LCD_COLOR tLCDDEV_Index2Color (LCD_PIXELINDEX Index);
alejandroRL 0:dd702039127a 136 typedef LCD_PIXELINDEX tLCDDEV_Color2Index (LCD_COLOR Color);
alejandroRL 0:dd702039127a 137 typedef LCD_PIXELINDEX tLCDDEV_GetIndexMask (void);
alejandroRL 0:dd702039127a 138
alejandroRL 0:dd702039127a 139 typedef void tLCDDEV_Index2ColorBulk(void * pIndex, LCD_COLOR * pColor, U32 NumItems, U8 SizeOfIndex);
alejandroRL 0:dd702039127a 140 typedef void tLCDDEV_Color2IndexBulk(LCD_COLOR * pColor, void * pIndex, U32 NumItems, U8 SizeOfIndex);
alejandroRL 0:dd702039127a 141
alejandroRL 0:dd702039127a 142 /*********************************************************************
alejandroRL 0:dd702039127a 143 *
alejandroRL 0:dd702039127a 144 * Color conversion API tables
alejandroRL 0:dd702039127a 145 */
alejandroRL 0:dd702039127a 146 typedef struct {
alejandroRL 0:dd702039127a 147 tLCDDEV_Color2Index * pfColor2Index;
alejandroRL 0:dd702039127a 148 tLCDDEV_Index2Color * pfIndex2Color;
alejandroRL 0:dd702039127a 149 tLCDDEV_GetIndexMask * pfGetIndexMask;
alejandroRL 0:dd702039127a 150 int NoAlpha;
alejandroRL 0:dd702039127a 151 tLCDDEV_Color2IndexBulk * pfColor2IndexBulk;
alejandroRL 0:dd702039127a 152 tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk;
alejandroRL 0:dd702039127a 153 } LCD_API_COLOR_CONV;
alejandroRL 0:dd702039127a 154
alejandroRL 0:dd702039127a 155 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_0;
alejandroRL 0:dd702039127a 156 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1;
alejandroRL 0:dd702039127a 157 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_2;
alejandroRL 0:dd702039127a 158 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_4;
alejandroRL 0:dd702039127a 159 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_5;
alejandroRL 0:dd702039127a 160 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_8;
alejandroRL 0:dd702039127a 161 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_16;
alejandroRL 0:dd702039127a 162 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1_24;
alejandroRL 0:dd702039127a 163 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_2;
alejandroRL 0:dd702039127a 164 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_4;
alejandroRL 0:dd702039127a 165 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_5;
alejandroRL 0:dd702039127a 166 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_6;
alejandroRL 0:dd702039127a 167 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8;
alejandroRL 0:dd702039127a 168 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_16;
alejandroRL 0:dd702039127a 169 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1616I;
alejandroRL 0:dd702039127a 170 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_111;
alejandroRL 0:dd702039127a 171 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_222;
alejandroRL 0:dd702039127a 172 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_233;
alejandroRL 0:dd702039127a 173 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_323;
alejandroRL 0:dd702039127a 174 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_332;
alejandroRL 0:dd702039127a 175 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_444_12;
alejandroRL 0:dd702039127a 176 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_444_12_1;
alejandroRL 0:dd702039127a 177 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_444_16;
alejandroRL 0:dd702039127a 178 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_555;
alejandroRL 0:dd702039127a 179 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_565;
alejandroRL 0:dd702039127a 180 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_556;
alejandroRL 0:dd702039127a 181 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_655;
alejandroRL 0:dd702039127a 182 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_666;
alejandroRL 0:dd702039127a 183 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_666_9;
alejandroRL 0:dd702039127a 184 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_822216;
alejandroRL 0:dd702039127a 185 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_84444;
alejandroRL 0:dd702039127a 186 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8666;
alejandroRL 0:dd702039127a 187 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8666_1;
alejandroRL 0:dd702039127a 188 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_88666I;
alejandroRL 0:dd702039127a 189 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_888;
alejandroRL 0:dd702039127a 190 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8888;
alejandroRL 0:dd702039127a 191 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M111;
alejandroRL 0:dd702039127a 192 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M1555I;
alejandroRL 0:dd702039127a 193 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M222;
alejandroRL 0:dd702039127a 194 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M233;
alejandroRL 0:dd702039127a 195 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M323;
alejandroRL 0:dd702039127a 196 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M332;
alejandroRL 0:dd702039127a 197 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M4444I;
alejandroRL 0:dd702039127a 198 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M444_12;
alejandroRL 0:dd702039127a 199 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M444_12_1;
alejandroRL 0:dd702039127a 200 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M444_16;
alejandroRL 0:dd702039127a 201 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M555;
alejandroRL 0:dd702039127a 202 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M565;
alejandroRL 0:dd702039127a 203 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M556;
alejandroRL 0:dd702039127a 204 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M655;
alejandroRL 0:dd702039127a 205 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M666;
alejandroRL 0:dd702039127a 206 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M666_9;
alejandroRL 0:dd702039127a 207 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M8565;
alejandroRL 0:dd702039127a 208 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M888;
alejandroRL 0:dd702039127a 209 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M8888;
alejandroRL 0:dd702039127a 210 extern const LCD_API_COLOR_CONV LCD_API_ColorConv_M8888I;
alejandroRL 0:dd702039127a 211
alejandroRL 0:dd702039127a 212 #define GUICC_0 &LCD_API_ColorConv_0
alejandroRL 0:dd702039127a 213 #define GUICC_1 &LCD_API_ColorConv_1
alejandroRL 0:dd702039127a 214 #define GUICC_1_2 &LCD_API_ColorConv_1_2
alejandroRL 0:dd702039127a 215 #define GUICC_1_4 &LCD_API_ColorConv_1_4
alejandroRL 0:dd702039127a 216 #define GUICC_1_5 &LCD_API_ColorConv_1_5
alejandroRL 0:dd702039127a 217 #define GUICC_1_8 &LCD_API_ColorConv_1_8
alejandroRL 0:dd702039127a 218 #define GUICC_1_16 &LCD_API_ColorConv_1_16
alejandroRL 0:dd702039127a 219 #define GUICC_1_24 &LCD_API_ColorConv_1_24
alejandroRL 0:dd702039127a 220 #define GUICC_2 &LCD_API_ColorConv_2
alejandroRL 0:dd702039127a 221 #define GUICC_4 &LCD_API_ColorConv_4
alejandroRL 0:dd702039127a 222 #define GUICC_5 &LCD_API_ColorConv_5
alejandroRL 0:dd702039127a 223 #define GUICC_6 &LCD_API_ColorConv_6
alejandroRL 0:dd702039127a 224 #define GUICC_8 &LCD_API_ColorConv_8
alejandroRL 0:dd702039127a 225 #define GUICC_16 &LCD_API_ColorConv_16
alejandroRL 0:dd702039127a 226 #define GUICC_1616I &LCD_API_ColorConv_1616I
alejandroRL 0:dd702039127a 227 #define GUICC_111 &LCD_API_ColorConv_111
alejandroRL 0:dd702039127a 228 #define GUICC_222 &LCD_API_ColorConv_222
alejandroRL 0:dd702039127a 229 #define GUICC_233 &LCD_API_ColorConv_233
alejandroRL 0:dd702039127a 230 #define GUICC_323 &LCD_API_ColorConv_323
alejandroRL 0:dd702039127a 231 #define GUICC_332 &LCD_API_ColorConv_332
alejandroRL 0:dd702039127a 232 #define GUICC_M4444I &LCD_API_ColorConv_M4444I
alejandroRL 0:dd702039127a 233 #define GUICC_444_12 &LCD_API_ColorConv_444_12
alejandroRL 0:dd702039127a 234 #define GUICC_444_12_1 &LCD_API_ColorConv_444_12_1
alejandroRL 0:dd702039127a 235 #define GUICC_444_16 &LCD_API_ColorConv_444_16
alejandroRL 0:dd702039127a 236 #define GUICC_555 &LCD_API_ColorConv_555
alejandroRL 0:dd702039127a 237 #define GUICC_565 &LCD_API_ColorConv_565
alejandroRL 0:dd702039127a 238 #define GUICC_556 &LCD_API_ColorConv_556
alejandroRL 0:dd702039127a 239 #define GUICC_655 &LCD_API_ColorConv_655
alejandroRL 0:dd702039127a 240 #define GUICC_666 &LCD_API_ColorConv_666
alejandroRL 0:dd702039127a 241 #define GUICC_666_9 &LCD_API_ColorConv_666_9
alejandroRL 0:dd702039127a 242 #define GUICC_822216 &LCD_API_ColorConv_822216
alejandroRL 0:dd702039127a 243 #define GUICC_84444 &LCD_API_ColorConv_84444
alejandroRL 0:dd702039127a 244 #define GUICC_8666 &LCD_API_ColorConv_8666
alejandroRL 0:dd702039127a 245 #define GUICC_8666_1 &LCD_API_ColorConv_8666_1
alejandroRL 0:dd702039127a 246 #define GUICC_88666I &LCD_API_ColorConv_88666I
alejandroRL 0:dd702039127a 247 #define GUICC_888 &LCD_API_ColorConv_888
alejandroRL 0:dd702039127a 248 #define GUICC_8888 &LCD_API_ColorConv_8888
alejandroRL 0:dd702039127a 249 #define GUICC_M111 &LCD_API_ColorConv_M111
alejandroRL 0:dd702039127a 250 #define GUICC_M1555I &LCD_API_ColorConv_M1555I
alejandroRL 0:dd702039127a 251 #define GUICC_M222 &LCD_API_ColorConv_M222
alejandroRL 0:dd702039127a 252 #define GUICC_M233 &LCD_API_ColorConv_M233
alejandroRL 0:dd702039127a 253 #define GUICC_M323 &LCD_API_ColorConv_M323
alejandroRL 0:dd702039127a 254 #define GUICC_M332 &LCD_API_ColorConv_M332
alejandroRL 0:dd702039127a 255 #define GUICC_M444_12 &LCD_API_ColorConv_M444_12
alejandroRL 0:dd702039127a 256 #define GUICC_M444_12_1 &LCD_API_ColorConv_M444_12_1
alejandroRL 0:dd702039127a 257 #define GUICC_M444_16 &LCD_API_ColorConv_M444_16
alejandroRL 0:dd702039127a 258 #define GUICC_M555 &LCD_API_ColorConv_M555
alejandroRL 0:dd702039127a 259 #define GUICC_M565 &LCD_API_ColorConv_M565
alejandroRL 0:dd702039127a 260 #define GUICC_M556 &LCD_API_ColorConv_M556
alejandroRL 0:dd702039127a 261 #define GUICC_M655 &LCD_API_ColorConv_M655
alejandroRL 0:dd702039127a 262 #define GUICC_M666 &LCD_API_ColorConv_M666
alejandroRL 0:dd702039127a 263 #define GUICC_M666_9 &LCD_API_ColorConv_M666_9
alejandroRL 0:dd702039127a 264 #define GUICC_M8565 &LCD_API_ColorConv_M8565
alejandroRL 0:dd702039127a 265 #define GUICC_M888 &LCD_API_ColorConv_M888
alejandroRL 0:dd702039127a 266 #define GUICC_M8888 &LCD_API_ColorConv_M8888
alejandroRL 0:dd702039127a 267 #define GUICC_M8888I &LCD_API_ColorConv_M8888I
alejandroRL 0:dd702039127a 268
alejandroRL 0:dd702039127a 269 void GUICC_M1555I_SetCustColorConv(tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
alejandroRL 0:dd702039127a 270 void GUICC_M565_SetCustColorConv (tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
alejandroRL 0:dd702039127a 271 void GUICC_M4444I_SetCustColorConv(tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
alejandroRL 0:dd702039127a 272 void GUICC_M888_SetCustColorConv (tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
alejandroRL 0:dd702039127a 273 void GUICC_M8888I_SetCustColorConv(tLCDDEV_Color2IndexBulk * pfColor2IndexBulk, tLCDDEV_Index2ColorBulk * pfIndex2ColorBulk);
alejandroRL 0:dd702039127a 274
alejandroRL 0:dd702039127a 275 /*********************************************************************
alejandroRL 0:dd702039127a 276 *
alejandroRL 0:dd702039127a 277 * Compatibility defines for older versions
alejandroRL 0:dd702039127a 278 */
alejandroRL 0:dd702039127a 279 #define GUI_COLOR_CONV_1 GUICC_1
alejandroRL 0:dd702039127a 280 #define GUI_COLOR_CONV_2 GUICC_2
alejandroRL 0:dd702039127a 281 #define GUI_COLOR_CONV_4 GUICC_4
alejandroRL 0:dd702039127a 282 #define GUI_COLOR_CONV_8666 GUICC_8666
alejandroRL 0:dd702039127a 283 #define GUI_COLOR_CONV_888 GUICC_888
alejandroRL 0:dd702039127a 284 #define GUI_COLOR_CONV_8888 GUICC_8888
alejandroRL 0:dd702039127a 285 #define GUI_COLOR_CONV_565 GUICC_565
alejandroRL 0:dd702039127a 286 #define GUI_COLOR_CONV_M565 GUICC_M565
alejandroRL 0:dd702039127a 287
alejandroRL 0:dd702039127a 288 /*********************************************************************
alejandroRL 0:dd702039127a 289 *
alejandroRL 0:dd702039127a 290 * LCDDEV function table
alejandroRL 0:dd702039127a 291 *
alejandroRL 0:dd702039127a 292 * Below the routines which need to in an LCDDEV routine table are
alejandroRL 0:dd702039127a 293 * defined. All of these routines have to be in the low-level driver
alejandroRL 0:dd702039127a 294 * (LCD_L0) or in the memory device which can be used to replace the
alejandroRL 0:dd702039127a 295 * driver.
alejandroRL 0:dd702039127a 296 * The one exception to this is the SetClipRect routine, which would
alejandroRL 0:dd702039127a 297 * be identical for all drivers and is therefor contained in the
alejandroRL 0:dd702039127a 298 * level above (LCD).
alejandroRL 0:dd702039127a 299 */
alejandroRL 0:dd702039127a 300 typedef void tLCDDEV_DrawPixel (int x, int y);
alejandroRL 0:dd702039127a 301 typedef void tLCDDEV_DrawHLine (int x0, int y0, int x1);
alejandroRL 0:dd702039127a 302 typedef void tLCDDEV_DrawVLine (int x , int y0, int y1);
alejandroRL 0:dd702039127a 303 typedef void tLCDDEV_FillRect (int x0, int y0, int x1, int y1);
alejandroRL 0:dd702039127a 304 typedef unsigned int tLCDDEV_GetPixelIndex(int x, int y);
alejandroRL 0:dd702039127a 305 typedef void tLCDDEV_SetPixelIndex(int x, int y, int ColorIndex);
alejandroRL 0:dd702039127a 306 typedef void tLCDDEV_XorPixel (int x, int y);
alejandroRL 0:dd702039127a 307 typedef void tLCDDEV_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
alejandroRL 0:dd702039127a 308 typedef void tLCDDEV_FillPolygonAA(const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
alejandroRL 0:dd702039127a 309 typedef void tLCDDEV_GetRect (LCD_RECT * pRect);
alejandroRL 0:dd702039127a 310 typedef int tLCDDEV_Init (void);
alejandroRL 0:dd702039127a 311 typedef void tLCDDEV_On (void);
alejandroRL 0:dd702039127a 312 typedef void tLCDDEV_Off (void);
alejandroRL 0:dd702039127a 313 typedef void tLCDDEV_SetLUTEntry (U8 Pos, LCD_COLOR color);
alejandroRL 0:dd702039127a 314 typedef void * tLCDDEV_GetDevFunc (int Index);
alejandroRL 0:dd702039127a 315 typedef I32 tLCDDEV_GetDevProp (int Index);
alejandroRL 0:dd702039127a 316 typedef void tLCDDEV_SetOrg (int x, int y);
alejandroRL 0:dd702039127a 317
alejandroRL 0:dd702039127a 318 /*********************************************************************
alejandroRL 0:dd702039127a 319 *
alejandroRL 0:dd702039127a 320 * Memory device API tables
alejandroRL 0:dd702039127a 321 */
alejandroRL 0:dd702039127a 322 typedef struct GUI_DEVICE GUI_DEVICE;
alejandroRL 0:dd702039127a 323 typedef struct GUI_DEVICE_API GUI_DEVICE_API;
alejandroRL 0:dd702039127a 324
alejandroRL 0:dd702039127a 325 typedef void tLCDDEV_DrawBitmap (int x0, int y0, int xsize, int ysize,
alejandroRL 0:dd702039127a 326 int BitsPerPixel, int BytesPerLine,
alejandroRL 0:dd702039127a 327 const U8 * pData, int Diff,
alejandroRL 0:dd702039127a 328 const void * pTrans); /* Really LCD_PIXELINDEX, but is void to avoid compiler warnings */
alejandroRL 0:dd702039127a 329 #define GUI_MEMDEV_APILIST_1 &GUI_MEMDEV_DEVICE_1
alejandroRL 0:dd702039127a 330 #define GUI_MEMDEV_APILIST_8 &GUI_MEMDEV_DEVICE_8
alejandroRL 0:dd702039127a 331 #define GUI_MEMDEV_APILIST_16 &GUI_MEMDEV_DEVICE_16
alejandroRL 0:dd702039127a 332 #define GUI_MEMDEV_APILIST_32 &GUI_MEMDEV_DEVICE_32
alejandroRL 0:dd702039127a 333
alejandroRL 0:dd702039127a 334 /*********************************************************************
alejandroRL 0:dd702039127a 335 *
alejandroRL 0:dd702039127a 336 * Defines for device capabilities
alejandroRL 0:dd702039127a 337 *
alejandroRL 0:dd702039127a 338 * The following is the list of device capabilities which can, but do
alejandroRL 0:dd702039127a 339 * not have to be implemented in the driver. This way the driver can be
alejandroRL 0:dd702039127a 340 * enhanced in the future without affecting the driver interface,
alejandroRL 0:dd702039127a 341 * keeping older drivers compatible.
alejandroRL 0:dd702039127a 342 * More DevCaps can always be added in the future, as older drivers
alejandroRL 0:dd702039127a 343 * are guaranteed to return 0 for all unimplemented features or queries.
alejandroRL 0:dd702039127a 344 *
alejandroRL 0:dd702039127a 345 * The values below define the legal parameters to the LCD_GetDeviceCaps
alejandroRL 0:dd702039127a 346 * and the LCD_GetpCapFunc routines.
alejandroRL 0:dd702039127a 347 */
alejandroRL 0:dd702039127a 348
alejandroRL 0:dd702039127a 349 #define LCD_DEVCAP_XSIZE 0x01 /* Quest horiz. res. of display */
alejandroRL 0:dd702039127a 350 #define LCD_DEVCAP_YSIZE 0x02 /* Quest vert. res. of display */
alejandroRL 0:dd702039127a 351 #define LCD_DEVCAP_VXSIZE 0x03 /* Quest vert. res. of virtual disp.*/
alejandroRL 0:dd702039127a 352 #define LCD_DEVCAP_VYSIZE 0x04 /* Quest vert. res. of virtual disp.*/
alejandroRL 0:dd702039127a 353 #define LCD_DEVCAP_XORG 0x05 /* X-origin ... usually 0 */
alejandroRL 0:dd702039127a 354 #define LCD_DEVCAP_YORG 0x06 /* Y-origin ... usually 0 */
alejandroRL 0:dd702039127a 355 #define LCD_DEVCAP_CONTROLLER 0x07 /* LCD Controller (Numerical) */
alejandroRL 0:dd702039127a 356 #define LCD_DEVCAP_BITSPERPIXEL 0x08 /* Bits per pixel ... 1/2/4/8 */
alejandroRL 0:dd702039127a 357 #define LCD_DEVCAP_NUMCOLORS 0x09 /* Quest number of colors */
alejandroRL 0:dd702039127a 358 #define LCD_DEVCAP_XMAG 0x0A
alejandroRL 0:dd702039127a 359 #define LCD_DEVCAP_YMAG 0x0B
alejandroRL 0:dd702039127a 360 #define LCD_DEVCAP_MIRROR_X 0x0C
alejandroRL 0:dd702039127a 361 #define LCD_DEVCAP_MIRROR_Y 0x0D
alejandroRL 0:dd702039127a 362 #define LCD_DEVCAP_SWAP_XY 0x0E
alejandroRL 0:dd702039127a 363 #define LCD_DEVCAP_SWAP_RB 0x0F
alejandroRL 0:dd702039127a 364
alejandroRL 0:dd702039127a 365 int LCD_GetXSizeMax(void);
alejandroRL 0:dd702039127a 366 int LCD_GetYSizeMax(void);
alejandroRL 0:dd702039127a 367 int LCD_GetVXSizeMax(void);
alejandroRL 0:dd702039127a 368 int LCD_GetVYSizeMax(void);
alejandroRL 0:dd702039127a 369 int LCD_GetBitsPerPixelMax(void);
alejandroRL 0:dd702039127a 370 void LCD_SetDisplaySize(int xSizeDisplay, int ySizeDisplay);
alejandroRL 0:dd702039127a 371 int LCD_GetXSizeDisplay(void);
alejandroRL 0:dd702039127a 372 int LCD_GetYSizeDisplay(void);
alejandroRL 0:dd702039127a 373
alejandroRL 0:dd702039127a 374 int LCD_GetXSizeEx (int LayerIndex);
alejandroRL 0:dd702039127a 375 int LCD_GetYSizeEx (int LayerIndex);
alejandroRL 0:dd702039127a 376 int LCD_GetVXSizeEx (int LayerIndex);
alejandroRL 0:dd702039127a 377 int LCD_GetVYSizeEx (int LayerIndex);
alejandroRL 0:dd702039127a 378 int LCD_GetBitsPerPixelEx (int LayerIndex);
alejandroRL 0:dd702039127a 379 U32 LCD_GetNumColorsEx (int LayerIndex);
alejandroRL 0:dd702039127a 380 int LCD_GetXMagEx (int LayerIndex);
alejandroRL 0:dd702039127a 381 int LCD_GetYMagEx (int LayerIndex);
alejandroRL 0:dd702039127a 382 int LCD_GetMirrorXEx (int LayerIndex);
alejandroRL 0:dd702039127a 383 int LCD_GetMirrorYEx (int LayerIndex);
alejandroRL 0:dd702039127a 384 int LCD_GetSwapXYEx (int LayerIndex);
alejandroRL 0:dd702039127a 385 int LCD_GetReversLUTEx (int LayerIndex);
alejandroRL 0:dd702039127a 386 int LCD_GetPhysColorsInRAMEx(int LayerIndex);
alejandroRL 0:dd702039127a 387
alejandroRL 0:dd702039127a 388 int LCD_GetXSize (void);
alejandroRL 0:dd702039127a 389 int LCD_GetYSize (void);
alejandroRL 0:dd702039127a 390 int LCD_GetVXSize (void);
alejandroRL 0:dd702039127a 391 int LCD_GetVYSize (void);
alejandroRL 0:dd702039127a 392 int LCD_GetBitsPerPixel (void);
alejandroRL 0:dd702039127a 393 U32 LCD_GetNumColors (void);
alejandroRL 0:dd702039127a 394 int LCD_GetXMag (void);
alejandroRL 0:dd702039127a 395 int LCD_GetYMag (void);
alejandroRL 0:dd702039127a 396 int LCD_GetMirrorX (void);
alejandroRL 0:dd702039127a 397 int LCD_GetMirrorY (void);
alejandroRL 0:dd702039127a 398 int LCD_GetSwapXY (void);
alejandroRL 0:dd702039127a 399 int LCD_GetReversLUT (void);
alejandroRL 0:dd702039127a 400 int LCD_GetPhysColorsInRAM (void);
alejandroRL 0:dd702039127a 401
alejandroRL 0:dd702039127a 402 I32 LCD__GetBPP (U32 IndexMask);
alejandroRL 0:dd702039127a 403 I32 LCD__GetBPPDevice(U32 IndexMask);
alejandroRL 0:dd702039127a 404
alejandroRL 0:dd702039127a 405 tLCDDEV_Index2Color * LCD_GetpfIndex2ColorEx(int LayerIndex);
alejandroRL 0:dd702039127a 406 tLCDDEV_Color2Index * LCD_GetpfColor2IndexEx(int LayerIndex);
alejandroRL 0:dd702039127a 407
alejandroRL 0:dd702039127a 408 tLCDDEV_Color2Index * LCD_GetpfColor2Index(void);
alejandroRL 0:dd702039127a 409
alejandroRL 0:dd702039127a 410 int LCD_GetNumLayers(void);
alejandroRL 0:dd702039127a 411
alejandroRL 0:dd702039127a 412 LCD_COLOR * LCD_GetPalette (void);
alejandroRL 0:dd702039127a 413 LCD_COLOR * LCD_GetPaletteEx(int LayerIndex);
alejandroRL 0:dd702039127a 414
alejandroRL 0:dd702039127a 415 void (* LCD_GetDevFunc(int LayerIndex, int Item))(void);
alejandroRL 0:dd702039127a 416
alejandroRL 0:dd702039127a 417 /*********************************************************************
alejandroRL 0:dd702039127a 418 *
alejandroRL 0:dd702039127a 419 * Values for requesting and setting function pointers (display driver)
alejandroRL 0:dd702039127a 420 */
alejandroRL 0:dd702039127a 421 /* Request of a function pointer for... */
alejandroRL 0:dd702039127a 422 #define LCD_DEVFUNC_READRECT 0x01 /* ...reading a rectangular display area */
alejandroRL 0:dd702039127a 423 #define LCD_DEVFUNC_SETALPHA 0x02 /* ...setting the alpha blending factor */
alejandroRL 0:dd702039127a 424 #define LCD_DEVFUNC_SETPOS 0x03 /* ...setting the layer position */
alejandroRL 0:dd702039127a 425 #define LCD_DEVFUNC_GETPOS 0x04 /* ...getting the layer position */
alejandroRL 0:dd702039127a 426 #define LCD_DEVFUNC_SETSIZE 0x05 /* ...setting the layer size */
alejandroRL 0:dd702039127a 427 #define LCD_DEVFUNC_SETVIS 0x06 /* ...setting the visibility of a layer */
alejandroRL 0:dd702039127a 428 #define LCD_DEVFUNC_24BPP 0x07 /* ...drawing 24bpp bitmaps */
alejandroRL 0:dd702039127a 429 #define LCD_DEVFUNC_NEXT_PIXEL 0x08 /* ...drawing a bitmap pixel by pixel */
alejandroRL 0:dd702039127a 430 #define LCD_DEVFUNC_SET_VRAM_ADDR 0x09 /* ...setting the VRAM address */
alejandroRL 0:dd702039127a 431 #define LCD_DEVFUNC_SET_VSIZE 0x0A /* ...setting the VRAM size */
alejandroRL 0:dd702039127a 432 #define LCD_DEVFUNC_SET_SIZE 0x0B /* ...setting the display size */
alejandroRL 0:dd702039127a 433 #define LCD_DEVFUNC_INIT 0x0C /* ...initializing the display controller */
alejandroRL 0:dd702039127a 434 #define LCD_DEVFUNC_CONTROLCACHE 0x0D /* ...controlling the cache */
alejandroRL 0:dd702039127a 435 #define LCD_DEVFUNC_ON 0x0E /* ...switching the display on */
alejandroRL 0:dd702039127a 436 #define LCD_DEVFUNC_OFF 0x0F /* ...switching the display off */
alejandroRL 0:dd702039127a 437 #define LCD_DEVFUNC_SETLUTENTRY 0x10 /* ...setting a LUT entry */
alejandroRL 0:dd702039127a 438 #define LCD_DEVFUNC_FILLPOLY 0x11 /* ...filling a polygon */
alejandroRL 0:dd702039127a 439 #define LCD_DEVFUNC_FILLPOLYAA 0x12 /* ...filling an antialiased polygon */
alejandroRL 0:dd702039127a 440 #define LCD_DEVFUNC_ALPHAMODE 0x13 /* ...setting the alpha blending mode */
alejandroRL 0:dd702039127a 441 #define LCD_DEVFUNC_CHROMAMODE 0x14 /* ...setting the chroma blending mode */
alejandroRL 0:dd702039127a 442 #define LCD_DEVFUNC_CHROMA 0x15 /* ...setting the chroma values */
alejandroRL 0:dd702039127a 443 #define LCD_DEVFUNC_SETFUNC 0x16 /* ...setting a function pointer */
alejandroRL 0:dd702039127a 444 #define LCD_DEVFUNC_REFRESH 0x17 /* ...refreshing the display */
alejandroRL 0:dd702039127a 445 #define LCD_DEVFUNC_SETRECT 0x18 /* ...setting the drawing rectangle */
alejandroRL 0:dd702039127a 446 /* Setting a function pointer for... */
alejandroRL 0:dd702039127a 447 #define LCD_DEVFUNC_FILLRECT 0x19 /* ...filling a rectangular area */
alejandroRL 0:dd702039127a 448 #define LCD_DEVFUNC_DRAWBMP_1BPP 0x20 /* ...drawing a 1bpp bitmap */
alejandroRL 0:dd702039127a 449 #define LCD_DEVFUNC_COPYBUFFER 0x21 /* ...copying complete frame buffers */
alejandroRL 0:dd702039127a 450 #define LCD_DEVFUNC_SHOWBUFFER 0x22 /* ...shows the given buffer */
alejandroRL 0:dd702039127a 451 #define LCD_DEVFUNC_COPYRECT 0x23 /* ...filling a rectangular area */
alejandroRL 0:dd702039127a 452 #define LCD_DEVFUNC_DRAWBMP_16BPP 0x24 /* ...drawing a 16bpp bitmap */
alejandroRL 0:dd702039127a 453 #define LCD_DEVFUNC_DRAWBMP_8BPP 0x25 /* ...drawing a 8bpp bitmap */
alejandroRL 0:dd702039127a 454 #define LCD_DEVFUNC_READPIXEL 0x26 /* ...reading a pixel index */
alejandroRL 0:dd702039127a 455 #define LCD_DEVFUNC_READMPIXELS 0x27 /* ...reading multiple pixel indices */
alejandroRL 0:dd702039127a 456 #define LCD_DEVFUNC_DRAWBMP_32BPP 0x28 /* ...drawing a 32bpp bitmap */
alejandroRL 0:dd702039127a 457
alejandroRL 0:dd702039127a 458 /*********************************************************************
alejandroRL 0:dd702039127a 459 *
alejandroRL 0:dd702039127a 460 * Values for requesting function pointers (memory devices)
alejandroRL 0:dd702039127a 461 */
alejandroRL 0:dd702039127a 462 /* Request of a function pointer for... */
alejandroRL 0:dd702039127a 463 #define MEMDEV_DEVFUNC_WRITETOACTIVE 0x16 /* ...writing the memory device */
alejandroRL 0:dd702039127a 464
alejandroRL 0:dd702039127a 465 /*********************************************************************
alejandroRL 0:dd702039127a 466 *
alejandroRL 0:dd702039127a 467 * Values for requesting data
alejandroRL 0:dd702039127a 468 */
alejandroRL 0:dd702039127a 469 /* Request pointer to... */
alejandroRL 0:dd702039127a 470 #define LCD_DEVDATA_MEMDEV 0x01 /* ...default memory device API */
alejandroRL 0:dd702039127a 471 #define LCD_DEVDATA_PHYSPAL 0x02 /* ...physical palette */
alejandroRL 0:dd702039127a 472
alejandroRL 0:dd702039127a 473 /*********************************************************************
alejandroRL 0:dd702039127a 474 *
alejandroRL 0:dd702039127a 475 * Structures for passing data to LCD_X_DisplayDriver()
alejandroRL 0:dd702039127a 476 */
alejandroRL 0:dd702039127a 477 typedef struct {
alejandroRL 0:dd702039127a 478 void * pVRAM;
alejandroRL 0:dd702039127a 479 } LCD_X_SETVRAMADDR_INFO;
alejandroRL 0:dd702039127a 480
alejandroRL 0:dd702039127a 481 typedef struct {
alejandroRL 0:dd702039127a 482 int xPos, yPos;
alejandroRL 0:dd702039127a 483 } LCD_X_SETORG_INFO;
alejandroRL 0:dd702039127a 484
alejandroRL 0:dd702039127a 485 typedef struct {
alejandroRL 0:dd702039127a 486 LCD_COLOR Color;
alejandroRL 0:dd702039127a 487 U8 Pos;
alejandroRL 0:dd702039127a 488 } LCD_X_SETLUTENTRY_INFO;
alejandroRL 0:dd702039127a 489
alejandroRL 0:dd702039127a 490 typedef struct {
alejandroRL 0:dd702039127a 491 int xSize, ySize;
alejandroRL 0:dd702039127a 492 } LCD_X_SETSIZE_INFO;
alejandroRL 0:dd702039127a 493
alejandroRL 0:dd702039127a 494 typedef struct {
alejandroRL 0:dd702039127a 495 int xPos, yPos;
alejandroRL 0:dd702039127a 496 int xLen, yLen;
alejandroRL 0:dd702039127a 497 int BytesPerPixel;
alejandroRL 0:dd702039127a 498 U32 Off;
alejandroRL 0:dd702039127a 499 } LCD_X_SETPOS_INFO;
alejandroRL 0:dd702039127a 500
alejandroRL 0:dd702039127a 501 typedef struct {
alejandroRL 0:dd702039127a 502 int Alpha;
alejandroRL 0:dd702039127a 503 } LCD_X_SETALPHA_INFO;
alejandroRL 0:dd702039127a 504
alejandroRL 0:dd702039127a 505 typedef struct {
alejandroRL 0:dd702039127a 506 int OnOff;
alejandroRL 0:dd702039127a 507 } LCD_X_SETVIS_INFO;
alejandroRL 0:dd702039127a 508
alejandroRL 0:dd702039127a 509 typedef struct {
alejandroRL 0:dd702039127a 510 int AlphaMode;
alejandroRL 0:dd702039127a 511 } LCD_X_SETALPHAMODE_INFO;
alejandroRL 0:dd702039127a 512
alejandroRL 0:dd702039127a 513 typedef struct {
alejandroRL 0:dd702039127a 514 int ChromaMode;
alejandroRL 0:dd702039127a 515 } LCD_X_SETCHROMAMODE_INFO;
alejandroRL 0:dd702039127a 516
alejandroRL 0:dd702039127a 517 typedef struct {
alejandroRL 0:dd702039127a 518 LCD_COLOR ChromaMin;
alejandroRL 0:dd702039127a 519 LCD_COLOR ChromaMax;
alejandroRL 0:dd702039127a 520 } LCD_X_SETCHROMA_INFO;
alejandroRL 0:dd702039127a 521
alejandroRL 0:dd702039127a 522 typedef struct {
alejandroRL 0:dd702039127a 523 int Index;
alejandroRL 0:dd702039127a 524 } LCD_X_SHOWBUFFER_INFO;
alejandroRL 0:dd702039127a 525
alejandroRL 0:dd702039127a 526 /*********************************************************************
alejandroRL 0:dd702039127a 527 *
alejandroRL 0:dd702039127a 528 * Commands for LCD_X_DisplayDriver()
alejandroRL 0:dd702039127a 529 */
alejandroRL 0:dd702039127a 530 #define LCD_X_INITCONTROLLER 0x01 /* Initializing the display controller */
alejandroRL 0:dd702039127a 531 #define LCD_X_SETVRAMADDR 0x02 /* Setting the video RAM address */
alejandroRL 0:dd702039127a 532 #define LCD_X_SETORG 0x03 /* Setting the origin within a layer */
alejandroRL 0:dd702039127a 533 #define LCD_X_SETLUTENTRY 0x04 /* Setting an entry of the LUT */
alejandroRL 0:dd702039127a 534 #define LCD_X_ON 0x05 /* Switching the display on */
alejandroRL 0:dd702039127a 535 #define LCD_X_OFF 0x06 /* Switching the display off */
alejandroRL 0:dd702039127a 536 #define LCD_X_SETSIZE 0x07 /* Setting the layer size */
alejandroRL 0:dd702039127a 537 #define LCD_X_SETPOS 0x08 /* Setting the layer position */
alejandroRL 0:dd702039127a 538 #define LCD_X_SETVIS 0x09 /* Setting the visibility of a layer */
alejandroRL 0:dd702039127a 539 #define LCD_X_SETALPHA 0x0A /* Setting the alpha value of the layer */
alejandroRL 0:dd702039127a 540 #define LCD_X_SETALPHAMODE 0x0B /* Setting the alpha blending mode */
alejandroRL 0:dd702039127a 541 #define LCD_X_SETCHROMAMODE 0x0C /* Setting the chroma blending mode */
alejandroRL 0:dd702039127a 542 #define LCD_X_SETCHROMA 0x0D /* Setting the chroma values */
alejandroRL 0:dd702039127a 543 #define LCD_X_SHOWBUFFER 0x0E /* Switching to the given buffer */
alejandroRL 0:dd702039127a 544
alejandroRL 0:dd702039127a 545 int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData);
alejandroRL 0:dd702039127a 546 void LCD_X_Config(void);
alejandroRL 0:dd702039127a 547
alejandroRL 0:dd702039127a 548 /*********************************************************************
alejandroRL 0:dd702039127a 549 *
alejandroRL 0:dd702039127a 550 * Set layer properties
alejandroRL 0:dd702039127a 551 */
alejandroRL 0:dd702039127a 552 int LCD_SetAlphaEx (int LayerIndex, int Alpha);
alejandroRL 0:dd702039127a 553 int LCD_SetPosEx (int LayerIndex, int xPos, int yPos);
alejandroRL 0:dd702039127a 554 int LCD_SetSizeEx (int LayerIndex, int xSize, int ySize);
alejandroRL 0:dd702039127a 555 int LCD_SetVisEx (int LayerIndex, int OnOff);
alejandroRL 0:dd702039127a 556 int LCD_SetVRAMAddrEx (int LayerIndex, void * pVRAM);
alejandroRL 0:dd702039127a 557 int LCD_SetVSizeEx (int LayerIndex, int xSize, int ySize);
alejandroRL 0:dd702039127a 558 int LCD_SetAlphaModeEx (int LayerIndex, int AlphaMode);
alejandroRL 0:dd702039127a 559 int LCD_SetChromaModeEx(int LayerIndex, int ChromaMode);
alejandroRL 0:dd702039127a 560 int LCD_SetChromaEx (int LayerIndex, LCD_COLOR ChromaMin, LCD_COLOR ChromaMax);
alejandroRL 0:dd702039127a 561
alejandroRL 0:dd702039127a 562 int LCD_SetAlpha (int Alpha);
alejandroRL 0:dd702039127a 563 int LCD_SetVRAMAddr (void * pVRAM);
alejandroRL 0:dd702039127a 564 int LCD_SetVSize (int xSize, int ySize);
alejandroRL 0:dd702039127a 565 int LCD_SetSize (int xSize, int ySize);
alejandroRL 0:dd702039127a 566 int LCD_SetVis (int OnOff);
alejandroRL 0:dd702039127a 567 int LCD_SetPos (int xPos, int yPos);
alejandroRL 0:dd702039127a 568 int LCD_SetAlphaMode (int AlphaMode);
alejandroRL 0:dd702039127a 569 int LCD_SetChromaMode(int ChromaMode);
alejandroRL 0:dd702039127a 570 int LCD_SetChroma (LCD_COLOR ChromaMin, LCD_COLOR ChromaMax);
alejandroRL 0:dd702039127a 571 int LCD_SetLUTEntry (U8 Pos, LCD_COLOR Color);
alejandroRL 0:dd702039127a 572 int LCD_SetDevFunc (int LayerIndex, int IdFunc, void (* pDriverFunc)(void));
alejandroRL 0:dd702039127a 573
alejandroRL 0:dd702039127a 574 void LCD_SetOrg(int xOrg, int yOrg);
alejandroRL 0:dd702039127a 575
alejandroRL 0:dd702039127a 576 /*********************************************************************
alejandroRL 0:dd702039127a 577 *
alejandroRL 0:dd702039127a 578 * Get layer properties
alejandroRL 0:dd702039127a 579 */
alejandroRL 0:dd702039127a 580 int LCD_GetPosEx(int LayerIndex, int * pxPos, int * pyPos);
alejandroRL 0:dd702039127a 581
alejandroRL 0:dd702039127a 582 int LCD_GetPos (int * pxPos, int * pyPos);
alejandroRL 0:dd702039127a 583
alejandroRL 0:dd702039127a 584 /*********************************************************************
alejandroRL 0:dd702039127a 585 *
alejandroRL 0:dd702039127a 586 * Display refresh (optional)
alejandroRL 0:dd702039127a 587 */
alejandroRL 0:dd702039127a 588 int LCD_Refresh (void);
alejandroRL 0:dd702039127a 589 int LCD_RefreshEx(int LayerIndex);
alejandroRL 0:dd702039127a 590
alejandroRL 0:dd702039127a 591 /*********************************************************************
alejandroRL 0:dd702039127a 592 *
alejandroRL 0:dd702039127a 593 * NEXT_PIXEL API support
alejandroRL 0:dd702039127a 594 */
alejandroRL 0:dd702039127a 595 typedef struct {
alejandroRL 0:dd702039127a 596 int (* pfStart) (int x0, int y0, int x1, int y1);
alejandroRL 0:dd702039127a 597 void (* pfSetPixel)(LCD_PIXELINDEX PixelIndex);
alejandroRL 0:dd702039127a 598 void (* pfNextLine)(void);
alejandroRL 0:dd702039127a 599 void (* pfEnd) (void);
alejandroRL 0:dd702039127a 600 } LCD_API_NEXT_PIXEL;
alejandroRL 0:dd702039127a 601
alejandroRL 0:dd702039127a 602 LCD_API_NEXT_PIXEL * LCD_GetNextPixelAPI(void);
alejandroRL 0:dd702039127a 603
alejandroRL 0:dd702039127a 604 /*********************************************************************
alejandroRL 0:dd702039127a 605 *
alejandroRL 0:dd702039127a 606 * LCD_CLIP function table
alejandroRL 0:dd702039127a 607 */
alejandroRL 0:dd702039127a 608 typedef void tLCD_HL_DrawHLine (int x0, int y0, int x1);
alejandroRL 0:dd702039127a 609 typedef void tLCD_HL_DrawPixel (int x0, int y0);
alejandroRL 0:dd702039127a 610
alejandroRL 0:dd702039127a 611 typedef struct {
alejandroRL 0:dd702039127a 612 tLCD_HL_DrawHLine * pfDrawHLine;
alejandroRL 0:dd702039127a 613 tLCD_HL_DrawPixel * pfDrawPixel;
alejandroRL 0:dd702039127a 614 } tLCD_HL_APIList;
alejandroRL 0:dd702039127a 615
alejandroRL 0:dd702039127a 616 void LCD_DrawHLine(int x0, int y0, int x1);
alejandroRL 0:dd702039127a 617 void LCD_DrawPixel(int x0, int y0);
alejandroRL 0:dd702039127a 618 void LCD_DrawVLine(int x, int y0, int y1);
alejandroRL 0:dd702039127a 619
alejandroRL 0:dd702039127a 620
alejandroRL 0:dd702039127a 621 /*********************************************************************
alejandroRL 0:dd702039127a 622 *
alejandroRL 0:dd702039127a 623 * Declarations for LCD_
alejandroRL 0:dd702039127a 624 */
alejandroRL 0:dd702039127a 625 void LCD_SetClipRectEx(const LCD_RECT * pRect);
alejandroRL 0:dd702039127a 626 void LCD_SetClipRectMax(void);
alejandroRL 0:dd702039127a 627
alejandroRL 0:dd702039127a 628 /* Get device capabilities (0 if not supported) */
alejandroRL 0:dd702039127a 629 I32 LCD_GetDevCap (int Index);
alejandroRL 0:dd702039127a 630 I32 LCD_GetDevCapEx(int LayerIndex, int Index);
alejandroRL 0:dd702039127a 631
alejandroRL 0:dd702039127a 632 /* Initialize LCD using config-parameters */
alejandroRL 0:dd702039127a 633 int LCD_Init(void);
alejandroRL 0:dd702039127a 634 int LCD_InitColors(void);
alejandroRL 0:dd702039127a 635
alejandroRL 0:dd702039127a 636 void LCD_SetBkColor (LCD_COLOR Color); /* Set background color */
alejandroRL 0:dd702039127a 637 void LCD_SetColor (LCD_COLOR Color); /* Set foreground color */
alejandroRL 0:dd702039127a 638 void LCD_SetPixelIndex(int x, int y, int ColorIndex);
alejandroRL 0:dd702039127a 639
alejandroRL 0:dd702039127a 640 /* Palette routines (Not available on all drivers) */
alejandroRL 0:dd702039127a 641 void LCD_InitLUT(void);
alejandroRL 0:dd702039127a 642 int LCD_SetLUTEntryEx(int LayerIndex, U8 Pos, LCD_COLOR Color);
alejandroRL 0:dd702039127a 643 void LCD_SetLUTEx(int LayerIndex, const LCD_PHYSPALETTE * pPalette);
alejandroRL 0:dd702039127a 644 void LCD_SetLUT (const LCD_PHYSPALETTE * pPalette);
alejandroRL 0:dd702039127a 645
alejandroRL 0:dd702039127a 646 LCD_DRAWMODE LCD_SetDrawMode (LCD_DRAWMODE dm);
alejandroRL 0:dd702039127a 647 void LCD_SetColorIndex(unsigned PixelIndex);
alejandroRL 0:dd702039127a 648 void LCD_SetBkColorIndex(unsigned PixelIndex);
alejandroRL 0:dd702039127a 649 void LCD_FillRect(int x0, int y0, int x1, int y1);
alejandroRL 0:dd702039127a 650 typedef void tLCD_SetPixelAA(int x, int y, U8 Intens);
alejandroRL 0:dd702039127a 651
alejandroRL 0:dd702039127a 652 void LCD_SetPixelAA4_Trans (int x, int y, U8 Intens);
alejandroRL 0:dd702039127a 653 void LCD_SetPixelAA4_NoTrans(int x, int y, U8 Intens);
alejandroRL 0:dd702039127a 654
alejandroRL 0:dd702039127a 655 void LCD_SetPixelAA8_Trans (int x, int y, U8 Intens);
alejandroRL 0:dd702039127a 656 void LCD_SetPixelAA8_NoTrans(int x, int y, U8 Intens);
alejandroRL 0:dd702039127a 657
alejandroRL 0:dd702039127a 658 void LCD_AA_EnableGamma(int OnOff);
alejandroRL 0:dd702039127a 659 void LCD_AA_SetGamma (U8 * pGamma);
alejandroRL 0:dd702039127a 660 void LCD_AA_GetGamma (U8 * pGamma);
alejandroRL 0:dd702039127a 661
alejandroRL 0:dd702039127a 662 LCD_COLOR LCD_AA_MixColors16 (LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
alejandroRL 0:dd702039127a 663 LCD_COLOR LCD_AA_MixColors256(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
alejandroRL 0:dd702039127a 664 LCD_COLOR LCD_MixColors256 (LCD_COLOR Color, LCD_COLOR BkColor, unsigned Intens);
alejandroRL 0:dd702039127a 665 LCD_COLOR LCD_GetPixelColor(int x, int y); /* Get RGB color of pixel */
alejandroRL 0:dd702039127a 666 unsigned int LCD_GetPixelIndex(int x, int y);
alejandroRL 0:dd702039127a 667 int LCD_GetBkColorIndex (void);
alejandroRL 0:dd702039127a 668 int LCD_GetColorIndex (void);
alejandroRL 0:dd702039127a 669 #if (GUI_USE_ARGB)
alejandroRL 0:dd702039127a 670 U32 LCD_AA_SetOrMask(U32 OrMask);
alejandroRL 0:dd702039127a 671 #else
alejandroRL 0:dd702039127a 672 U32 LCD_AA_SetAndMask(U32 AndMask);
alejandroRL 0:dd702039127a 673 #endif
alejandroRL 0:dd702039127a 674
alejandroRL 0:dd702039127a 675 /* Configuration */
alejandroRL 0:dd702039127a 676 int LCD_SetMaxNumColors(unsigned MaxNumColors);
alejandroRL 0:dd702039127a 677 int LCD_GetMaxNumColors(void);
alejandroRL 0:dd702039127a 678 void LCD__SetPaletteConversionHook(void (* pfPaletteConversionHook)(const LCD_LOGPALETTE * pLogPal));
alejandroRL 0:dd702039127a 679
alejandroRL 0:dd702039127a 680 /*********************************************************************
alejandroRL 0:dd702039127a 681 *
alejandroRL 0:dd702039127a 682 * Optional support for rotation
alejandroRL 0:dd702039127a 683 */
alejandroRL 0:dd702039127a 684 #if GUI_SUPPORT_ROTATION
alejandroRL 0:dd702039127a 685
alejandroRL 0:dd702039127a 686 typedef void tLCD_DrawBitmap(int x0, int y0, int xsize, int ysize,
alejandroRL 0:dd702039127a 687 int xMul, int yMul, int BitsPerPixel, int BytesPerLine,
alejandroRL 0:dd702039127a 688 const U8 * pPixel, const void * pTrans);
alejandroRL 0:dd702039127a 689 typedef void tRect2TextRect (LCD_RECT * pRect);
alejandroRL 0:dd702039127a 690
alejandroRL 0:dd702039127a 691 struct tLCD_APIList_struct {
alejandroRL 0:dd702039127a 692 tLCD_DrawBitmap * pfDrawBitmap;
alejandroRL 0:dd702039127a 693 tRect2TextRect * pfRect2TextRect;
alejandroRL 0:dd702039127a 694 tRect2TextRect * pfTransformRect;
alejandroRL 0:dd702039127a 695 };
alejandroRL 0:dd702039127a 696
alejandroRL 0:dd702039127a 697 typedef struct tLCD_APIList_struct tLCD_APIList;
alejandroRL 0:dd702039127a 698
alejandroRL 0:dd702039127a 699 extern tLCD_APIList LCD_APIListCCW;
alejandroRL 0:dd702039127a 700 extern tLCD_APIList LCD_APIListCW;
alejandroRL 0:dd702039127a 701 extern tLCD_APIList LCD_APIList180;
alejandroRL 0:dd702039127a 702
alejandroRL 0:dd702039127a 703 #define GUI_ROTATION tLCD_APIList
alejandroRL 0:dd702039127a 704 #define GUI_ROTATE_CCW &LCD_APIListCCW
alejandroRL 0:dd702039127a 705 #define GUI_ROTATE_CW &LCD_APIListCW
alejandroRL 0:dd702039127a 706 #define GUI_ROTATE_180 &LCD_APIList180
alejandroRL 0:dd702039127a 707 #define GUI_ROTATE_0 0
alejandroRL 0:dd702039127a 708
alejandroRL 0:dd702039127a 709 tLCD_SetPixelAA * LCD__GetPfSetPixel(int BitsPerPixel);
alejandroRL 0:dd702039127a 710
alejandroRL 0:dd702039127a 711 #endif
alejandroRL 0:dd702039127a 712
alejandroRL 0:dd702039127a 713 /*********************************************************************
alejandroRL 0:dd702039127a 714 *
alejandroRL 0:dd702039127a 715 * Physical color access, internally used only
alejandroRL 0:dd702039127a 716 */
alejandroRL 0:dd702039127a 717 void LCD__SetPhysColor(U8 Pos, LCD_COLOR Color);
alejandroRL 0:dd702039127a 718
alejandroRL 0:dd702039127a 719 /*********************************************************************
alejandroRL 0:dd702039127a 720 *
alejandroRL 0:dd702039127a 721 * Cache control
alejandroRL 0:dd702039127a 722 */
alejandroRL 0:dd702039127a 723 #define LCD_CC_UNLOCK (0) /* Default mode: Cache is transparent */
alejandroRL 0:dd702039127a 724 #define LCD_CC_LOCK (1) /* Cache is locked, no write operations */
alejandroRL 0:dd702039127a 725 #define LCD_CC_FLUSH (2) /* Flush cache, do not change mode */
alejandroRL 0:dd702039127a 726
alejandroRL 0:dd702039127a 727 int LCD_ControlCache (int Cmd);
alejandroRL 0:dd702039127a 728 int LCD_ControlCacheEx(int LayerIndex, int Cmd);
alejandroRL 0:dd702039127a 729
alejandroRL 0:dd702039127a 730 /*********************************************************************
alejandroRL 0:dd702039127a 731 *
alejandroRL 0:dd702039127a 732 * Color conversion
alejandroRL 0:dd702039127a 733 */
alejandroRL 0:dd702039127a 734 LCD_PIXELINDEX LCD_Color2Index (LCD_COLOR Color);
alejandroRL 0:dd702039127a 735 LCD_COLOR LCD_Index2Color (int Index);
alejandroRL 0:dd702039127a 736 LCD_COLOR LCD_Index2ColorEx (int i, unsigned LayerIndex);
alejandroRL 0:dd702039127a 737
alejandroRL 0:dd702039127a 738 /*********************************************************************
alejandroRL 0:dd702039127a 739 *
alejandroRL 0:dd702039127a 740 * LCD_X_...
alejandroRL 0:dd702039127a 741 */
alejandroRL 0:dd702039127a 742 unsigned char LCD_X_Read00(void);
alejandroRL 0:dd702039127a 743 unsigned char LCD_X_Read01(void);
alejandroRL 0:dd702039127a 744 void LCD_X_Write00 (unsigned char c);
alejandroRL 0:dd702039127a 745 void LCD_X_Write01 (unsigned char c);
alejandroRL 0:dd702039127a 746 void LCD_X_WriteM01(unsigned char * pData, int NumBytes);
alejandroRL 0:dd702039127a 747
alejandroRL 0:dd702039127a 748 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 749 }
alejandroRL 0:dd702039127a 750 #endif
alejandroRL 0:dd702039127a 751
alejandroRL 0:dd702039127a 752 #endif /* LCD_H */
alejandroRL 0:dd702039127a 753
alejandroRL 0:dd702039127a 754 /*************************** End of file ****************************/