?? st7529.c
字號:
return;
WriteTBit3:
if (pixels&(1<<4)) SETPIXEL(x+3, y, Index1);
if (!--xsize)
return;
WriteTBit4:
if (pixels&(1<<3)) SETPIXEL(x+4, y, Index1);
if (!--xsize)
return;
WriteTBit5:
if (pixels&(1<<2)) SETPIXEL(x+5, y, Index1);
if (!--xsize)
return;
WriteTBit6:
if (pixels&(1<<1)) SETPIXEL(x+6, y, Index1);
if (!--xsize)
return;
WriteTBit7:
if (pixels&(1<<0)) SETPIXEL(x+7, y, Index1);
if (!--xsize)
return;
x+=8;
pixels = *(++p);
goto WriteTBit0;
/*
Write without transparency
*/
WriteBit0:
SETPIXEL(x+0, y, (pixels&(1<<7)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit1:
SETPIXEL(x+1, y, (pixels&(1<<6)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit2:
SETPIXEL(x+2, y, (pixels&(1<<5)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit3:
SETPIXEL(x+3, y, (pixels&(1<<4)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit4:
SETPIXEL(x+4, y, (pixels&(1<<3)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit5:
SETPIXEL(x+5, y, (pixels&(1<<2)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit6:
SETPIXEL(x+6, y, (pixels&(1<<1)) ? Index1 : Index0);
if (!--xsize)
return;
WriteBit7:
SETPIXEL(x+7, y, (pixels&(1<<0)) ? Index1 : Index0);
if (!--xsize)
return;
x+=8;
pixels = *(++p);
goto WriteBit0;
/*
Write XOR mode
*/
WriteXBit0:
if (pixels&(1<<7))
XORPIXEL(x+0, y);
if (!--xsize)
return;
WriteXBit1:
if (pixels&(1<<6))
XORPIXEL(x+1, y);
if (!--xsize)
return;
WriteXBit2:
if (pixels&(1<<5))
XORPIXEL(x+2, y);
if (!--xsize)
return;
WriteXBit3:
if (pixels&(1<<4))
XORPIXEL(x+3, y);
if (!--xsize)
return;
WriteXBit4:
if (pixels&(1<<3))
XORPIXEL(x+4, y);
if (!--xsize)
return;
WriteXBit5:
if (pixels&(1<<2))
XORPIXEL(x+5, y);
if (!--xsize)
return;
WriteXBit6:
if (pixels&(1<<1))
XORPIXEL(x+6, y);
if (!--xsize)
return;
WriteXBit7:
if (pixels&(1<<0))
XORPIXEL(x+7, y);
if (!--xsize)
return;
x+=8;
pixels = *(++p);
goto WriteXBit0;
}
/*
*********************************************************
* *
* Draw Bitmap 2 BPP *
* *
*********************************************************
*/
#if (LCD_MAX_LOG_COLORS > 2)
static void DrawBitLine2BPP(int x, int y, U8 const*p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans)
{
PixelIndex pixels;
pixels = *p;
if (GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) switch (Diff&3)
{
case 0:
goto WriteTBit0;
case 1:
goto WriteTBit1;
case 2:
goto WriteTBit2;
default:
goto WriteTBit3;
}
else switch (Diff&3)
{
case 0:
goto WriteBit0;
case 1:
goto WriteBit1;
case 2:
goto WriteBit2;
default:
goto WriteBit3;
}
/*
Write without transparency
*/
WriteBit0:
SETPIXEL(x+0, y, *(pTrans+(pixels>>6)));
if (!--xsize)
return;
WriteBit1:
SETPIXEL(x+1, y, *(pTrans+(3&(pixels>>4))));
if (!--xsize)
return;
WriteBit2:
SETPIXEL(x+2, y, *(pTrans+(3&(pixels>>2))));
if (!--xsize)
return;
WriteBit3:
SETPIXEL(x+3, y, *(pTrans+(3&(pixels))));
if (!--xsize)
return;
pixels = *(++p);
x+=4;
goto WriteBit0;
/*
Write with transparency
*/
WriteTBit0:
if (pixels&(3<<6))
SETPIXEL(x+0, y, *(pTrans+(pixels>>6)));
if (!--xsize)
return;
WriteTBit1:
if (pixels&(3<<4))
SETPIXEL(x+1, y, *(pTrans+(3&(pixels>>4))));
if (!--xsize)
return;
WriteTBit2:
if (pixels&(3<<2))
SETPIXEL(x+2, y, *(pTrans+(3&(pixels>>2))));
if (!--xsize)
return;
WriteTBit3:
if (pixels&(3<<0))
SETPIXEL(x+3, y, *(pTrans+(3&(pixels))));
if (!--xsize)
return;
pixels = *(++p);
x+=4;
goto WriteTBit0;
}
#endif
/*
*********************************************************
* *
* Draw Bitmap 4 BPP *
* *
*********************************************************
*/
#if (LCD_MAX_LOG_COLORS > 4)
static void DrawBitLine4BPP(int x, int y, U8 const*p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans)
{
PixelIndex pixels;
pixels = *p;
if (GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) {
if ((Diff&1) ==0)
goto WriteTBit0;
goto WriteTBit1;
} else {
if ((Diff&1) ==0)
goto WriteBit0;
goto WriteBit1;
}
/*
Write without transparency
*/
WriteBit0:
SETPIXEL(x+0, y, *(pTrans+(pixels>>4)));
if (!--xsize)
return;
WriteBit1:
SETPIXEL(x+1, y, *(pTrans+(pixels&0xf)));
if (!--xsize)
return;
x+=2;
pixels = *(++p);
goto WriteBit0;
/*
Write with transparency
*/
WriteTBit0:
if (pixels>>4)
SETPIXEL(x+0, y, *(pTrans+(pixels>>4)));
if (!--xsize)
return;
WriteTBit1:
if (pixels&0xf)
SETPIXEL(x+1, y, *(pTrans+(pixels&0xf)));
if (!--xsize)
return;
x+=2;
pixels = *(++p);
goto WriteTBit0;
}
#endif
/*
*********************************************************
* *
* Draw Bitmap 8 BPP *
* *
* *
*********************************************************
*/
#if (LCD_MAX_LOG_COLORS > 16)
static void DrawBitLine8BPP(int x, int y, U8 const*p, int xsize, const LCD_PIXELINDEX*pTrans)
{
LCD_PIXELINDEX pixel;
uint8 colour, x0 = x, x1 = x + xsize, i;
int16 temp;
if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS)==0)
{
while (xsize > 0)
{
pixel = *p;
temp = ScanBuff[y][x/3];
colour = (*(pTrans+pixel))/8;
switch(x%3)
{
case 0:ScanBuff[y][x/3] = (temp & 0x07ff) | (uint16)(colour << 11);break;
case 1:ScanBuff[y][x/3] = (temp & 0xf83f) | (uint16)(colour << 6);break;
case 2:ScanBuff[y][x/3] = (temp & 0xffc0) | (colour);break;
default:break;
}
xsize--;
x++;
p++;
}
LCDCOM = ExtIn;
LcdSetWrite( x0, y, x1, y+1);
for(i = x0; i < x1; i+=3)
{
LCD_WRITE_A0(ScanBuff[y][i/3]);
}
}
else
{
while (xsize > 0)
{
pixel = *p;
if (pixel)
{
temp = ScanBuff[y][x/3];
colour = (*(pTrans+pixel))/8;
switch(x%3)
{
case 0:ScanBuff[y][x/3] = (temp & 0x07ff) | (uint16)(colour << 11);break;
case 1:ScanBuff[y][x/3] = (temp & 0xf83f) | (uint16)(colour << 6);break;
case 2:ScanBuff[y][x/3] = (temp & 0xffc0) | (colour);break;
default:break;
}
}
xsize--;
x++;
p++;
}
LCDCOM = ExtIn;
LcdSetWrite( x0, y, x1, y+1);
for(i = x0; i < x1; i+=3)
{
LCD_WRITE_A0(ScanBuff[y][i/3]);
}
}
}
#endif
/*
*********************************************************
* *
* Universal draw Bitmap routine *
* *
*********************************************************
*/
//上層調(diào)用的畫位圖函數(shù)
void LCD_L0_DrawBitmap (int x0, int y0,
int xsize, int ysize,
int BitsPerPixel,
int BytesPerLine,
const U8* pData, //pData表示要畫的位圖的數(shù)據(jù)指針
int Diff, //diff是有位圖有部分被剪切時,被剪切的到的第幾個象素.
const LCD_PIXELINDEX* pTrans) //pTran是位圖調(diào)色板
{
uint8 i;
for (i=0; i<ysize; i++)
{
switch (BitsPerPixel)
{
case 1:
DrawBitLine1BPP(x0, i+y0, pData, Diff, xsize, pTrans);
break;
#if (LCD_MAX_LOG_COLORS > 2)
case 2:
DrawBitLine2BPP(x0, i+y0, pData, Diff, xsize, pTrans);
break;
#endif
#if (LCD_MAX_LOG_COLORS > 4)
case 4:
DrawBitLine4BPP(x0, i+y0, pData, Diff, xsize, pTrans);
break;
#endif
#if (LCD_MAX_LOG_COLORS > 16)
case 8:
DrawBitLine8BPP(x0, i+y0, pData, xsize, pTrans);
break;
#endif
}
pData += BytesPerLine;
}
}
/***************************************************************************************/
int OrgX, OrgY;
void LCD_L0_SetOrg(int x, int y)
{
OrgX = x;
OrgY = y;
}
/***************************************************************************************/
int LCD_L0_Init(void)
{
LCD_INIT_CONTROLLER();
return 0;
}
/*
*********************************************************
* *
* Support for dynamic inversion of entire LCD *
* *
*********************************************************
*/
#define LCD_REVERSEMODE_SUPPORT 1
#if LCD_REVERSEMODE_SUPPORT
void LCD_SetNormalDispMode (void) {
}
void LCD_SetReverseDispMode (void) {
}
#endif
/*
*********************************************************
* *
* LCD_SetPaletteEntry *
* *
*********************************************************
*/
void LCD_L0_SetLUTEntry(U8 Pos, LCD_COLOR color) {
Pos=Pos;
color=color;
}
/*
*********************************************************
* *
* LCD_On *
* LCD_Off *
* *
*********************************************************
*/
void LCD_Off (void) {
#ifdef LCD_OFF
LCD_OFF();
#endif
}
void LCD_On (void) {
#ifdef LCD_ON
LCD_ON();
#endif
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -