added support for 8-bit Be bitmap images
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@429 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -314,6 +314,11 @@ status_t translate_from_bits32_to_bmp(BPositionIO *inSource, BPositionIO *outDes
|
|||||||
bitsBytesPerPixel = 2;
|
bitsBytesPerPixel = 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case B_CMAP8:
|
||||||
|
case B_GRAY8:
|
||||||
|
bitsBytesPerPixel = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
@@ -336,6 +341,7 @@ status_t translate_from_bits32_to_bmp(BPositionIO *inSource, BPositionIO *outDes
|
|||||||
}
|
}
|
||||||
memset(bmpRowData, 0, bmpRowBytes);
|
memset(bmpRowData, 0, bmpRowBytes);
|
||||||
ssize_t rd = inSource->Read(bitsRowData, bitsRowBytes);
|
ssize_t rd = inSource->Read(bitsRowData, bitsRowBytes);
|
||||||
|
const color_map *pmap = system_colors();
|
||||||
while (rd == bitsRowBytes) {
|
while (rd == bitsRowBytes) {
|
||||||
|
|
||||||
for (uint32 i = 0; i < infoHeader.width; i++) {
|
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[1] = bitspixel[1];
|
||||||
bmppixel[2] = bitspixel[0];
|
bmppixel[2] = bitspixel[0];
|
||||||
break;
|
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:
|
case B_CMYK32:
|
||||||
{
|
{
|
||||||
@@ -541,6 +564,8 @@ status_t translate_from_bits(BPositionIO *inSource, ssize_t amtread,
|
|||||||
case B_RGB15_BIG:
|
case B_RGB15_BIG:
|
||||||
case B_RGBA15:
|
case B_RGBA15:
|
||||||
case B_RGBA15_BIG:
|
case B_RGBA15_BIG:
|
||||||
|
case B_CMAP8:
|
||||||
|
case B_GRAY8:
|
||||||
case B_CMYK32:
|
case B_CMYK32:
|
||||||
case B_CMY32:
|
case B_CMY32:
|
||||||
case B_CMYA32:
|
case B_CMYA32:
|
||||||
@@ -595,6 +620,8 @@ status_t translate_from_bits(BPositionIO *inSource, ssize_t amtread,
|
|||||||
case B_RGB15_BIG:
|
case B_RGB15_BIG:
|
||||||
case B_RGBA15:
|
case B_RGBA15:
|
||||||
case B_RGBA15_BIG:
|
case B_RGBA15_BIG:
|
||||||
|
case B_CMAP8:
|
||||||
|
case B_GRAY8:
|
||||||
case B_CMYK32:
|
case B_CMYK32:
|
||||||
case B_CMY32:
|
case B_CMY32:
|
||||||
case B_CMYA32:
|
case B_CMYA32:
|
||||||
|
|||||||
Reference in New Issue
Block a user