From 67843ba9b09bca02bfc7f933b804636c040deff3 Mon Sep 17 00:00:00 2001 From: Matthew Wilber Date: Thu, 25 Jul 2002 01:53:22 +0000 Subject: [PATCH] added support for 8-bit Be bitmap images git-svn-id: file:///srv/svn/repos/haiku/trunk/current@429 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../bmptranslator/BMPTranslator.cpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/add-ons/translators/bmptranslator/BMPTranslator.cpp b/src/add-ons/translators/bmptranslator/BMPTranslator.cpp index 7d71288e65..d1917ada22 100644 --- a/src/add-ons/translators/bmptranslator/BMPTranslator.cpp +++ b/src/add-ons/translators/bmptranslator/BMPTranslator.cpp @@ -314,6 +314,11 @@ status_t translate_from_bits32_to_bmp(BPositionIO *inSource, BPositionIO *outDes bitsBytesPerPixel = 2; break; + case B_CMAP8: + case B_GRAY8: + bitsBytesPerPixel = 1; + break; + default: return B_ERROR; } @@ -336,6 +341,7 @@ status_t translate_from_bits32_to_bmp(BPositionIO *inSource, BPositionIO *outDes } memset(bmpRowData, 0, bmpRowBytes); ssize_t rd = inSource->Read(bitsRowData, bitsRowBytes); + const color_map *pmap = system_colors(); while (rd == bitsRowBytes) { for (uint32 i = 0; i < infoHeader.width; i++) { @@ -394,6 +400,23 @@ status_t translate_from_bits32_to_bmp(BPositionIO *inSource, BPositionIO *outDes bmppixel[1] = bitspixel[1]; bmppixel[2] = bitspixel[0]; break; + + case B_CMAP8: + bitspixel = bitsRowData + (i * bitsBytesPerPixel); + bmppixel = bmpRowData + (i * 3); + rgb_color c = pmap->color_list[bitspixel[0]]; + bmppixel[0] = c.blue; + bmppixel[1] = c.green; + bmppixel[2] = c.red; + break; + + case B_GRAY8: + bitspixel = bitsRowData + (i * bitsBytesPerPixel); + bmppixel = bmpRowData + (i * 3); + bmppixel[0] = bitspixel[0]; + bmppixel[1] = bitspixel[0]; + bmppixel[2] = bitspixel[0]; + break; case B_CMYK32: { @@ -541,6 +564,8 @@ status_t translate_from_bits(BPositionIO *inSource, ssize_t amtread, case B_RGB15_BIG: case B_RGBA15: case B_RGBA15_BIG: + case B_CMAP8: + case B_GRAY8: case B_CMYK32: case B_CMY32: case B_CMYA32: @@ -595,6 +620,8 @@ status_t translate_from_bits(BPositionIO *inSource, ssize_t amtread, case B_RGB15_BIG: case B_RGBA15: case B_RGBA15_BIG: + case B_CMAP8: + case B_GRAY8: case B_CMYK32: case B_CMY32: case B_CMYA32: