42 Serial.print(
"Initializing SD card...");
45 Serial.println(
"failed!");
47 Serial.println(
"OK!");
66 void bmpDraw(
char *filename, uint8_t
x, uint16_t y)
70 int bmpWidth, bmpHeight;
72 uint32_t bmpImageoffset;
75 uint8_t buffidx =
sizeof(sdbuffer);
76 boolean goodBmp =
false;
80 uint32_t
pos = 0, startTime = millis();
82 if ((x >= tft.
width()) || (y >= tft.
height()))
return;
85 Serial.print(F(
"Loading image '"));
86 Serial.print(filename);
90 if ((bmpFile = SD.open(filename)) == NULL)
92 Serial.print(F(
"File not found"));
97 if (
read16(bmpFile) == 0x4D42)
99 Serial.print(F(
"File size: "));
100 Serial.println(
read32(bmpFile));
102 bmpImageoffset =
read32(bmpFile);
103 Serial.print(F(
"Image Offset: "));
104 Serial.println(bmpImageoffset, DEC);
106 Serial.print(F(
"Header size: "));
107 Serial.println(
read32(bmpFile));
108 bmpWidth =
read32(bmpFile);
109 bmpHeight =
read32(bmpFile);
112 bmpDepth =
read16(bmpFile);
113 Serial.print(F(
"Bit Depth: "));
114 Serial.println(bmpDepth);
115 if ((bmpDepth == 24) && (
read32(bmpFile) == 0))
119 Serial.print(F(
"Image size: "));
120 Serial.print(bmpWidth);
122 Serial.println(bmpHeight);
125 rowSize = (bmpWidth * 3 + 3) & ~3;
131 bmpHeight = -bmpHeight;
144 for (row=0; row<h; row++)
154 pos = bmpImageoffset + (bmpHeight - 1 - row) * rowSize;
156 pos = bmpImageoffset + row * rowSize;
157 if (bmpFile.position() !=
pos)
160 buffidx =
sizeof(sdbuffer);
163 for (col=0; col<w; col++)
166 if (buffidx >=
sizeof(sdbuffer))
168 bmpFile.read(sdbuffer,
sizeof(sdbuffer));
173 b = sdbuffer[buffidx++];
174 g = sdbuffer[buffidx++];
175 r = sdbuffer[buffidx++];
179 Serial.print(F(
"Loaded in "));
180 Serial.print(millis() - startTime);
181 Serial.println(
" ms");
187 if (!goodBmp) Serial.println(F(
"BMP format not recognized."));
197 ((uint8_t *)&result)[0] = f.read();
198 ((uint8_t *)&result)[1] = f.read();
205 ((uint8_t *)&result)[0] = f.read();
206 ((uint8_t *)&result)[1] = f.read();
207 ((uint8_t *)&result)[2] = f.read();
208 ((uint8_t *)&result)[3] = f.read();
static uint16_t read16(File &f)
int16_t height(void) const
void pushColor(uint16_t color)
uint16_t color565(uint8_t r, uint8_t g, uint8_t b)
int16_t width(void) const
static void bmpDraw(char *filename, uint8_t x, uint16_t y)
void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1)
void fillScreen(uint16_t color)
static uint32_t read32(File &f)