Packed 12bit Raw image file load to display to Nokia LCD. Add function "blit12" to Nokia LCD for native 12bit color buffer.

Dependencies:   mbed

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");