Index: src/codec/SkBmpRLECodec.cpp |
diff --git a/src/codec/SkBmpRLECodec.cpp b/src/codec/SkBmpRLECodec.cpp |
index c71a5409d2c2c2ee5d2fa11261594c809f4c66d1..14a5b01c1f374d520856058aeef61ef9978324d3 100644 |
--- a/src/codec/SkBmpRLECodec.cpp |
+++ b/src/codec/SkBmpRLECodec.cpp |
@@ -12,35 +12,6 @@ |
#include "SkStream.h" |
/* |
- * Checks if the conversion between the input image and the requested output |
- * image has been implemented |
- */ |
-static bool conversion_possible(const SkImageInfo& dst, |
- const SkImageInfo& src) { |
- // Ensure that the profile type is unchanged |
- if (dst.profileType() != src.profileType()) { |
- return false; |
- } |
- |
- // Ensure the alpha type is valid |
- if (!valid_alpha(dst.alphaType(), src.alphaType())) { |
- return false; |
- } |
- |
- // Check for supported color types |
- switch (dst.colorType()) { |
- // Allow output to kN32 from any type of input |
- case kN32_SkColorType: |
- return true; |
- // Allow output to kIndex_8 from compatible inputs |
- case kIndex_8_SkColorType: |
- return kIndex_8_SkColorType == src.colorType(); |
- default: |
- return false; |
- } |
-} |
- |
-/* |
* Creates an instance of the decoder |
* Called only by NewFromStream |
*/ |
@@ -240,6 +211,11 @@ void SkBmpRLECodec::setPixel(void* dst, size_t dstRowBytes, |
dstRow[x] = fColorTable->operator[](index); |
break; |
} |
+ case kRGB_565_SkColorType: { |
+ uint16_t* dstRow = SkTAddOffset<uint16_t>(dst, row * (int) dstRowBytes); |
+ dstRow[x] = SkPixel32ToPixel16(fColorTable->operator[](index)); |
+ break; |
+ } |
default: |
// This case should not be reached. We should catch an invalid |
// color type when we check that the conversion is possible. |
@@ -272,6 +248,11 @@ void SkBmpRLECodec::setRGBPixel(void* dst, size_t dstRowBytes, |
dstRow[x] = SkPackARGB32NoCheck(0xFF, red, green, blue); |
break; |
} |
+ case kRGB_565_SkColorType: { |
+ uint16_t* dstRow = SkTAddOffset<uint16_t>(dst, row * (int) dstRowBytes); |
+ dstRow[x] = SkPack888ToRGB16(red, green, blue); |
+ break; |
+ } |
default: |
// This case should not be reached. We should catch an invalid |
// color type when we check that the conversion is possible. |