ugfx_release_2.6
mobyfab 2012-10-06 14:37:13 +02:00
commit 52e9fb7d59
4 changed files with 33 additions and 25 deletions

View File

@ -5,7 +5,8 @@
current stable: 1.1
*** changer after 1.1 ***
FIX: orientation macros changed
FIX: huge internal bugfix in orientation stuff (big thanks to Abhishek)
*** changes after 1.0 ***
FIX: removed gdisp and touchpad prefix of driver directories

View File

@ -182,21 +182,22 @@ static void lld_lcdSetCursor(coord_t x, coord_t y) {
* R21h - 9 bit
*/
switch(GDISP.Orientation) {
case GDISP_ROTATE_180:
lld_lcdWriteReg(0x0020, (SCREEN_WIDTH-1-x) & 0x00FF);
lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT-1-y) & 0x01FF);
break;
case GDISP_ROTATE_0:
lld_lcdWriteReg(0x0020, x & 0x00FF);
lld_lcdWriteReg(0x0021, y & 0x01FF);
break;
case GDISP_ROTATE_90:
/* Note X has already been mirrored, so we do it directly */
lld_lcdWriteReg(0x0020, y & 0x00FF);
lld_lcdWriteReg(0x0021, x & 0x01FF);
break;
case GDISP_ROTATE_180:
lld_lcdWriteReg(0x0020, (SCREEN_WIDTH - 1 - x) & 0x00FF);
lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT - 1 - y) & 0x01FF);
break;
case GDISP_ROTATE_270:
lld_lcdWriteReg(0x0020, (SCREEN_WIDTH - y - 1) & 0x00FF);
lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT - x - 1) & 0x01FF);
lld_lcdWriteReg(0x0020, (SCREEN_WIDTH - 1 - y) & 0x00FF);
lld_lcdWriteReg(0x0021, (SCREEN_HEIGHT - 1 - x) & 0x01FF);
break;
}
}
@ -209,23 +210,29 @@ static void lld_lcdSetViewPort(uint16_t x, uint16_t y, uint16_t cx, uint16_t cy)
switch(GDISP.Orientation) {
case GDISP_ROTATE_0:
lld_lcdWriteReg(0x46, (((x+cx-1) << 8) & 0xFF00 ) | (x & 0x00FF));
lld_lcdWriteReg(0x46, (((x + cx - 1) << 8) & 0xFF00 ) |
(x & 0x00FF));
lld_lcdWriteReg(0x48, y & 0x01FF);
lld_lcdWriteReg(0x47, (y+cy-1) & 0x01FF);
lld_lcdWriteReg(0x47, (y + cy - 1) & 0x01FF);
break;
case GDISP_ROTATE_90:
lld_lcdWriteReg(0x46, (((x+cx-1) << 8) & 0xFF00) | ((y+cy) & 0x00FF));
lld_lcdWriteReg(0x46, (((y + cy - 1) << 8) & 0xFF00) |
(y & 0x00FF));
lld_lcdWriteReg(0x48, x & 0x01FF);
lld_lcdWriteReg(0x47, (x+cx-1) & 0x01FF);
lld_lcdWriteReg(0x47, (x + cx - 1) & 0x01FF);
break;
case GDISP_ROTATE_180:
lld_lcdWriteReg(0x46, (((SCREEN_WIDTH-x-1) & 0x00FF) << 8) | ((SCREEN_WIDTH - (x+cx)) & 0x00FF));
lld_lcdWriteReg(0x48, (SCREEN_HEIGHT-(y+cy)) & 0x01FF);
lld_lcdWriteReg(0x47, (SCREEN_HEIGHT-y-1) & 0x01FF);
lld_lcdWriteReg(0x46, (((SCREEN_WIDTH - x - 1) & 0x00FF) << 8) |
((SCREEN_WIDTH - (x + cx)) & 0x00FF));
lld_lcdWriteReg(0x48, (SCREEN_HEIGHT - (y + cy)) & 0x01FF);
lld_lcdWriteReg(0x47, (SCREEN_HEIGHT- y - 1) & 0x01FF);
break;
case GDISP_ROTATE_270:
lld_lcdWriteReg(0x46, (((SCREEN_WIDTH - y - 1) & 0x00FF) << 8) | ((SCREEN_WIDTH - (y+cy)) & 0x00FF));
lld_lcdWriteReg(0x48, (SCREEN_HEIGHT - (x+cx)) & 0x01FF);
lld_lcdWriteReg(0x46, (((SCREEN_WIDTH - y - 1) & 0x00FF) << 8) |
((SCREEN_WIDTH - (y + cy)) & 0x00FF));
lld_lcdWriteReg(0x48, (SCREEN_HEIGHT - (x + cx)) & 0x01FF);
lld_lcdWriteReg(0x47, (SCREEN_HEIGHT - x - 1) & 0x01FF);
break;
}

View File

@ -273,11 +273,11 @@ static void lld_lcdSetCursor(uint16_t x, uint16_t y) {
lld_lcdWriteReg(0x004e, x & 0x00FF);
lld_lcdWriteReg(0x004f, y & 0x01FF);
break;
case GDISP_ROTATE_90:
case GDISP_ROTATE_270:
lld_lcdWriteReg(0x004e, y & 0x00FF);
lld_lcdWriteReg(0x004f, x & 0x01FF);
break;
case GDISP_ROTATE_270:
case GDISP_ROTATE_90:
lld_lcdWriteReg(0x004e, (SCREEN_WIDTH - y - 1) & 0x00FF);
lld_lcdWriteReg(0x004f, (SCREEN_HEIGHT - x - 1) & 0x01FF);
break;

View File

@ -157,11 +157,11 @@ uint16_t tpReadX(void) {
case GDISP_ROTATE_0:
return x;
case GDISP_ROTATE_90:
return SCREEN_HEIGHT - y;
case GDISP_ROTATE_180:
return SCREEN_WIDTH - x;
case GDISP_ROTATE_270:
return y;
case GDISP_ROTATE_180:
return SCREEN_WIDTH - x - 1;
case GDISP_ROTATE_270:
return SCREEN_HEIGHT - y - 1;
}
return 0;
@ -184,11 +184,11 @@ uint16_t tpReadY(void) {
case GDISP_ROTATE_0:
return y;
case GDISP_ROTATE_90:
return x;
return SCREEN_WIDTH - x - 1;
case GDISP_ROTATE_180:
return SCREEN_HEIGHT - y;
return SCREEN_HEIGHT - y - 1;
case GDISP_ROTATE_270:
return SCREEN_WIDTH - x;
return x;
}
return 0;