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 : GUI_Private.h
alejandroRL 0:dd702039127a 40 Purpose : GUI internal declarations
alejandroRL 0:dd702039127a 41 ---------------------------END-OF-HEADER------------------------------
alejandroRL 0:dd702039127a 42 */
alejandroRL 0:dd702039127a 43
alejandroRL 0:dd702039127a 44 #ifndef GUI_PRIVATE_H
alejandroRL 0:dd702039127a 45 #define GUI_PRIVATE_H
alejandroRL 0:dd702039127a 46
alejandroRL 0:dd702039127a 47 #include "GUI.h"
alejandroRL 0:dd702039127a 48 #include "LCD_Protected.h"
alejandroRL 0:dd702039127a 49 #include "GUI_Debug.h"
alejandroRL 0:dd702039127a 50 #if GUI_WINSUPPORT
alejandroRL 0:dd702039127a 51 #include "WM_GUI.h"
alejandroRL 0:dd702039127a 52 #endif
alejandroRL 0:dd702039127a 53
alejandroRL 0:dd702039127a 54 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 55 extern "C" { /* Make sure we have C-declarations in C++ programs */
alejandroRL 0:dd702039127a 56 #endif
alejandroRL 0:dd702039127a 57
alejandroRL 0:dd702039127a 58 /*********************************************************************
alejandroRL 0:dd702039127a 59 *
alejandroRL 0:dd702039127a 60 * Defaults for config switches
alejandroRL 0:dd702039127a 61 *
alejandroRL 0:dd702039127a 62 **********************************************************************
alejandroRL 0:dd702039127a 63
alejandroRL 0:dd702039127a 64 The config switches below do not affect the interface in GUI.h and
alejandroRL 0:dd702039127a 65 are therefor not required to be in GUI.h.
alejandroRL 0:dd702039127a 66 */
alejandroRL 0:dd702039127a 67
alejandroRL 0:dd702039127a 68 /* Short address area.
alejandroRL 0:dd702039127a 69 For most compilers, this is "near" or "__near"
alejandroRL 0:dd702039127a 70 We do not use this except for some CPUs which we know to always have some
alejandroRL 0:dd702039127a 71 near memory, because the GUI_Context and some other data will be declared
alejandroRL 0:dd702039127a 72 to be in this short address (near) memory area as it has a major effect
alejandroRL 0:dd702039127a 73 on performance.
alejandroRL 0:dd702039127a 74 Please define in GUIConf.h (if you want to use it)
alejandroRL 0:dd702039127a 75 */
alejandroRL 0:dd702039127a 76 #ifndef GUI_SADDR
alejandroRL 0:dd702039127a 77 #define GUI_SADDR
alejandroRL 0:dd702039127a 78 #endif
alejandroRL 0:dd702039127a 79
alejandroRL 0:dd702039127a 80 #ifndef GUI_DEFAULT_FONT
alejandroRL 0:dd702039127a 81 #define GUI_DEFAULT_FONT &GUI_Font6x8
alejandroRL 0:dd702039127a 82 #endif
alejandroRL 0:dd702039127a 83
alejandroRL 0:dd702039127a 84 #ifndef GUI_DEFAULT_CURSOR
alejandroRL 0:dd702039127a 85 #define GUI_DEFAULT_CURSOR &GUI_CursorArrowM
alejandroRL 0:dd702039127a 86 #endif
alejandroRL 0:dd702039127a 87
alejandroRL 0:dd702039127a 88 #ifndef GUI_DEFAULT_BKCOLOR
alejandroRL 0:dd702039127a 89 #define GUI_DEFAULT_BKCOLOR GUI_BLACK
alejandroRL 0:dd702039127a 90 #endif
alejandroRL 0:dd702039127a 91
alejandroRL 0:dd702039127a 92 #ifndef GUI_DEFAULT_COLOR
alejandroRL 0:dd702039127a 93 #define GUI_DEFAULT_COLOR GUI_WHITE
alejandroRL 0:dd702039127a 94 #endif
alejandroRL 0:dd702039127a 95
alejandroRL 0:dd702039127a 96 /*********************************************************************
alejandroRL 0:dd702039127a 97 *
alejandroRL 0:dd702039127a 98 * Angles
alejandroRL 0:dd702039127a 99 *
alejandroRL 0:dd702039127a 100 **********************************************************************
alejandroRL 0:dd702039127a 101 */
alejandroRL 0:dd702039127a 102 #define GUI_45DEG 512
alejandroRL 0:dd702039127a 103 #define GUI_90DEG (2 * GUI_45DEG)
alejandroRL 0:dd702039127a 104 #define GUI_180DEG (4 * GUI_45DEG)
alejandroRL 0:dd702039127a 105 #define GUI_360DEG (8 * GUI_45DEG)
alejandroRL 0:dd702039127a 106
alejandroRL 0:dd702039127a 107
alejandroRL 0:dd702039127a 108 /*********************************************************************
alejandroRL 0:dd702039127a 109 *
alejandroRL 0:dd702039127a 110 * Locking checks
alejandroRL 0:dd702039127a 111 *
alejandroRL 0:dd702039127a 112 **********************************************************************
alejandroRL 0:dd702039127a 113 */
alejandroRL 0:dd702039127a 114 #if defined (WIN32) && defined (_DEBUG) && GUI_OS
alejandroRL 0:dd702039127a 115 #define GUI_ASSERT_LOCK() GUITASK_AssertLock()
alejandroRL 0:dd702039127a 116 #define GUI_ASSERT_NO_LOCK() GUITASK_AssertNoLock()
alejandroRL 0:dd702039127a 117 void GUITASK_AssertLock(void);
alejandroRL 0:dd702039127a 118 void GUITASK_AssertNoLock(void);
alejandroRL 0:dd702039127a 119 #else
alejandroRL 0:dd702039127a 120 #define GUI_ASSERT_LOCK()
alejandroRL 0:dd702039127a 121 #define GUI_ASSERT_NO_LOCK()
alejandroRL 0:dd702039127a 122 #endif
alejandroRL 0:dd702039127a 123
alejandroRL 0:dd702039127a 124 /*********************************************************************
alejandroRL 0:dd702039127a 125 *
alejandroRL 0:dd702039127a 126 * Division tables
alejandroRL 0:dd702039127a 127 *
alejandroRL 0:dd702039127a 128 **********************************************************************
alejandroRL 0:dd702039127a 129 */
alejandroRL 0:dd702039127a 130 extern const U8 GUI__aConvert_15_255[(1 << 4)];
alejandroRL 0:dd702039127a 131 extern const U8 GUI__aConvert_31_255[(1 << 5)];
alejandroRL 0:dd702039127a 132 extern const U8 GUI__aConvert_63_255[(1 << 6)];
alejandroRL 0:dd702039127a 133 extern const U8 GUI__aConvert_255_15[(1 << 8)];
alejandroRL 0:dd702039127a 134 extern const U8 GUI__aConvert_255_31[(1 << 8)];
alejandroRL 0:dd702039127a 135 extern const U8 GUI__aConvert_255_63[(1 << 8)];
alejandroRL 0:dd702039127a 136
alejandroRL 0:dd702039127a 137 /*********************************************************************
alejandroRL 0:dd702039127a 138 *
alejandroRL 0:dd702039127a 139 * Usage internals
alejandroRL 0:dd702039127a 140 *
alejandroRL 0:dd702039127a 141 **********************************************************************
alejandroRL 0:dd702039127a 142 */
alejandroRL 0:dd702039127a 143 typedef GUI_HMEM GUI_USAGE_Handle;
alejandroRL 0:dd702039127a 144 typedef struct tsUSAGE_APIList tUSAGE_APIList;
alejandroRL 0:dd702039127a 145 typedef struct GUI_Usage GUI_USAGE;
alejandroRL 0:dd702039127a 146 #define GUI_USAGE_h GUI_USAGE_Handle
alejandroRL 0:dd702039127a 147
alejandroRL 0:dd702039127a 148
alejandroRL 0:dd702039127a 149
alejandroRL 0:dd702039127a 150 typedef GUI_USAGE_h tUSAGE_CreateCompatible(GUI_USAGE * p);
alejandroRL 0:dd702039127a 151 typedef void tUSAGE_AddPixel (GUI_USAGE * p, int x, int y);
alejandroRL 0:dd702039127a 152 typedef void tUSAGE_AddHLine (GUI_USAGE * p, int x0, int y0, int len);
alejandroRL 0:dd702039127a 153 typedef void tUSAGE_Clear (GUI_USAGE * p);
alejandroRL 0:dd702039127a 154 typedef void tUSAGE_Delete (GUI_USAGE_h h);
alejandroRL 0:dd702039127a 155 typedef int tUSAGE_GetNextDirty (GUI_USAGE * p, int * pxOff, int yOff);
alejandroRL 0:dd702039127a 156 #define GUI_USAGE_LOCK_H(h) ((GUI_USAGE *)GUI_LOCK_H(h))
alejandroRL 0:dd702039127a 157
alejandroRL 0:dd702039127a 158
alejandroRL 0:dd702039127a 159 void GUI_USAGE_DecUseCnt(GUI_USAGE_Handle hUsage);
alejandroRL 0:dd702039127a 160
alejandroRL 0:dd702039127a 161 GUI_USAGE_Handle GUI_USAGE_BM_Create(int x0, int y0, int xsize, int ysize, int Flags);
alejandroRL 0:dd702039127a 162 void GUI_USAGE_Select(GUI_USAGE_Handle hUsage);
alejandroRL 0:dd702039127a 163 void GUI_USAGE_AddRect(GUI_USAGE * pUsage, int x0, int y0, int xSize, int ySize);
alejandroRL 0:dd702039127a 164 #define GUI_USAGE_AddPixel(p, x,y) p->pAPI->pfAddPixel(p,x,y)
alejandroRL 0:dd702039127a 165 #define GUI_USAGE_AddHLine(p,x,y,len) p->pAPI->pfAddHLine(p,x,y,len)
alejandroRL 0:dd702039127a 166 #define GUI_USAGE_Clear(p) p->pAPI->pfClear(p)
alejandroRL 0:dd702039127a 167 #define GUI_USAGE_Delete(p) p->pAPI->pfDelete(p)
alejandroRL 0:dd702039127a 168 #define GUI_USAGE_GetNextDirty(p,pxOff, yOff) p->pAPI->pfGetNextDirty(p,pxOff, yOff)
alejandroRL 0:dd702039127a 169
alejandroRL 0:dd702039127a 170 struct tsUSAGE_APIList {
alejandroRL 0:dd702039127a 171 tUSAGE_AddPixel * pfAddPixel;
alejandroRL 0:dd702039127a 172 tUSAGE_AddHLine * pfAddHLine;
alejandroRL 0:dd702039127a 173 tUSAGE_Clear * pfClear;
alejandroRL 0:dd702039127a 174 tUSAGE_CreateCompatible * pfCreateCompatible;
alejandroRL 0:dd702039127a 175 tUSAGE_Delete * pfDelete;
alejandroRL 0:dd702039127a 176 tUSAGE_GetNextDirty * pfGetNextDirty;
alejandroRL 0:dd702039127a 177 } ;
alejandroRL 0:dd702039127a 178
alejandroRL 0:dd702039127a 179 struct GUI_Usage {
alejandroRL 0:dd702039127a 180 I16P x0, y0, XSize, YSize;
alejandroRL 0:dd702039127a 181 const tUSAGE_APIList * pAPI;
alejandroRL 0:dd702039127a 182 I16 UseCnt;
alejandroRL 0:dd702039127a 183 };
alejandroRL 0:dd702039127a 184
alejandroRL 0:dd702039127a 185
alejandroRL 0:dd702039127a 186 /*********************************************************************
alejandroRL 0:dd702039127a 187 *
alejandroRL 0:dd702039127a 188 * GUI_MEMDEV
alejandroRL 0:dd702039127a 189 *
alejandroRL 0:dd702039127a 190 **********************************************************************
alejandroRL 0:dd702039127a 191 */
alejandroRL 0:dd702039127a 192 #if GUI_SUPPORT_MEMDEV
alejandroRL 0:dd702039127a 193
alejandroRL 0:dd702039127a 194 typedef struct {
alejandroRL 0:dd702039127a 195 GUI_DEVICE * pDevice;
alejandroRL 0:dd702039127a 196 I16P x0, y0, XSize, YSize;
alejandroRL 0:dd702039127a 197 unsigned BytesPerLine;
alejandroRL 0:dd702039127a 198 unsigned BitsPerPixel;
alejandroRL 0:dd702039127a 199 GUI_HMEM hUsage;
alejandroRL 0:dd702039127a 200 } GUI_MEMDEV;
alejandroRL 0:dd702039127a 201
alejandroRL 0:dd702039127a 202 #define GUI_MEMDEV_LOCK_H(h) ((GUI_MEMDEV *)GUI_LOCK_H(h))
alejandroRL 0:dd702039127a 203
alejandroRL 0:dd702039127a 204 void GUI_MEMDEV__CopyFromLCD (GUI_MEMDEV_Handle hMem);
alejandroRL 0:dd702039127a 205 void GUI_MEMDEV__GetRect (GUI_RECT * pRect);
alejandroRL 0:dd702039127a 206 unsigned GUI_MEMDEV__Color2Index (LCD_COLOR Color);
alejandroRL 0:dd702039127a 207 LCD_COLOR GUI_MEMDEV__Index2Color (int Index);
alejandroRL 0:dd702039127a 208 unsigned int GUI_MEMDEV__GetIndexMask(void);
alejandroRL 0:dd702039127a 209 void GUI_MEMDEV__SetAlphaCallback(unsigned(* pcbSetAlpha)(U8));
alejandroRL 0:dd702039127a 210
alejandroRL 0:dd702039127a 211 GUI_MEMDEV_Handle GUI_MEMDEV__CreateFixed(int x0, int y0, int xSize, int ySize, int Flags,
alejandroRL 0:dd702039127a 212 const GUI_DEVICE_API * pDeviceAPI,
alejandroRL 0:dd702039127a 213 const LCD_API_COLOR_CONV * pColorConvAPI);
alejandroRL 0:dd702039127a 214
alejandroRL 0:dd702039127a 215 void GUI_MEMDEV__DrawSizedAt (GUI_MEMDEV_Handle hMem, int xPos, int yPos, int xSize, int ySize);
alejandroRL 0:dd702039127a 216 GUI_MEMDEV_Handle GUI_MEMDEV__GetEmptyCopy32 (GUI_MEMDEV_Handle hMem, int * pxSize, int * pySize, int * pxPos, int * pyPos);
alejandroRL 0:dd702039127a 217 void GUI_MEMDEV__ReadLine (int x0, int y, int x1, LCD_PIXELINDEX * pBuffer);
alejandroRL 0:dd702039127a 218 void GUI_MEMDEV__WriteToActiveAlpha (GUI_MEMDEV_Handle hMem,int x, int y);
alejandroRL 0:dd702039127a 219 void GUI_MEMDEV__WriteToActiveAt (GUI_MEMDEV_Handle hMem,int x, int y);
alejandroRL 0:dd702039127a 220 void GUI_MEMDEV__WriteToActiveOpaque(GUI_MEMDEV_Handle hMem,int x, int y);
alejandroRL 0:dd702039127a 221 void * GUI_MEMDEV__XY2PTR (int x,int y);
alejandroRL 0:dd702039127a 222 void * GUI_MEMDEV__XY2PTREx (GUI_MEMDEV * pDev, int x,int y);
alejandroRL 0:dd702039127a 223 void GUI_MEMDEV__BlendColor32 (GUI_MEMDEV_Handle hMem, U32 BlendColor, U8 BlendIntens);
alejandroRL 0:dd702039127a 224
alejandroRL 0:dd702039127a 225 unsigned GUI__AlphaPreserveTrans(int OnOff);
alejandroRL 0:dd702039127a 226
alejandroRL 0:dd702039127a 227 extern unsigned GUI_MEMDEV__TimePerFrame;
alejandroRL 0:dd702039127a 228
alejandroRL 0:dd702039127a 229 #define GUI_TIME_PER_FRAME (GUI_TIMER_TIME)GUI_MEMDEV__TimePerFrame
alejandroRL 0:dd702039127a 230
alejandroRL 0:dd702039127a 231 #define GUI_POS_AUTO -4095 /* Position value for auto-pos */
alejandroRL 0:dd702039127a 232
alejandroRL 0:dd702039127a 233 #endif
alejandroRL 0:dd702039127a 234
alejandroRL 0:dd702039127a 235
alejandroRL 0:dd702039127a 236 /*********************************************************************
alejandroRL 0:dd702039127a 237 *
alejandroRL 0:dd702039127a 238 * LCD_HL_ level defines
alejandroRL 0:dd702039127a 239 *
alejandroRL 0:dd702039127a 240 **********************************************************************
alejandroRL 0:dd702039127a 241 */
alejandroRL 0:dd702039127a 242 #define LCD_HL_DrawHLine GUI_pContext->pLCD_HL->pfDrawHLine
alejandroRL 0:dd702039127a 243 #define LCD_HL_DrawPixel GUI_pContext->pLCD_HL->pfDrawPixel
alejandroRL 0:dd702039127a 244
alejandroRL 0:dd702039127a 245
alejandroRL 0:dd702039127a 246 /*********************************************************************
alejandroRL 0:dd702039127a 247 *
alejandroRL 0:dd702039127a 248 * Helper functions
alejandroRL 0:dd702039127a 249 *
alejandroRL 0:dd702039127a 250 **********************************************************************
alejandroRL 0:dd702039127a 251 */
alejandroRL 0:dd702039127a 252 #define GUI_ZEROINIT(Obj) GUI_MEMSET(Obj, 0, sizeof(Obj))
alejandroRL 0:dd702039127a 253 int GUI_cos(int angle);
alejandroRL 0:dd702039127a 254 int GUI_sin(int angle);
alejandroRL 0:dd702039127a 255 extern const U32 GUI_Pow10[10];
alejandroRL 0:dd702039127a 256
alejandroRL 0:dd702039127a 257 /* Multi-touch */
alejandroRL 0:dd702039127a 258 void GUI_MTOUCH__ManagePID(int OnOff);
alejandroRL 0:dd702039127a 259
alejandroRL 0:dd702039127a 260 /* Anti-aliased drawing */
alejandroRL 0:dd702039127a 261 int GUI_AA_Init (int x0, int x1);
alejandroRL 0:dd702039127a 262 int GUI_AA_Init_HiRes (int x0, int x1);
alejandroRL 0:dd702039127a 263 void GUI_AA_Exit (void);
alejandroRL 0:dd702039127a 264 I16 GUI_AA_HiRes2Pixel(int HiRes);
alejandroRL 0:dd702039127a 265
alejandroRL 0:dd702039127a 266 void GL_FillCircleAA_HiRes (int x0, int y0, int r);
alejandroRL 0:dd702039127a 267 void GL_FillEllipseAA_HiRes(int x0, int y0, int rx, int ry);
alejandroRL 0:dd702039127a 268
alejandroRL 0:dd702039127a 269 void GUI_AA__DrawCharAA2(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
alejandroRL 0:dd702039127a 270 void GUI_AA__DrawCharAA4(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
alejandroRL 0:dd702039127a 271 void GUI_AA__DrawCharAA8(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8 * pData);
alejandroRL 0:dd702039127a 272
alejandroRL 0:dd702039127a 273 /* Alpha blending helper functions */
alejandroRL 0:dd702039127a 274 #define GUI_ALPHABLENDING_DONE (1 << 0)
alejandroRL 0:dd702039127a 275
alejandroRL 0:dd702039127a 276 int GUI__GetAlphaBuffer (U32 ** ppCurrent, U32 ** ppConvert, U32 ** ppData, int * pVXSizeMax);
alejandroRL 0:dd702039127a 277 int GUI__AllocAlphaBuffer (int AllocDataBuffer);
alejandroRL 0:dd702039127a 278 U32 * GUI__DoAlphaBlending (int x, int y, U32 * pData, int xSize, tLCDDEV_Index2Color * pfIndex2Color_DEV, int * pDone);
alejandroRL 0:dd702039127a 279 unsigned GUI__SetAlphaBufferSize(int xSize);
alejandroRL 0:dd702039127a 280
alejandroRL 0:dd702039127a 281 /* System independent font routines */
alejandroRL 0:dd702039127a 282 int GUI_SIF__GetCharDistX (U16P c, int * pSizeX);
alejandroRL 0:dd702039127a 283 void GUI_SIF__GetFontInfo (const GUI_FONT * pFont, GUI_FONTINFO * pfi);
alejandroRL 0:dd702039127a 284 char GUI_SIF__IsInFont (const GUI_FONT * pFont, U16 c);
alejandroRL 0:dd702039127a 285 const U8 * GUI_SIF__GetpCharInfo (const GUI_FONT * pFont, U16P c, unsigned SizeOfCharInfo);
alejandroRL 0:dd702039127a 286 int GUI_SIF__GetNumCharAreas (const GUI_FONT * pFont);
alejandroRL 0:dd702039127a 287 int GUI_SIF__GetCharDistX_ExtFrm(U16P c, int * pSizeX);
alejandroRL 0:dd702039127a 288 void GUI_SIF__GetFontInfo_ExtFrm (const GUI_FONT * pFont, GUI_FONTINFO * pfi);
alejandroRL 0:dd702039127a 289 char GUI_SIF__IsInFont_ExtFrm (const GUI_FONT * pFont, U16 c);
alejandroRL 0:dd702039127a 290 int GUI_SIF__GetCharInfo_ExtFrm (U16P c, GUI_CHARINFO_EXT * pInfo);
alejandroRL 0:dd702039127a 291 void GUI_SIF__ClearLine_ExtFrm (const char * s, int Len);
alejandroRL 0:dd702039127a 292
alejandroRL 0:dd702039127a 293 /* External binary font routines */
alejandroRL 0:dd702039127a 294 int GUI_XBF__GetOff (const GUI_XBF_DATA * pXBF_Data, unsigned c, U32 * pOff);
alejandroRL 0:dd702039127a 295 int GUI_XBF__GetOffAndSize(const GUI_XBF_DATA * pXBF_Data, unsigned c, U32 * pOff, U16 * pSize);
alejandroRL 0:dd702039127a 296 int GUI_XBF__GetCharDistX (U16P c, int * pSizeX);
alejandroRL 0:dd702039127a 297 void GUI_XBF__GetFontInfo (const GUI_FONT * pFont, GUI_FONTINFO * pInfo);
alejandroRL 0:dd702039127a 298 char GUI_XBF__IsInFont (const GUI_FONT * pFont, U16 c);
alejandroRL 0:dd702039127a 299 int GUI_XBF__GetCharInfo (U16P c, GUI_CHARINFO_EXT * pInfo);
alejandroRL 0:dd702039127a 300 void GUI_XBF__ClearLine (const char * s, int Len);
alejandroRL 0:dd702039127a 301
alejandroRL 0:dd702039127a 302 /* Conversion routines */
alejandroRL 0:dd702039127a 303 void GUI_AddHex (U32 v, U8 Len, char ** ps);
alejandroRL 0:dd702039127a 304 void GUI_AddBin (U32 v, U8 Len, char ** ps);
alejandroRL 0:dd702039127a 305 void GUI_AddDecMin (I32 v, char ** ps);
alejandroRL 0:dd702039127a 306 void GUI_AddDec (I32 v, U8 Len, char ** ps);
alejandroRL 0:dd702039127a 307 void GUI_AddDecShift(I32 v, U8 Len, U8 Shift, char ** ps);
alejandroRL 0:dd702039127a 308 long GUI_AddSign (long v, char ** ps);
alejandroRL 0:dd702039127a 309 int GUI_Long2Len (I32 v);
alejandroRL 0:dd702039127a 310
alejandroRL 0:dd702039127a 311 #define GUI_UC__GetCharSize(sText) GUI_pUC_API->pfGetCharSize(sText)
alejandroRL 0:dd702039127a 312 #define GUI_UC__GetCharCode(sText) GUI_pUC_API->pfGetCharCode(sText)
alejandroRL 0:dd702039127a 313
alejandroRL 0:dd702039127a 314 int GUI_UC__CalcSizeOfChar (U16 Char);
alejandroRL 0:dd702039127a 315 U16 GUI_UC__GetCharCodeInc (const char ** ps);
alejandroRL 0:dd702039127a 316 int GUI_UC__NumChars2NumBytes(const char * s, int NumChars);
alejandroRL 0:dd702039127a 317 int GUI_UC__NumBytes2NumChars(const char * s, int NumBytes);
alejandroRL 0:dd702039127a 318
alejandroRL 0:dd702039127a 319 int GUI__GetLineNumChars (const char * s, int MaxNumChars);
alejandroRL 0:dd702039127a 320 int GUI__GetNumChars (const char * s);
alejandroRL 0:dd702039127a 321 int GUI__GetOverlap (U16 Char);
alejandroRL 0:dd702039127a 322 int GUI__GetLineDistX (const char * s, int Len);
alejandroRL 0:dd702039127a 323 int GUI__GetFontSizeY (void);
alejandroRL 0:dd702039127a 324 int GUI__HandleEOLine (const char ** ps);
alejandroRL 0:dd702039127a 325 void GUI__DispLine (const char * s, int Len, const GUI_RECT * pr);
alejandroRL 0:dd702039127a 326 void GUI__AddSpaceHex (U32 v, U8 Len, char ** ps);
alejandroRL 0:dd702039127a 327 void GUI__CalcTextRect (const char * pText, const GUI_RECT * pTextRectIn, GUI_RECT * pTextRectOut, int TextAlign);
alejandroRL 0:dd702039127a 328
alejandroRL 0:dd702039127a 329 void GUI__ClearTextBackground(int xDist, int yDist);
alejandroRL 0:dd702039127a 330
alejandroRL 0:dd702039127a 331 int GUI__WrapGetNumCharsDisp (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
alejandroRL 0:dd702039127a 332 int GUI__WrapGetNumCharsToNextLine (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
alejandroRL 0:dd702039127a 333 int GUI__WrapGetNumBytesToNextLine (const char * pText, int xSize, GUI_WRAPMODE WrapMode);
alejandroRL 0:dd702039127a 334 void GUI__memset (U8 * p, U8 Fill, int NumBytes);
alejandroRL 0:dd702039127a 335 void GUI__memset16 (U16 * p, U16 Fill, int NumWords);
alejandroRL 0:dd702039127a 336 int GUI__strlen (const char * s);
alejandroRL 0:dd702039127a 337 int GUI__strcmp (const char * s0, const char * s1);
alejandroRL 0:dd702039127a 338 int GUI__strcmp_hp (GUI_HMEM hs0, const char * s1);
alejandroRL 0:dd702039127a 339
alejandroRL 0:dd702039127a 340 /* Get cursor position */
alejandroRL 0:dd702039127a 341 int GUI__GetCursorPosX (const char * s, int Index, int MaxNumChars);
alejandroRL 0:dd702039127a 342 int GUI__GetCursorPosChar (const char * s, int x, int NumCharsToNextLine);
alejandroRL 0:dd702039127a 343 U16 GUI__GetCursorCharacter(const char * s, int Index, int MaxNumChars, int * pIsRTL);
alejandroRL 0:dd702039127a 344
alejandroRL 0:dd702039127a 345 /* Arabic support (tbd) */
alejandroRL 0:dd702039127a 346 U16 GUI__GetPresentationForm (U16 Char, U16 Next, U16 Prev, int * pIgnoreNext, const char * s);
alejandroRL 0:dd702039127a 347 int GUI__IsArabicCharacter (U16 c);
alejandroRL 0:dd702039127a 348
alejandroRL 0:dd702039127a 349 /* BiDi support */
alejandroRL 0:dd702039127a 350 int GUI__BIDI_Log2Vis (const char * s, int NumChars, char * pBuffer, int BufferSize);
alejandroRL 0:dd702039127a 351 int GUI__BIDI_GetCursorPosX (const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 352 int GUI__BIDI_GetCursorPosChar (const char * s, int NumChars, int x);
alejandroRL 0:dd702039127a 353 U16 GUI__BIDI_GetLogChar (const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 354 int GUI__BIDI_GetCharDir (const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 355 int GUI__BIDI_IsNSM (U16 Char);
alejandroRL 0:dd702039127a 356 U16 GUI__BIDI_GetCursorCharacter(const char * s, int Index, int MaxNumChars, int * pIsRTL);
alejandroRL 0:dd702039127a 357 int GUI__BIDI_GetWordWrap (const char * s, int xSize, int * pxDist);
alejandroRL 0:dd702039127a 358 int GUI__BIDI_GetCharWrap (const char * s, int xSize);
alejandroRL 0:dd702039127a 359
alejandroRL 0:dd702039127a 360 #if (GUI_USE_BIDI2)
alejandroRL 0:dd702039127a 361
alejandroRL 0:dd702039127a 362 #define GUI__BIDI_Log2Vis GUI__BIDI2_Log2Vis
alejandroRL 0:dd702039127a 363 #define GUI__BIDI_GetCursorPosX GUI__BIDI2_GetCursorPosX
alejandroRL 0:dd702039127a 364 #define GUI__BIDI_GetCursorPosChar GUI__BIDI2_GetCursorPosChar
alejandroRL 0:dd702039127a 365 #define GUI__BIDI_GetLogChar GUI__BIDI2_GetLogChar
alejandroRL 0:dd702039127a 366 #define GUI__BIDI_GetCharDir GUI__BIDI2_GetCharDir
alejandroRL 0:dd702039127a 367 #define GUI__BIDI_IsNSM GUI__BIDI2_IsNSM
alejandroRL 0:dd702039127a 368 #define GUI__BIDI_GetCursorCharacter GUI__BIDI2_GetCursorCharacter
alejandroRL 0:dd702039127a 369 #define GUI__BIDI_GetWordWrap GUI__BIDI2_GetWordWrap
alejandroRL 0:dd702039127a 370 #define GUI__BIDI_GetCharWrap GUI__BIDI2_GetCharWrap
alejandroRL 0:dd702039127a 371 #define GUI__BIDI_SetBaseDir GUI__BIDI2_SetBaseDir
alejandroRL 0:dd702039127a 372 #define GUI__BIDI_GetBaseDir GUI__BIDI2_GetBaseDir
alejandroRL 0:dd702039127a 373
alejandroRL 0:dd702039127a 374 int GUI__BIDI_Log2Vis (const char * s, int NumChars, char * pBuffer, int BufferSize);
alejandroRL 0:dd702039127a 375 int GUI__BIDI_GetCursorPosX (const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 376 int GUI__BIDI_GetCursorPosChar (const char * s, int NumChars, int x);
alejandroRL 0:dd702039127a 377 U16 GUI__BIDI_GetLogChar (const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 378 int GUI__BIDI_GetCharDir (const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 379 int GUI__BIDI_IsNSM (U16 Char);
alejandroRL 0:dd702039127a 380 U16 GUI__BIDI_GetCursorCharacter(const char * s, int Index, int MaxNumChars, int * pIsRTL);
alejandroRL 0:dd702039127a 381 int GUI__BIDI_GetWordWrap (const char * s, int xSize, int * pxDist);
alejandroRL 0:dd702039127a 382 int GUI__BIDI_GetCharWrap (const char * s, int xSize);
alejandroRL 0:dd702039127a 383 void GUI__BIDI_SetBaseDir (int Dir);
alejandroRL 0:dd702039127a 384 int GUI__BIDI_GetBaseDir (void);
alejandroRL 0:dd702039127a 385
alejandroRL 0:dd702039127a 386 #else
alejandroRL 0:dd702039127a 387
alejandroRL 0:dd702039127a 388 #define GUI__BIDI_SetBaseDir
alejandroRL 0:dd702039127a 389 #define GUI__BIDI_GetBaseDir
alejandroRL 0:dd702039127a 390
alejandroRL 0:dd702039127a 391 #endif
alejandroRL 0:dd702039127a 392
alejandroRL 0:dd702039127a 393 const char * GUI__BIDI_Log2VisBuffered(const char * s, int * pMaxNumChars);
alejandroRL 0:dd702039127a 394
alejandroRL 0:dd702039127a 395 extern int GUI__BIDI_Enabled;
alejandroRL 0:dd702039127a 396
alejandroRL 0:dd702039127a 397 extern int (* _pfGUI__BIDI_Log2Vis )(const char * s, int NumChars, char * pBuffer, int BufferSize);
alejandroRL 0:dd702039127a 398 extern int (* _pfGUI__BIDI_GetCursorPosX )(const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 399 extern int (* _pfGUI__BIDI_GetCursorPosChar)(const char * s, int NumChars, int x);
alejandroRL 0:dd702039127a 400 extern U16 (* _pfGUI__BIDI_GetLogChar )(const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 401 extern int (* _pfGUI__BIDI_GetCharDir )(const char * s, int NumChars, int Index);
alejandroRL 0:dd702039127a 402 extern int (* _pfGUI__BIDI_IsNSM )(U16 Char);
alejandroRL 0:dd702039127a 403
alejandroRL 0:dd702039127a 404 /* BiDi-related function pointers */
alejandroRL 0:dd702039127a 405 extern const char * (* GUI_CharLine_pfLog2Vis)(const char * s, int * pMaxNumChars);
alejandroRL 0:dd702039127a 406
alejandroRL 0:dd702039127a 407 extern int (* GUI__GetCursorPos_pfGetPosX) (const char * s, int MaxNumChars, int Index);
alejandroRL 0:dd702039127a 408 extern int (* GUI__GetCursorPos_pfGetPosChar) (const char * s, int MaxNumChars, int x);
alejandroRL 0:dd702039127a 409 extern U16 (* GUI__GetCursorPos_pfGetCharacter)(const char * s, int MaxNumChars, int Index, int * pIsRTL);
alejandroRL 0:dd702039127a 410
alejandroRL 0:dd702039127a 411 extern int (* GUI__Wrap_pfGetWordWrap)(const char * s, int xSize, int * pxDist);
alejandroRL 0:dd702039127a 412 extern int (* GUI__Wrap_pfGetCharWrap)(const char * s, int xSize);
alejandroRL 0:dd702039127a 413
alejandroRL 0:dd702039127a 414 /* Proportional font support */
alejandroRL 0:dd702039127a 415 const GUI_FONT_PROP * GUIPROP__FindChar(const GUI_FONT_PROP * pProp, U16P c);
alejandroRL 0:dd702039127a 416
alejandroRL 0:dd702039127a 417 /* Extended proportional font support */
alejandroRL 0:dd702039127a 418 const GUI_FONT_PROP_EXT * GUIPROP_EXT__FindChar(const GUI_FONT_PROP_EXT * pPropExt, U16P c);
alejandroRL 0:dd702039127a 419 void GUIPROP_EXT__DispLine (const char * s, int Len);
alejandroRL 0:dd702039127a 420 void GUIPROP_EXT__ClearLine (const char * s, int Len);
alejandroRL 0:dd702039127a 421 void GUIPROP_EXT__SetfpClearLine(void (* fpClearLine)(const char * s, int Len));
alejandroRL 0:dd702039127a 422
alejandroRL 0:dd702039127a 423 /* Reading data routines */
alejandroRL 0:dd702039127a 424 U16 GUI__Read16(const U8 ** ppData);
alejandroRL 0:dd702039127a 425 U32 GUI__Read32(const U8 ** ppData);
alejandroRL 0:dd702039127a 426
alejandroRL 0:dd702039127a 427 /* Virtual screen support */
alejandroRL 0:dd702039127a 428 void GUI__GetOrg(int * px, int * py);
alejandroRL 0:dd702039127a 429 void GUI__SetOrgHook(void(* pfHook)(int x, int y));
alejandroRL 0:dd702039127a 430
alejandroRL 0:dd702039127a 431 /* Timer support */
alejandroRL 0:dd702039127a 432 int GUI_TIMER__IsActive (void);
alejandroRL 0:dd702039127a 433 GUI_TIMER_TIME GUI_TIMER__GetPeriod (void);
alejandroRL 0:dd702039127a 434 GUI_TIMER_HANDLE GUI_TIMER__GetNextTimer (GUI_TIMER_HANDLE hTimer, U32 * pContext);
alejandroRL 0:dd702039127a 435 GUI_TIMER_HANDLE GUI_TIMER__GetFirstTimer (U32 * pContext);
alejandroRL 0:dd702039127a 436 GUI_TIMER_HANDLE GUI_TIMER__GetNextTimerLin(GUI_TIMER_HANDLE hTimer, U32 * pContext);
alejandroRL 0:dd702039127a 437
alejandroRL 0:dd702039127a 438 /* Get function pointers for color conversion */
alejandroRL 0:dd702039127a 439 tLCDDEV_Index2Color * GUI_GetpfIndex2ColorEx(int LayerIndex);
alejandroRL 0:dd702039127a 440 tLCDDEV_Color2Index * GUI_GetpfColor2IndexEx(int LayerIndex);
alejandroRL 0:dd702039127a 441
alejandroRL 0:dd702039127a 442 int GUI_GetBitsPerPixelEx(int LayerIndex);
alejandroRL 0:dd702039127a 443
alejandroRL 0:dd702039127a 444 LCD_PIXELINDEX * LCD_GetpPalConvTable (const LCD_LOGPALETTE * pLogPal);
alejandroRL 0:dd702039127a 445 LCD_PIXELINDEX * LCD_GetpPalConvTableUncached(const LCD_LOGPALETTE * pLogPal);
alejandroRL 0:dd702039127a 446 LCD_PIXELINDEX * LCD_GetpPalConvTableBM (const LCD_LOGPALETTE * pLogPal, const GUI_BITMAP * pBitmap, int LayerIndex);
alejandroRL 0:dd702039127a 447
alejandroRL 0:dd702039127a 448 /* Setting a function for converting a color palette to an array of index values */
alejandroRL 0:dd702039127a 449 void GUI_SetFuncGetpPalConvTable(LCD_PIXELINDEX * (* pFunc)(const LCD_LOGPALETTE * pLogPal, const GUI_BITMAP * pBitmap, int LayerIndex));
alejandroRL 0:dd702039127a 450
alejandroRL 0:dd702039127a 451 /*********************************************************************
alejandroRL 0:dd702039127a 452 *
alejandroRL 0:dd702039127a 453 * Format definitions used by streamed bitmaps
alejandroRL 0:dd702039127a 454 *
alejandroRL 0:dd702039127a 455 * IMPORTANT: DO NOT CHANGE THESE VALUES!
alejandroRL 0:dd702039127a 456 * THEY HAVE TO CORRESPOND TO THE DEFINITIONS WITHIN THE CODE OF THE BITMAPCONVERTER!
alejandroRL 0:dd702039127a 457 */
alejandroRL 0:dd702039127a 458 #define GUI_STREAM_FORMAT_INDEXED 100 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 459 #define GUI_STREAM_FORMAT_RLE4 6 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 460 #define GUI_STREAM_FORMAT_RLE8 7 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 461 #define GUI_STREAM_FORMAT_565 8 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 462 #define GUI_STREAM_FORMAT_M565 9 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 463 #define GUI_STREAM_FORMAT_555 10 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 464 #define GUI_STREAM_FORMAT_M555 11 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 465 #define GUI_STREAM_FORMAT_RLE16 12 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 466 #define GUI_STREAM_FORMAT_RLEM16 13 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 467 #define GUI_STREAM_FORMAT_8888 16 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 468 #define GUI_STREAM_FORMAT_RLE32 15 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 469 #define GUI_STREAM_FORMAT_24 17 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 470 #define GUI_STREAM_FORMAT_RLEALPHA 18 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 471 #define GUI_STREAM_FORMAT_444_12 19 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 472 #define GUI_STREAM_FORMAT_M444_12 20 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 473 #define GUI_STREAM_FORMAT_444_12_1 21 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 474 #define GUI_STREAM_FORMAT_M444_12_1 22 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 475 #define GUI_STREAM_FORMAT_444_16 23 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 476 #define GUI_STREAM_FORMAT_M444_16 24 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 477 #define GUI_STREAM_FORMAT_A555 25 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 478 #define GUI_STREAM_FORMAT_AM555 26 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 479 #define GUI_STREAM_FORMAT_A565 27 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 480 #define GUI_STREAM_FORMAT_AM565 28 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 481 #define GUI_STREAM_FORMAT_M8888I 29 /* DO NOT CHANGE */
alejandroRL 0:dd702039127a 482
alejandroRL 0:dd702039127a 483
alejandroRL 0:dd702039127a 484 void GUI__ReadHeaderFromStream (GUI_BITMAP_STREAM * pBitmapHeader, const U8 * pData);
alejandroRL 0:dd702039127a 485 void GUI__CreateBitmapFromStream(const GUI_BITMAP_STREAM * pBitmapHeader, const void * pData, GUI_BITMAP * pBMP, GUI_LOGPALETTE * pPAL, const GUI_BITMAP_METHODS * pMethods);
alejandroRL 0:dd702039127a 486
alejandroRL 0:dd702039127a 487 /* Cache management */
alejandroRL 0:dd702039127a 488 int GUI__ManageCache (int Cmd);
alejandroRL 0:dd702039127a 489 int GUI__ManageCacheEx(int LayerIndex, int Cmd);
alejandroRL 0:dd702039127a 490
alejandroRL 0:dd702039127a 491 /*********************************************************************
alejandroRL 0:dd702039127a 492 *
alejandroRL 0:dd702039127a 493 * 2d - GL
alejandroRL 0:dd702039127a 494 *
alejandroRL 0:dd702039127a 495 **********************************************************************
alejandroRL 0:dd702039127a 496 */
alejandroRL 0:dd702039127a 497 void GL_DispChar (U16 c);
alejandroRL 0:dd702039127a 498 void GL_DrawArc (int x0, int y0, int rx, int ry, int a0, int a1);
alejandroRL 0:dd702039127a 499 void GL_DrawBitmap (const GUI_BITMAP * pBM, int x0, int y0);
alejandroRL 0:dd702039127a 500 void GL_DrawCircle (int x0, int y0, int r);
alejandroRL 0:dd702039127a 501 void GL_DrawEllipse (int x0, int y0, int rx, int ry, int w);
alejandroRL 0:dd702039127a 502 void GL_DrawHLine (int y0, int x0, int x1);
alejandroRL 0:dd702039127a 503 void GL_DrawPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
alejandroRL 0:dd702039127a 504 void GL_DrawPoint (int x, int y);
alejandroRL 0:dd702039127a 505 void GL_DrawLine1 (int x0, int y0, int x1, int y1);
alejandroRL 0:dd702039127a 506 void GL_DrawLine1Ex (int x0, int y0, int x1, int y1, unsigned * pPixelCnt);
alejandroRL 0:dd702039127a 507 void GL_DrawLineRel (int dx, int dy);
alejandroRL 0:dd702039127a 508 void GL_DrawLineTo (int x, int y);
alejandroRL 0:dd702039127a 509 void GL_DrawLineToEx (int x, int y, unsigned * pPixelCnt);
alejandroRL 0:dd702039127a 510 void GL_DrawLine (int x0, int y0, int x1, int y1);
alejandroRL 0:dd702039127a 511 void GL_DrawLineEx (int x0, int y0, int x1, int y1, unsigned * pPixelCnt);
alejandroRL 0:dd702039127a 512 void GL_MoveTo (int x, int y);
alejandroRL 0:dd702039127a 513 void GL_FillCircle (int x0, int y0, int r);
alejandroRL 0:dd702039127a 514 void GL_FillCircleAA (int x0, int y0, int r);
alejandroRL 0:dd702039127a 515 void GL_FillEllipse (int x0, int y0, int rx, int ry);
alejandroRL 0:dd702039127a 516 void GL_FillPolygon (const GUI_POINT * pPoints, int NumPoints, int x0, int y0);
alejandroRL 0:dd702039127a 517 void GL_SetDefault (void);
alejandroRL 0:dd702039127a 518
alejandroRL 0:dd702039127a 519
alejandroRL 0:dd702039127a 520 /*********************************************************************
alejandroRL 0:dd702039127a 521 *
alejandroRL 0:dd702039127a 522 * Callback pointers for dynamic linkage
alejandroRL 0:dd702039127a 523 *
alejandroRL 0:dd702039127a 524 **********************************************************************
alejandroRL 0:dd702039127a 525 Dynamic linkage pointers reduces configuration hassles.
alejandroRL 0:dd702039127a 526 */
alejandroRL 0:dd702039127a 527 typedef int GUI_tfTimer(void);
alejandroRL 0:dd702039127a 528 typedef int WM_tfHandlePID(void);
alejandroRL 0:dd702039127a 529
alejandroRL 0:dd702039127a 530
alejandroRL 0:dd702039127a 531 /*********************************************************************
alejandroRL 0:dd702039127a 532 *
alejandroRL 0:dd702039127a 533 * Cursors
alejandroRL 0:dd702039127a 534 *
alejandroRL 0:dd702039127a 535 **********************************************************************
alejandroRL 0:dd702039127a 536 */
alejandroRL 0:dd702039127a 537 extern GUI_CONST_STORAGE unsigned char GUI_Pixels_ArrowS[45];
alejandroRL 0:dd702039127a 538 extern GUI_CONST_STORAGE unsigned char GUI_Pixels_ArrowM[60];
alejandroRL 0:dd702039127a 539 extern GUI_CONST_STORAGE unsigned char GUI_Pixels_ArrowL[150];
alejandroRL 0:dd702039127a 540 extern GUI_CONST_STORAGE unsigned char GUI_Pixels_CrossS[33];
alejandroRL 0:dd702039127a 541 extern GUI_CONST_STORAGE unsigned char GUI_Pixels_CrossM[126];
alejandroRL 0:dd702039127a 542 extern GUI_CONST_STORAGE unsigned char GUI_Pixels_CrossL[248];
alejandroRL 0:dd702039127a 543 extern GUI_CONST_STORAGE unsigned char GUI_PixelsHeaderM[5 * 17];
alejandroRL 0:dd702039127a 544
alejandroRL 0:dd702039127a 545 extern GUI_CONST_STORAGE GUI_LOGPALETTE GUI_CursorPal;
alejandroRL 0:dd702039127a 546 extern GUI_CONST_STORAGE GUI_LOGPALETTE GUI_CursorPalI;
alejandroRL 0:dd702039127a 547
alejandroRL 0:dd702039127a 548
alejandroRL 0:dd702039127a 549 /*********************************************************************
alejandroRL 0:dd702039127a 550 *
alejandroRL 0:dd702039127a 551 * Text rotation
alejandroRL 0:dd702039127a 552 *
alejandroRL 0:dd702039127a 553 **********************************************************************
alejandroRL 0:dd702039127a 554 */
alejandroRL 0:dd702039127a 555 extern GUI_RECT GUI_RectDispString; /* Used by LCD_Rotate...() and GUI_DispStringInRect() */
alejandroRL 0:dd702039127a 556
alejandroRL 0:dd702039127a 557 /*********************************************************************
alejandroRL 0:dd702039127a 558 *
alejandroRL 0:dd702039127a 559 * Flag for setting transparency for 'EXT' fonts
alejandroRL 0:dd702039127a 560 *
alejandroRL 0:dd702039127a 561 **********************************************************************
alejandroRL 0:dd702039127a 562 */
alejandroRL 0:dd702039127a 563 extern U8 GUI__CharHasTrans;
alejandroRL 0:dd702039127a 564
alejandroRL 0:dd702039127a 565 /*********************************************************************
alejandroRL 0:dd702039127a 566 *
alejandroRL 0:dd702039127a 567 * Multitasking support
alejandroRL 0:dd702039127a 568 *
alejandroRL 0:dd702039127a 569 **********************************************************************
alejandroRL 0:dd702039127a 570 */
alejandroRL 0:dd702039127a 571 extern int GUITASK__EntranceCnt;
alejandroRL 0:dd702039127a 572
alejandroRL 0:dd702039127a 573 /*********************************************************************
alejandroRL 0:dd702039127a 574 *
alejandroRL 0:dd702039127a 575 * Bitmap related functions
alejandroRL 0:dd702039127a 576 *
alejandroRL 0:dd702039127a 577 **********************************************************************
alejandroRL 0:dd702039127a 578 */
alejandroRL 0:dd702039127a 579
alejandroRL 0:dd702039127a 580 int GUI_GetBitmapPixelIndex(const GUI_BITMAP * pBMP, unsigned x, unsigned y);
alejandroRL 0:dd702039127a 581 GUI_COLOR GUI_GetBitmapPixelColor(const GUI_BITMAP * pBMP, unsigned x, unsigned y);
alejandroRL 0:dd702039127a 582 int GUI_GetBitmapPixelIndexEx(int BitsPerPixel, int BytesPerLine, const U8 * pData, unsigned x, unsigned y);
alejandroRL 0:dd702039127a 583
alejandroRL 0:dd702039127a 584 void GUI__DrawBitmap16bpp (int x0, int y0, int xsize, int ysize, const U8 * pPixel, const LCD_LOGPALETTE * pLogPal, int xMag, int yMag, tLCDDEV_Index2Color * pfIndex2Color, const LCD_API_COLOR_CONV * pColorConvAPI);
alejandroRL 0:dd702039127a 585 void GUI__DrawBitmapA16bpp(int x0, int y0, int xSize, int ySize, const U8 * pPixel, const LCD_LOGPALETTE * pLogPal, int xMag, int yMag, tLCDDEV_Index2Color * pfIndex2Color);
alejandroRL 0:dd702039127a 586 void GUI__SetPixelAlpha (int x, int y, U8 Alpha, LCD_COLOR Color);
alejandroRL 0:dd702039127a 587 LCD_COLOR GUI__MixColors (LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
alejandroRL 0:dd702039127a 588 void GUI__MixColorsBulk (U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens);
alejandroRL 0:dd702039127a 589
alejandroRL 0:dd702039127a 590 extern const GUI_UC_ENC_APILIST GUI_UC_None;
alejandroRL 0:dd702039127a 591
alejandroRL 0:dd702039127a 592 /*********************************************************************
alejandroRL 0:dd702039127a 593 *
alejandroRL 0:dd702039127a 594 * LCDDEV_L0_xxx
alejandroRL 0:dd702039127a 595 *
alejandroRL 0:dd702039127a 596 **********************************************************************
alejandroRL 0:dd702039127a 597 */
alejandroRL 0:dd702039127a 598 #define LCDDEV_L0_Color2Index GUI__apDevice[GUI_pContext->SelLayer]->pColorConvAPI->pfColor2Index
alejandroRL 0:dd702039127a 599 #define LCDDEV_L0_Index2Color GUI__apDevice[GUI_pContext->SelLayer]->pColorConvAPI->pfIndex2Color
alejandroRL 0:dd702039127a 600
alejandroRL 0:dd702039127a 601 #define LCDDEV_L0_DrawBitmap GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawBitmap
alejandroRL 0:dd702039127a 602 #define LCDDEV_L0_DrawHLine GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawHLine
alejandroRL 0:dd702039127a 603 #define LCDDEV_L0_DrawVLine GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawVLine
alejandroRL 0:dd702039127a 604 #define LCDDEV_L0_DrawPixel GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfDrawPixel
alejandroRL 0:dd702039127a 605 #define LCDDEV_L0_FillRect GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfFillRect
alejandroRL 0:dd702039127a 606 #define LCDDEV_L0_GetPixel GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetPixel
alejandroRL 0:dd702039127a 607 #define LCDDEV_L0_GetRect GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetRect
alejandroRL 0:dd702039127a 608 #define LCDDEV_L0_GetPixelIndex GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetPixelIndex
alejandroRL 0:dd702039127a 609 #define LCDDEV_L0_SetPixelIndex GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfSetPixelIndex
alejandroRL 0:dd702039127a 610 #define LCDDEV_L0_XorPixel GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfXorPixel
alejandroRL 0:dd702039127a 611 #define LCDDEV_L0_GetDevFunc GUI__apDevice[GUI_pContext->SelLayer]->pDeviceAPI->pfGetDevFunc
alejandroRL 0:dd702039127a 612
alejandroRL 0:dd702039127a 613 void LCD_ReadRect (int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
alejandroRL 0:dd702039127a 614 void GUI_ReadRect (int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
alejandroRL 0:dd702039127a 615 void GUI_ReadRectEx(int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
alejandroRL 0:dd702039127a 616
alejandroRL 0:dd702039127a 617 void LCD_ReadRectNoClip(int x0, int y0, int x1, int y1, LCD_PIXELINDEX * pBuffer, GUI_DEVICE * pDevice);
alejandroRL 0:dd702039127a 618
alejandroRL 0:dd702039127a 619 /*********************************************************************
alejandroRL 0:dd702039127a 620 *
alejandroRL 0:dd702039127a 621 * Internal color management
alejandroRL 0:dd702039127a 622 *
alejandroRL 0:dd702039127a 623 **********************************************************************
alejandroRL 0:dd702039127a 624 */
alejandroRL 0:dd702039127a 625 typedef struct {
alejandroRL 0:dd702039127a 626 void (* pfSetColor) (LCD_COLOR Index);
alejandroRL 0:dd702039127a 627 void (* pfSetBkColor) (LCD_COLOR Index);
alejandroRL 0:dd702039127a 628 LCD_DRAWMODE (* pfSetDrawMode)(LCD_DRAWMODE dm);
alejandroRL 0:dd702039127a 629 } LCD_SET_COLOR_API;
alejandroRL 0:dd702039127a 630
alejandroRL 0:dd702039127a 631 extern const LCD_SET_COLOR_API * LCD__pSetColorAPI;
alejandroRL 0:dd702039127a 632
alejandroRL 0:dd702039127a 633 #define LCD__SetBkColorIndex(Index) (*GUI_pContext->LCD_pBkColorIndex = Index)
alejandroRL 0:dd702039127a 634 #define LCD__SetColorIndex(Index) (*GUI_pContext->LCD_pColorIndex = Index)
alejandroRL 0:dd702039127a 635 #define LCD__GetBkColorIndex() (*GUI_pContext->LCD_pBkColorIndex)
alejandroRL 0:dd702039127a 636 #define LCD__GetColorIndex() (*GUI_pContext->LCD_pColorIndex)
alejandroRL 0:dd702039127a 637
alejandroRL 0:dd702039127a 638 /* The following 2 defines are only required for compatibility to older versions of the TTF library */
alejandroRL 0:dd702039127a 639 #define LCD_BKCOLORINDEX (*GUI_pContext->LCD_pBkColorIndex)
alejandroRL 0:dd702039127a 640 #define LCD_COLORINDEX (*GUI_pContext->LCD_pColorIndex)
alejandroRL 0:dd702039127a 641
alejandroRL 0:dd702039127a 642 /*********************************************************************
alejandroRL 0:dd702039127a 643 *
alejandroRL 0:dd702039127a 644 * EXTERNs for GL_CORE
alejandroRL 0:dd702039127a 645 *
alejandroRL 0:dd702039127a 646 **********************************************************************
alejandroRL 0:dd702039127a 647 */
alejandroRL 0:dd702039127a 648 extern const GUI_FONT * GUI__pFontDefault;
alejandroRL 0:dd702039127a 649 extern GUI_COLOR GUI__ColorDefault;
alejandroRL 0:dd702039127a 650 extern GUI_COLOR GUI__BkColorDefault;
alejandroRL 0:dd702039127a 651
alejandroRL 0:dd702039127a 652 extern GUI_SADDR GUI_CONTEXT * GUI_pContext;
alejandroRL 0:dd702039127a 653
alejandroRL 0:dd702039127a 654 extern GUI_DEVICE * GUI__apDevice[GUI_NUM_LAYERS];
alejandroRL 0:dd702039127a 655
alejandroRL 0:dd702039127a 656 //
alejandroRL 0:dd702039127a 657 // Function pointer for converting a palette containing a color array into an index array
alejandroRL 0:dd702039127a 658 //
alejandroRL 0:dd702039127a 659 extern LCD_PIXELINDEX * (* GUI_pfGetpPalConvTable)(const LCD_LOGPALETTE * pLogPal, const GUI_BITMAP * pBitmap, int LayerIndex);
alejandroRL 0:dd702039127a 660
alejandroRL 0:dd702039127a 661 //
alejandroRL 0:dd702039127a 662 // Function pointer for mixing up 2 colors
alejandroRL 0:dd702039127a 663 //
alejandroRL 0:dd702039127a 664 extern LCD_COLOR (* GUI__pfMixColors)(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
alejandroRL 0:dd702039127a 665
alejandroRL 0:dd702039127a 666 //
alejandroRL 0:dd702039127a 667 // Function pointer for mixing up arrays of colors
alejandroRL 0:dd702039127a 668 //
alejandroRL 0:dd702039127a 669 extern void (* GUI__pfMixColorsBulk)(U32 * pFG, U32 * pBG, U32 * pDst, unsigned OffFG, unsigned OffBG, unsigned OffDest, unsigned xSize, unsigned ySize, U8 Intens);
alejandroRL 0:dd702039127a 670
alejandroRL 0:dd702039127a 671 //
alejandroRL 0:dd702039127a 672 // Function pointer for mixing color and gamma values
alejandroRL 0:dd702039127a 673 //
alejandroRL 0:dd702039127a 674 extern LCD_COLOR (* LCD_AA_pfMixColors16)(LCD_COLOR Color, LCD_COLOR BkColor, U8 Intens);
alejandroRL 0:dd702039127a 675
alejandroRL 0:dd702039127a 676 //
alejandroRL 0:dd702039127a 677 // Function pointer for drawing alpha memory devices
alejandroRL 0:dd702039127a 678 //
alejandroRL 0:dd702039127a 679 extern GUI_DRAWMEMDEV_FUNC * GUI__pfDrawAlphaMemdevFunc;
alejandroRL 0:dd702039127a 680
alejandroRL 0:dd702039127a 681 //
alejandroRL 0:dd702039127a 682 // Function pointer for drawing alpha bitmaps
alejandroRL 0:dd702039127a 683 //
alejandroRL 0:dd702039127a 684 extern GUI_DRAWBITMAP32_FUNC * GUI__pfDrawAlphaBitmapFunc;
alejandroRL 0:dd702039127a 685
alejandroRL 0:dd702039127a 686 //
alejandroRL 0:dd702039127a 687 // API list to be used for MultiBuffering
alejandroRL 0:dd702039127a 688 //
alejandroRL 0:dd702039127a 689 extern const GUI_MULTIBUF_API GUI_MULTIBUF_APIList;
alejandroRL 0:dd702039127a 690 extern const GUI_MULTIBUF_API GUI_MULTIBUF_APIListMasked;
alejandroRL 0:dd702039127a 691 extern const GUI_MULTIBUF_API_EX GUI_MULTIBUF_APIListEx;
alejandroRL 0:dd702039127a 692
alejandroRL 0:dd702039127a 693 #ifdef GL_CORE_C
alejandroRL 0:dd702039127a 694 #define GUI_EXTERN
alejandroRL 0:dd702039127a 695 #else
alejandroRL 0:dd702039127a 696 #define GUI_EXTERN extern
alejandroRL 0:dd702039127a 697 #endif
alejandroRL 0:dd702039127a 698
alejandroRL 0:dd702039127a 699 GUI_EXTERN void (* GUI_pfExecAnimations)(void);
alejandroRL 0:dd702039127a 700 GUI_EXTERN int (* GUI_pfUpdateSoftLayer)(void);
alejandroRL 0:dd702039127a 701
alejandroRL 0:dd702039127a 702 GUI_EXTERN void (* GUI_pfAfterInitHook)(void);
alejandroRL 0:dd702039127a 703
alejandroRL 0:dd702039127a 704 #ifdef WIN32
alejandroRL 0:dd702039127a 705 GUI_EXTERN void (* GUI_pfSoftlayerGetPixel)(int x, int y, void * p);
alejandroRL 0:dd702039127a 706 #endif
alejandroRL 0:dd702039127a 707
alejandroRL 0:dd702039127a 708 GUI_EXTERN void (* GUI_pfHookMTOUCH)(const GUI_MTOUCH_STATE * pState);
alejandroRL 0:dd702039127a 709
alejandroRL 0:dd702039127a 710 GUI_EXTERN const GUI_UC_ENC_APILIST * GUI_pUC_API; /* Unicode encoding API */
alejandroRL 0:dd702039127a 711
alejandroRL 0:dd702039127a 712 GUI_EXTERN GUI_SADDR char GUI_DecChar;
alejandroRL 0:dd702039127a 713 GUI_EXTERN GUI_tfTimer * GUI_pfTimerExec;
alejandroRL 0:dd702039127a 714 GUI_EXTERN WM_tfHandlePID * WM_pfHandlePID;
alejandroRL 0:dd702039127a 715 GUI_EXTERN void (* GUI_pfDispCharStyle)(U16 Char);
alejandroRL 0:dd702039127a 716
alejandroRL 0:dd702039127a 717 GUI_EXTERN int GUI__BufferSize; // Required buffer size in pixels for alpha blending and/or antialiasing
alejandroRL 0:dd702039127a 718 GUI_EXTERN int GUI_AA__ClipX0; // x0-clipping value for AA module
alejandroRL 0:dd702039127a 719
alejandroRL 0:dd702039127a 720 GUI_EXTERN I8 GUI__aNumBuffers[GUI_NUM_LAYERS]; // Number of buffers used per layer
alejandroRL 0:dd702039127a 721 GUI_EXTERN U8 GUI__PreserveTrans;
alejandroRL 0:dd702039127a 722 GUI_EXTERN U8 GUI__IsInitialized;
alejandroRL 0:dd702039127a 723
alejandroRL 0:dd702039127a 724 GUI_EXTERN U8 GUI__NumLayersInUse;
alejandroRL 0:dd702039127a 725 GUI_EXTERN U32 GUI__LayerMask;
alejandroRL 0:dd702039127a 726
alejandroRL 0:dd702039127a 727 #if GUI_SUPPORT_ROTATION
alejandroRL 0:dd702039127a 728 GUI_EXTERN const tLCD_APIList * GUI_pLCD_APIList; /* Used for rotating text */
alejandroRL 0:dd702039127a 729 #endif
alejandroRL 0:dd702039127a 730
alejandroRL 0:dd702039127a 731 GUI_EXTERN I16 GUI_OrgX, GUI_OrgY;
alejandroRL 0:dd702039127a 732
alejandroRL 0:dd702039127a 733 #undef GUI_EXTERN
alejandroRL 0:dd702039127a 734
alejandroRL 0:dd702039127a 735 #if defined(__cplusplus)
alejandroRL 0:dd702039127a 736 }
alejandroRL 0:dd702039127a 737 #endif
alejandroRL 0:dd702039127a 738
alejandroRL 0:dd702039127a 739 #endif /* GUI_PRIVATE_H */
alejandroRL 0:dd702039127a 740
alejandroRL 0:dd702039127a 741 /*************************** End of file ****************************/