?? lcdpage1bpp.lst
字號(hào):
&& !LCD_SWAP_XY \
&& !LCD_MIRROR_X \
&& !LCD_MIRROR_Y
void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
#if LCD_CACHE
int y0_ = y0 & 7;
int y1_ = (y1 + 1) & 7;
int NumberOfBytes = x1 - x0 + 1;
if (y0_) {
U8 * pData;
int x0_ = x0;
U8 Mask = 0xff << y0_;
int Page = y0 >> 3;
if ((y0 & 0xfff8) == ((y1 + 1) & 0xfff8)) {
Mask &= 0xff >> (8 - y1_);
}
SET_PAGE_IF_NEEDED(Page);
SET_OFFSET_IF_NEEDED(x0);
pData = &_VRam[_Page][_Offset];
for (; x0_ <= x1; x0_++) {
if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
_VRam[Page][x0_] ^= Mask;
} else {
if (LCD_COLORINDEX) {
_VRam[Page][x0_] |= Mask;
} else {
_VRam[Page][x0_] &= ~Mask;
}
}
}
WRITE_DATAM(pData, NumberOfBytes);
if ((y0 & 0xfff8) == (y1 & 0xfff8)) {
return;
}
}
{
int Page = ((y0 + 7) & 0xfff8) >> 3;
int NumPages = (((y1 + 1) & 0xfff8) >> 3) - Page;
if (NumPages) {
while (NumPages--) {
C51 COMPILER V8.05a LCDPAGE1BPP 04/11/2008 14:19:26 PAGE 18
U8 * pData;
int x0_ = x0;
SET_PAGE_IF_NEEDED(Page++);
SET_OFFSET_IF_NEEDED(x0);
pData = &_VRam[_Page][_Offset];
for (; x0_ <= x1; x0_++) {
if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
_VRam[_Page][x0_] ^= 0xff;
} else {
if (LCD_COLORINDEX) {
_VRam[_Page][x0_] = 0xff;
} else {
_VRam[_Page][x0_] = 0x00;
}
}
}
WRITE_DATAM(pData, NumberOfBytes);
}
}
}
if (y1_) {
U8 * pData;
int x0_ = x0;
U8 Mask = 0xff >> (8 - y1_);
int Page = y1 >> 3;
SET_PAGE_IF_NEEDED(Page);
SET_OFFSET_IF_NEEDED(x0);
pData = &_VRam[Page][_Offset];
for (; x0_ <= x1; x0_++) {
if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
_VRam[Page][x0_] ^= Mask;
} else {
if (LCD_COLORINDEX) {
_VRam[Page][x0_] |= Mask;
} else {
_VRam[Page][x0_] &= ~Mask;
}
}
}
WRITE_DATAM(pData, NumberOfBytes);
}
#else
int y0_ = y0 & 7;
int y1_ = (y1 + 1) & 7;
if (y0_) {
int x0_ = x0;
U8 Mask = 0xff << y0_;
if ((y0 & 0xfff8) == (y1 & 0xfff8)) {
Mask &= 0xff >> (8 - y1_);
}
SET_PAGE_IF_NEEDED(y0 >> 3);
SET_OFFSET_IF_NEEDED(x0);
for (; x0_ <= x1; x0_++) {
U8 Data = GET_CURRENT_BYTE();
if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
WRITE_DATA1(Data ^ Mask);
} else {
WRITE_DATA1((LCD_COLORINDEX) ? Data | Mask : Data & ~Mask);
}
}
if ((y0 & 0xfff8) == (y1 & 0xfff8)) {
return;
C51 COMPILER V8.05a LCDPAGE1BPP 04/11/2008 14:19:26 PAGE 19
}
}
{
int Page = ((y0 + 7) & 0xfff8) >> 3;
int NumPages = (((y1 + 1) & 0xfff8) >> 3) - Page;
if (NumPages) {
while (NumPages--) {
int x0_ = x0;
SET_PAGE_IF_NEEDED(Page++);
SET_OFFSET_IF_NEEDED(x0);
for (; x0_ <= x1; x0_++) {
if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
WRITE_DATA1(GET_CURRENT_BYTE() ^ 0xff);
} else {
WRITE_DATA1((LCD_COLORINDEX) ? 0xff : 0x00);
}
}
}
}
}
if (y1_) {
int x0_ = x0;
U8 Mask = 0xff >> (8 - y1_);
SET_PAGE_IF_NEEDED(y1 >> 3);
SET_OFFSET_IF_NEEDED(x0);
for (; x0_ <= x1; x0_++) {
U8 Data = GET_CURRENT_BYTE();
if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
WRITE_DATA1(Data ^ Mask);
} else {
WRITE_DATA1((LCD_COLORINDEX) ? Data | Mask : Data & ~Mask);
}
}
}
#endif
}
/*********************************************
*
* LCD_L0_FillRect (not optimized)
*
**********************************************
*/
#else
void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
for (; y0 <= y1; y0++) {
LCD_L0_DrawHLine(x0, y0, x1);
}
}
#endif
/*********************************************
*
* LCD_L0_DrawBitmap
*
**********************************************
*/
void LCD_L0_DrawBitmap(int x0, int y0,
C51 COMPILER V8.05a LCDPAGE1BPP 04/11/2008 14:19:26 PAGE 20
int xsize, int ysize,
int BitsPerPixel,
int BytesPerLine,
const U8* pData, int Diff,
const LCD_PIXELINDEX* pTrans)
{
int i;
#if LCD_OPTIMIZE \
&& !LCD_SWAP_XY \
&& !LCD_MIRROR_X \
&& !LCD_MIRROR_Y
int Page0 = y0 >> 3;
int Page1 = (y0 + ysize - 1) >> 3;
int Opt = 0;
switch (BitsPerPixel) {
case 1:
Opt = 1;
xsize += Diff & 7;
for (i = Diff; i < xsize; i++) {
_DrawBitLine1BPP(x0 + i, y0, pData + (i >> 3), ysize, pTrans, BytesPerLine, 0x80 >> (i & 7));
}
break;
case 8:
Opt = 1;
for (i = Diff; i < xsize; i++) {
_DrawBitLine8BPP(x0 + i, y0, pData + i, ysize, pTrans, BytesPerLine);
}
break;
}
if (Opt) {
for (; Page0 <= Page1; Page0++) {
U8 * p = &_VRam[Page0][x0];
SET_PAGE_IF_NEEDED(Page0);
SET_OFFSET_IF_NEEDED(x0);
WRITE_DATAM(p, xsize);
}
return;
}
#endif
/* Use _DrawBitLineXBPP */
for (i=0; i<ysize; i++) {
switch (BitsPerPixel) {
#if !LCD_OPTIMIZE \
|| LCD_SWAP_XY \
|| LCD_MIRROR_X \
|| LCD_MIRROR_Y
case 1:
_DrawBitLine1BPP(x0, i + y0, pData, Diff, xsize, pTrans);
break;
#endif
#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)
#if !LCD_OPTIMIZE \
C51 COMPILER V8.05a LCDPAGE1BPP 04/11/2008 14:19:26 PAGE 21
|| LCD_SWAP_XY \
|| LCD_MIRROR_X \
|| LCD_MIRROR_Y
case 8:
_DrawBitLine8BPP(x0, i + y0, pData, xsize, pTrans);
break;
#endif
#endif
#if (LCD_BITSPERPIXEL > 8)
case 16:
_DrawBitLine16BPP(x0, i + y0, (const U16 *)pData, xsize, pTrans);
break;
#endif
}
pData += BytesPerLine;
}
}
/*********************************************
*
* LCD_L0_SetOrg
*
**********************************************
*/
void LCD_L0_SetOrg(int x, int y) {
GUI_USE_PARA(x);
GUI_USE_PARA(y);
}
/*********************************************
*
* LCD_On / LCD_Off
*
**********************************************
*/
void LCD_On (void) {
#ifdef LCD_ON
LCD_ON();
#endif
}
void LCD_Off (void) {
#ifdef LCD_OFF
LCD_OFF();
#endif
}
/*********************************************
*
* LCD_L0_Init
*
**********************************************
Purpose:
Initialises the LCD-controller.
*/
int LCD_L0_Init(void) {
#if LCD_CACHE
memset(_VRam, 0, sizeof(_VRam));
#endif
C51 COMPILER V8.05a LCDPAGE1BPP 04/11/2008 14:19:26 PAGE 22
LCD_INIT_CONTROLLER();
LCD_ON();
/* Clear display RAM */
{
int x, y;
U8 Data = 0x00;
for (y = 0; y < ((LCD_YSIZE + 7) >> 3); y++) {
SET_PAGE(y);
for (x = 0; x < LCD_XSIZE; x++) {
SET_OFFSET(x);
WRITE_DATA(Data);
}
}
}
return 0;
}
/*********************************************
*
* LCD_L0_SetLUTEntry
*
**********************************************
*/
void LCD_L0_SetLUTEntry(U8 Pos, LCD_COLOR Color) {
GUI_USE_PARA(Pos);
GUI_USE_PARA(Color);
}
#else
1318
1319 void LCDPage1bpp(void) { } /* avoid empty object files */
1320
1321 #endif /* (LCD_CONTROLLER undefined) */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -