diff options
Diffstat (limited to 'apps/recorder/bmp.c')
-rw-r--r-- | apps/recorder/bmp.c | 45 |
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 |