34 #ifndef GUIDRV_LIN_PRIVATE_H 35 #define GUIDRV_LIN_PRIVATE_H 39 #if defined(__cplusplus) 49 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 53 U16 SIM_Lin_ReadMem16 (
unsigned int Off);
54 U32 SIM_Lin_ReadMem32 (
unsigned int Off);
55 U8 SIM_Lin_ReadMem08p (
U8 * p);
56 U32 SIM_Lin_ReadMem32p (
U32 * p);
57 void SIM_Lin_WriteMem16 (
unsigned int Off,
U16 Data);
58 void SIM_Lin_WriteMem32 (
unsigned int Off,
U32 Data);
59 void SIM_Lin_WriteMem08p(
U8 * p,
U8 Data);
60 void SIM_Lin_WriteMem16p(
U16 * p,
U16 Data);
61 void SIM_Lin_WriteMem32p(
U32 * p,
U32 Data);
62 void SIM_Lin_memcpy (
void * pDst,
const void * pSrc,
int Len);
63 void SIM_Lin_memset (
void * pDst,
U8 Value,
U32 Len);
64 void SIM_Lin_SetVRAMAddr(
int LayerIndex,
void * pVRAM);
65 void SIM_Lin_SetVRAMSize(
int LayerIndex,
int vxSize,
int vySize,
int xSize,
int ySize);
66 void SIM_Lin_CopyBuffer (
int IndexSrc,
int IndexDst);
67 void SIM_Lin_ShowBuffer (
int Index);
71 #define LCD_READ_MEM16(VRAMAddr, Off) SIM_Lin_ReadMem16(Off) 72 #define LCD_READ_MEM32(VRAMAddr, Off) SIM_Lin_ReadMem32(Off) 73 #define LCD_READ_MEM08P(p) SIM_Lin_ReadMem08p(p) 74 #define LCD_READ_MEM32P(p) SIM_Lin_ReadMem32p(p) 75 #define LCD_WRITE_MEM16(VRAMAddr, Off, Data) SIM_Lin_WriteMem16(Off, Data) 76 #define LCD_WRITE_MEM32(VRAMAddr, Off, Data) SIM_Lin_WriteMem32(Off, Data) 77 #define LCD_WRITE_MEM08P(p, Data) SIM_Lin_WriteMem08p(p, Data) 78 #define LCD_WRITE_MEM16P(p, Data) SIM_Lin_WriteMem16p(p, Data) 79 #define LCD_WRITE_MEM32P(p, Data) SIM_Lin_WriteMem32p(p, Data) 81 #define GUI_MEMCPY(pDst, pSrc, Len) SIM_Lin_memcpy(pDst, pSrc, Len) 83 #define GUI_MEMSET(pDst, Value, Len) SIM_Lin_memset(pDst, Value, Len) 88 #define LCD_READ_MEM16(VRAMAddr, Off) (*((U16 *)VRAMAddr + (U32)Off)) 89 #define LCD_READ_MEM32(VRAMAddr, Off) (*((U32 *)VRAMAddr + (U32)Off)) 90 #define LCD_READ_MEM08P(p) (*((U8 *)p)) 91 #define LCD_READ_MEM32P(p) (*((U32 *)p)) 92 #define LCD_WRITE_MEM16(VRAMAddr, Off, Data) *((U16 *)VRAMAddr + (U32)Off) = Data 93 #define LCD_WRITE_MEM32(VRAMAddr, Off, Data) *((U32 *)VRAMAddr + (U32)Off) = Data 94 #define LCD_WRITE_MEM08P(p, Data) *((U8 *)p) = Data 95 #define LCD_WRITE_MEM16P(p, Data) *((U16 *)p) = Data 96 #define LCD_WRITE_MEM32P(p, Data) *((U32 *)p) = Data 99 #define WRITE_MEM16(VRAMAddr, Off, Data) LCD_WRITE_MEM16(VRAMAddr, Off, Data) 100 #define WRITE_MEM32(VRAMAddr, Off, Data) LCD_WRITE_MEM32(VRAMAddr, Off, Data) 101 #define READ_MEM08P(p) LCD_READ_MEM08P(p) 102 #define READ_MEM16(VRAMAddr, Off) LCD_READ_MEM16(VRAMAddr, Off) 103 #define READ_MEM32(VRAMAddr, Off) LCD_READ_MEM32(VRAMAddr, Off) 104 #define READ_MEM32P(p) LCD_READ_MEM32P(p) 105 #define WRITE_MEM08P(p, Data) LCD_WRITE_MEM08P(p, Data) 106 #define WRITE_MEM16P(p, Data) LCD_WRITE_MEM16P(p, Data) 107 #define WRITE_MEM32P(p, Data) LCD_WRITE_MEM32P(p, Data) 109 #define OFF2PTR08(VRAMAddr, Off) (U8 *)((U8 *)VRAMAddr + (Off )) 110 #define OFF2PTR16(VRAMAddr, Off) (U16 *)((U8 *)VRAMAddr + (Off << 1)) 111 #define OFF2PTR32(VRAMAddr, Off) (U32 *)((U8 *)VRAMAddr + (Off << 2)) 116 #define DEFAULT_CONTEXT_MEMBERS \ 121 int vxSize, vySize; \ 126 void (* pfFillRect) (int , \ 132 void (* pfCopyBuffer)(int , \ 135 void (* pfDrawBMP1) (int , \ 143 const LCD_PIXELINDEX * ); \ 144 void (* pfDrawBMP8) (int , \ 151 const LCD_PIXELINDEX * ); \ 152 void (* pfCopyRect) (int , \ 160 #ifndef PRIVATE_CONTEXT_MEMBERS 161 #define PRIVATE_CONTEXT_MEMBERS 167 #define DEFAULT_MANAGEMENT_GETDEVFUNC() \ 168 case LCD_DEVFUNC_SET_VRAM_ADDR: \ 169 return (void (*)(void))_SetVRAMAddr; \ 170 case LCD_DEVFUNC_SET_VSIZE: \ 171 return (void (*)(void))_SetVSize; \ 172 case LCD_DEVFUNC_SET_SIZE: \ 173 return (void (*)(void))_SetSize; \ 174 case LCD_DEVFUNC_SETPOS: \ 175 return (void (*)(void))_SetPos; \ 176 case LCD_DEVFUNC_GETPOS: \ 177 return (void (*)(void))_GetPos; \ 178 case LCD_DEVFUNC_SETALPHA: \ 179 return (void (*)(void))_SetAlpha; \ 180 case LCD_DEVFUNC_SETVIS: \ 181 return (void (*)(void))_SetVis; \ 182 case LCD_DEVFUNC_INIT: \ 183 return (void (*)(void))_Init; \ 184 case LCD_DEVFUNC_ON: \ 185 return (void (*)(void))_On; \ 186 case LCD_DEVFUNC_OFF: \ 187 return (void (*)(void))_Off; \ 188 case LCD_DEVFUNC_ALPHAMODE: \ 189 return (void (*)(void))_SetAlphaMode; \ 190 case LCD_DEVFUNC_CHROMAMODE: \ 191 return (void (*)(void))_SetChromaMode; \ 192 case LCD_DEVFUNC_CHROMA: \ 193 return (void (*)(void))_SetChroma; \ 194 case LCD_DEVFUNC_COPYBUFFER: \ 195 return (void (*)(void))_CopyBuffer; \ 196 case LCD_DEVFUNC_SHOWBUFFER: \ 197 return (void (*)(void))_ShowBuffer; \ 198 case LCD_DEVFUNC_SETFUNC: \ 199 return (void (*)(void))_SetDevFunc; \ 200 case LCD_DEVFUNC_FILLRECT: \ 201 return (void (*)(void))((DRIVER_CONTEXT *)(*ppDevice)->u.pContext)->pfFillRect; \ 202 case LCD_DEVFUNC_DRAWBMP_1BPP: \ 203 return (void (*)(void))((DRIVER_CONTEXT *)(*ppDevice)->u.pContext)->pfDrawBMP1; \ 204 case LCD_DEVFUNC_DRAWBMP_8BPP: \ 205 return (void (*)(void))((DRIVER_CONTEXT *)(*ppDevice)->u.pContext)->pfDrawBMP8; \ 206 case LCD_DEVFUNC_COPYRECT: \ 207 return (void (*)(void))((DRIVER_CONTEXT *)(*ppDevice)->u.pContext)->pfCopyRect; 212 #ifndef PRIVATE_MANAGEMENT_GETDEVFUNC 213 #define PRIVATE_MANAGEMENT_GETDEVFUNC() 219 #define DEFAULT_MANAGEMENT_SETDEVFUNC() \ 220 case LCD_DEVFUNC_FILLRECT: \ 221 pContext->pfFillRect = (void (*)(int LayerIndex, int x0, int y0, int x1, int y1, U32 PixelIndex))pFunc; \ 223 case LCD_DEVFUNC_COPYBUFFER: \ 224 pContext->pfCopyBuffer = (void (*)(int LayerIndex, int IndexSrc, int IndexDst))pFunc; \ 226 case LCD_DEVFUNC_DRAWBMP_1BPP: \ 227 pContext->pfDrawBMP1 = (void (*)(int LayerIndex, int x, int y, U8 const * p, int Diff, int xSize, int ySize, int BytesPerLine, const LCD_PIXELINDEX * pTrans))pFunc; \ 229 case LCD_DEVFUNC_DRAWBMP_8BPP: \ 230 pContext->pfDrawBMP8 = (void (*)(int LayerIndex, int x, int y, U8 const * p, int xSize, int ySize, int BytesPerLine, const LCD_PIXELINDEX * pTrans))pFunc; \ 232 case LCD_DEVFUNC_COPYRECT: \ 233 pContext->pfCopyRect = (void (*)(int LayerIndex, int x0, int y0, int x1, int y1, int xSize, int ySize))pFunc; \ 239 #ifndef PRIVATE_MANAGEMENT_SETDEVFUNC 240 #define PRIVATE_MANAGEMENT_SETDEVFUNC() 250 #if (LCD_MIRROR == 2) 251 #define MIRROR(x) x = ((x & 0x000000ffUL) << 8) \ 252 | ((x & 0x0000ff00UL) >> 8) \ 253 | ((x & 0x00ff0000UL) << 8) \ 254 | ((x & 0xff000000UL) >> 8) 256 #define MIRROR(x) x = ((x & 0x000000ffUL) << 24) \ 257 | ((x & 0x0000ff00UL) << 8) \ 258 | ((x & 0x00ff0000UL) >> 8) \ 259 | ((x & 0xff000000UL) >> 24) 308 DRIVER_CONTEXT * pContext;
310 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
325 static void _SetPos(
GUI_DEVICE * pDevice,
int xPos,
int yPos) {
326 DRIVER_CONTEXT * pContext;
331 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
332 pContext->
xPos = xPos;
333 pContext->
yPos = yPos;
347 static void _GetPos(
GUI_DEVICE * pDevice,
int * pxPos,
int * pyPos) {
348 DRIVER_CONTEXT * pContext;
352 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
353 *pxPos = pContext->
xPos;
354 *pyPos = pContext->
yPos;
366 static void _SetAlpha(
GUI_DEVICE * pDevice,
int Alpha) {
367 DRIVER_CONTEXT * pContext;
372 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
373 pContext->Alpha = Alpha;
387 static void _SetVis(
GUI_DEVICE * pDevice,
int OnOff) {
388 DRIVER_CONTEXT * pContext;
393 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
394 pContext->IsVisible = OnOff;
410 r = _InitOnce(pDevice);
445 static void _SetAlphaMode(
GUI_DEVICE * pDevice,
int AlphaMode) {
460 static void _SetChromaMode(
GUI_DEVICE * pDevice,
int ChromaMode) {
493 static void _CopyBuffer(
GUI_DEVICE * pDevice,
int IndexSrc,
int IndexDst) {
494 DRIVER_CONTEXT * pContext;
495 #if (!defined(WIN32) | defined(GUIDRV_SLAYER)) 496 U32 AddrSrc, AddrDst;
503 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
504 if (IndexSrc != IndexDst) {
505 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 506 SIM_Lin_CopyBuffer(IndexSrc, IndexDst);
509 BufferSize = (((
U32)pContext->
xSize * pContext->
ySize * BitsPerPixel) >> 3);
510 AddrSrc = pContext->BaseAddr + BufferSize * IndexSrc;
511 AddrDst = pContext->BaseAddr + BufferSize * IndexDst;
512 if (pContext->pfCopyBuffer) {
516 pContext->pfCopyBuffer(pDevice->
LayerIndex, IndexSrc, IndexDst);
521 GUI_MEMCPY((
void *)AddrDst, (
void *)AddrSrc, BufferSize);
526 pContext->VRAMAddr = AddrDst;
541 static void _ShowBuffer(
GUI_DEVICE * pDevice,
int Index) {
546 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 547 SIM_Lin_ShowBuffer(Index);
562 static void _SetOrg(
GUI_DEVICE * pDevice,
int x,
int y) {
563 #if (!defined(WIN32) | defined(GUIDRV_SLAYER)) 564 DRIVER_CONTEXT * pContext;
569 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 572 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
576 switch (Orientation) {
618 static void _SetVRAMAddr(
GUI_DEVICE * pDevice,
void * pVRAM) {
619 DRIVER_CONTEXT * pContext;
624 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
625 pContext->VRAMAddr = pContext->BaseAddr = (
U32)pVRAM;
629 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 630 SIM_Lin_SetVRAMAddr(pDevice->
LayerIndex, pVRAM);
638 static void _SetVSize(
GUI_DEVICE * pDevice,
int xSize,
int ySize) {
639 DRIVER_CONTEXT * pContext;
640 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 646 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 649 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
651 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 652 pContext->
vxSize = xSize * NumBuffers;
657 pContext->vxSizePhys = ySize;
660 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 661 pContext->
vySize = ySize * NumBuffers;
665 pContext->vxSizePhys = xSize;
668 #if defined(WIN32) && !defined(GUIDRV_SLAYER) 677 static void _SetSize(
GUI_DEVICE * pDevice,
int xSize,
int ySize) {
678 DRIVER_CONTEXT * pContext;
683 pContext = (DRIVER_CONTEXT *)pDevice->
u.
pContext;
684 if (pContext->vxSizePhys == 0) {
686 pContext->vxSizePhys = ySize;
688 pContext->vxSizePhys = xSize;
691 pContext->
xSize = xSize;
692 pContext->
ySize = ySize;
699 #if defined(__cplusplus)
int LCD_GetMirrorYEx(int LayerIndex)
int LCD_GetSwapXYEx(int LayerIndex)
#define LCD_DEVCAP_BITSPERPIXEL
#define PRIVATE_CONTEXT_MEMBERS
#define GUI_MEMCPY(pDest, pSrc, NumBytes)
#define LCD_X_INITCONTROLLER
I32(* pfGetDevProp)(GUI_DEVICE *pDevice, int Index)
#define LCD_X_SETCHROMAMODE
#define LCD_X_SETVRAMADDR
void GUI__memset(U8 *p, U8 Fill, int NumBytes)
int GUI_MULTIBUF_GetNumBuffers(void)
void * GUI_ALLOC_GetFixedBlock(GUI_ALLOC_DATATYPE Size)
#define DEFAULT_CONTEXT_MEMBERS
struct DRIVER_CONTEXT DRIVER_CONTEXT
int LCD_GetMirrorXEx(int LayerIndex)
#define LCD_X_SETALPHAMODE
int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void *pData)
This function is called by the display driver for several purposes. To support the according task the...
const GUI_DEVICE_API * pDeviceAPI
void LCDSIM_SetOrg(int x, int y, int LayerIndex)