Packed 12bit Raw image file load to display to Nokia LCD. Add function "blit12" to Nokia LCD for native 12bit color buffer.
main.cpp@2:7cf441bf092d, 2011-02-10 (annotated)
- Committer:
- sakai
- Date:
- Thu Feb 10 13:44:58 2011 +0000
- Revision:
- 2:7cf441bf092d
- Parent:
- 1:ea521c134e8a
- Child:
- 3:8739f7e5148a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sakai | 0:b9050fc6f305 | 1 | #include "mbed.h" |
sakai | 0:b9050fc6f305 | 2 | #include "NokiaLCD.h" |
sakai | 0:b9050fc6f305 | 3 | #include "SDFileSystem.h" |
sakai | 0:b9050fc6f305 | 4 | |
sakai | 1:ea521c134e8a | 5 | typedef struct { |
sakai | 1:ea521c134e8a | 6 | unsigned char r, g, b; |
sakai | 1:ea521c134e8a | 7 | } RGB24; |
sakai | 1:ea521c134e8a | 8 | |
sakai | 0:b9050fc6f305 | 9 | NokiaLCD lcd(p11, p13, p14, p15, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type |
sakai | 0:b9050fc6f305 | 10 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
sakai | 0:b9050fc6f305 | 11 | |
sakai | 0:b9050fc6f305 | 12 | int main() { |
sakai | 0:b9050fc6f305 | 13 | lcd.background(0x000000); |
sakai | 0:b9050fc6f305 | 14 | lcd.cls(); |
sakai | 0:b9050fc6f305 | 15 | FILE *fp = NULL; |
sakai | 2:7cf441bf092d | 16 | #if 1 |
sakai | 2:7cf441bf092d | 17 | fp = fopen("/sd/128x128.r12", "r"); |
sakai | 2:7cf441bf092d | 18 | if (fp != NULL) { |
sakai | 2:7cf441bf092d | 19 | printf("Start!\r\n"); |
sakai | 2:7cf441bf092d | 20 | unsigned char bufLine[64 * 3]; |
sakai | 2:7cf441bf092d | 21 | for (int y = 0; y < 128; y++) { |
sakai | 2:7cf441bf092d | 22 | fread(bufLine, sizeof(unsigned char), (64 * 3), fp); |
sakai | 2:7cf441bf092d | 23 | lcd.blit12(0, y, 128, 1, bufLine); |
sakai | 2:7cf441bf092d | 24 | } |
sakai | 2:7cf441bf092d | 25 | fclose(fp); |
sakai | 2:7cf441bf092d | 26 | printf("Finish!\r\n"); |
sakai | 2:7cf441bf092d | 27 | } else { |
sakai | 2:7cf441bf092d | 28 | printf("Can't open file.\r\n"); |
sakai | 2:7cf441bf092d | 29 | } |
sakai | 2:7cf441bf092d | 30 | #else |
sakai | 0:b9050fc6f305 | 31 | fp = fopen("/sd/128x128.raw", "r"); |
sakai | 0:b9050fc6f305 | 32 | if (fp != NULL) { |
sakai | 0:b9050fc6f305 | 33 | printf("Start!\r\n"); |
sakai | 1:ea521c134e8a | 34 | RGB24 bufLine[128]; |
sakai | 0:b9050fc6f305 | 35 | for (int y = 0; y < 128; y++) { |
sakai | 1:ea521c134e8a | 36 | fread(bufLine, sizeof(RGB24), 128, fp); |
sakai | 1:ea521c134e8a | 37 | int bufColor[128]; |
sakai | 0:b9050fc6f305 | 38 | for (int x = 0; x < 128; x++) { |
sakai | 1:ea521c134e8a | 39 | #if 1 |
sakai | 1:ea521c134e8a | 40 | int pix = (bufLine[x].r << 16) | (bufLine[x].g << 8) | bufLine[x].b; |
sakai | 1:ea521c134e8a | 41 | #else |
sakai | 1:ea521c134e8a | 42 | int pix = bufLine[x].r; |
sakai | 0:b9050fc6f305 | 43 | pix <<= 8; |
sakai | 1:ea521c134e8a | 44 | pix |= bufLine[x].g; |
sakai | 0:b9050fc6f305 | 45 | pix <<= 8; |
sakai | 1:ea521c134e8a | 46 | pix |= bufLine[x].b; |
sakai | 1:ea521c134e8a | 47 | #endif |
sakai | 1:ea521c134e8a | 48 | bufColor[x] = pix; |
sakai | 0:b9050fc6f305 | 49 | } |
sakai | 1:ea521c134e8a | 50 | lcd.blit(0, y, 128, 1, bufColor); |
sakai | 0:b9050fc6f305 | 51 | } |
sakai | 0:b9050fc6f305 | 52 | fclose(fp); |
sakai | 0:b9050fc6f305 | 53 | printf("Finish!\r\n"); |
sakai | 0:b9050fc6f305 | 54 | } else { |
sakai | 0:b9050fc6f305 | 55 | printf("Can't open file.\r\n"); |
sakai | 0:b9050fc6f305 | 56 | } |
sakai | 2:7cf441bf092d | 57 | #endif |
sakai | 0:b9050fc6f305 | 58 | } |