47 static void _FillRectOpt8(
GUI_DEVICE * pDevice,
int x0,
int y0,
int x1,
int y1) {
49 U32 Data, ColorMask, AndMask, Off0, OffLine;
50 int NumPixel_0, NumPixel_1, RemPixels, NumLines, RemLines, RemItems;
56 Off0 = XY2OFF32(pContext->vxSizePhys, x0, y0);
57 RemPixels = x1 - x0 + 1;
58 NumLines = y1 - y0 + 1;
59 OffLine = pContext->vxSizePhys >> 2;
67 for (RemLines = NumLines; RemLines; RemLines--) {
68 pDest = ((
U32 *)pContext->VRAMAddr) + Off0 + OffLine * (RemLines - 1);
69 AndMask = ~(0xFFFFFFFF << (8 * NumPixel_0));
70 if ((RemPixels < 3) && (NumPixel_1)) {
71 AndMask |= ~(0xFFFFFFFF >> (8 * (3 - NumPixel_1)));
73 #if (LCD_ENDIAN_BIG == 1) 81 RemPixels -= (4 - NumPixel_0);
87 for (RemLines = NumLines; RemLines; RemLines--) {
89 pDest = ((
U32 *)pContext->VRAMAddr) + Off0 + OffLine * (RemLines - 1);
90 while (RemItems >= 4) {
98 Off0 += (RemPixels >> 2);
99 RemPixels -= (RemPixels >> 2) << 2;
105 for (RemLines = NumLines; RemLines; RemLines--) {
106 pDest = ((
U32 *)pContext->VRAMAddr) + Off0 + OffLine * (RemLines - 1);
107 AndMask = 0xFFFFFF00 << (8 * NumPixel_1);
108 #if (LCD_ENDIAN_BIG == 1) 121 for (RemLines = NumLines; RemLines; RemLines--) {
122 pDest = ((
U32 *)pContext->VRAMAddr) + Off0 + OffLine * (RemLines - 1);
123 AndMask = ~(0xFFFFFFFF << (8 * NumPixel_0));
124 if ((RemPixels < 3) && (NumPixel_1)) {
125 AndMask |= ~(0xFFFFFFFF >> (8 * (3 - NumPixel_1)));
127 ColorMask = (ColorIndex * 0x01010101) & ~AndMask;
128 #if (LCD_ENDIAN_BIG == 1) 138 RemPixels -= (4 - NumPixel_0);
143 if (RemPixels >= 4) {
144 ColorMask = ColorIndex * 0x01010101;
145 for (RemLines = NumLines; RemLines; RemLines--) {
146 RemItems = RemPixels;
147 pDest = ((
U32 *)pContext->VRAMAddr) + Off0 + OffLine * (RemLines - 1);
148 while (RemItems >= 32) {
160 while (RemItems >= 4) {
166 Off0 += (RemPixels >> 2);
167 RemPixels -= (RemPixels >> 2) << 2;
173 for (RemLines = NumLines; RemLines; RemLines--) {
174 pDest = ((
U32 *)pContext->VRAMAddr) + Off0 + OffLine * (RemLines - 1);
175 AndMask = 0xFFFFFF00 << (8 * NumPixel_1);
176 ColorMask = (ColorIndex * 0x01010101) & ~AndMask;
177 #if (LCD_ENDIAN_BIG == 1) GUI_SADDR GUI_CONTEXT * GUI_pContext
#define LCD__GetColorIndex()
#define WRITE_MEM32P(p, Data)