summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-01-31 23:34:02 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-01-31 23:34:02 +0000
commitb69d59ba8e06de799f7fc13c00e9d038867c38df (patch)
tree672f361ddf486b9970cea38fe915b112aa2e85cc
parent62b22ba45f8a43cb95a0330c494b421c863f07d6 (diff)
downloadrockbox-b69d59ba8e06de799f7fc13c00e9d038867c38df.tar.gz
rockbox-b69d59ba8e06de799f7fc13c00e9d038867c38df.zip
Handle 8-bit BMP files
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8514 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/bmp.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/apps/recorder/bmp.c b/apps/recorder/bmp.c
index 5f596efdda..28e7281df0 100644
--- a/apps/recorder/bmp.c
+++ b/apps/recorder/bmp.c
@@ -297,6 +297,51 @@ int read_bmp_file(char* filename,
297#endif 297#endif
298 break; 298 break;
299 299
300
301 case 8:
302 p = bmpbuf;
303#if LCD_DEPTH > 1
304 if(format == FORMAT_MONO) {
305#endif
306 /* 8-bit RGB24 palette -> mono */
307 for (col = 0; col < width; col++) {
308 struct rgb_quad rgb = palette[*p];
309 ret = brightness(rgb);
310 if (ret > 96) {
311 bitmap[width * ((height - row - 1) / 8) + col]
312 &= ~ 1 << ((height - row - 1) % 8);
313 } else {
314 bitmap[width * ((height - row - 1) / 8) + col]
315 |= 1 << ((height - row - 1) % 8);
316 }
317 p++;
318 }
319#if LCD_DEPTH == 2
320 } else {
321 /* 8-bit RGB24 palette -> 2gray (iriver H1xx) */
322 for (col = 0; col < width; col++) {
323 struct rgb_quad rgb = palette[*p];
324 ret = brightness(rgb);
325
326 dest[((height - row - 1)/4) * width + col] |=
327 (~ret & 0xC0) >> (2 * (~(height - row - 1) & 3));
328 p++;
329 }
330 }
331#elif LCD_DEPTH == 16
332 } else {
333 /* 8-bit RGB24 palette -> RGB16 */
334 for (col = 0; col < width; col++) {
335 struct rgb_quad rgb = palette[*p];
336 unsigned short rgb16 =
337 LCD_RGBPACK(rgb.red, rgb.green, rgb.blue);
338 dest[width * (height - row - 1) + col] = rgb16;
339 p++;
340 }
341 }
342#endif
343 break;
344
300 case 24: 345 case 24:
301 p = bmpbuf; 346 p = bmpbuf;
302#if LCD_DEPTH > 1 347#if LCD_DEPTH > 1