Packed 12bit Raw image file load to display to Nokia LCD. Add function "blit12" to Nokia LCD for native 12bit color buffer.
Diff: main.cpp
- Revision:
- 1:ea521c134e8a
- Parent:
- 0:b9050fc6f305
- Child:
- 2:7cf441bf092d
--- a/main.cpp Wed Feb 09 21:11:28 2011 +0000 +++ b/main.cpp Thu Feb 10 07:30:11 2011 +0000 @@ -2,6 +2,10 @@ #include "NokiaLCD.h" #include "SDFileSystem.h" +typedef struct { + unsigned char r, g, b; +} RGB24; + NokiaLCD lcd(p11, p13, p14, p15, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type SDFileSystem sd(p5, p6, p7, p8, "sd"); @@ -12,17 +16,23 @@ fp = fopen("/sd/128x128.raw", "r"); if (fp != NULL) { printf("Start!\r\n"); - unsigned char buf[4]; + RGB24 bufLine[128]; for (int y = 0; y < 128; y++) { + fread(bufLine, sizeof(RGB24), 128, fp); + int bufColor[128]; for (int x = 0; x < 128; x++) { - fread(buf, sizeof(unsigned char), 3, fp); - int pix = buf[0]; +#if 1 + int pix = (bufLine[x].r << 16) | (bufLine[x].g << 8) | bufLine[x].b; +#else + int pix = bufLine[x].r; pix <<= 8; - pix += buf[1]; + pix |= bufLine[x].g; pix <<= 8; - pix += buf[2]; - lcd.pixel(x, y, pix); + pix |= bufLine[x].b; +#endif + bufColor[x] = pix; } + lcd.blit(0, y, 128, 1, bufColor); } fclose(fp); printf("Finish!\r\n");