| Index: src/images/SkImageDecoder_libbmp.cpp
|
| diff --git a/src/images/SkImageDecoder_libbmp.cpp b/src/images/SkImageDecoder_libbmp.cpp
|
| index 488eddce1edb203065ce063db82e449c169db99f..68b58f5f8fd7485948ca681a9908b927ef2752c7 100644
|
| --- a/src/images/SkImageDecoder_libbmp.cpp
|
| +++ b/src/images/SkImageDecoder_libbmp.cpp
|
| @@ -23,6 +23,8 @@ public:
|
| return kBMP_Format;
|
| }
|
|
|
| + virtual Format onGetFormat(SkStream*) const SK_OVERRIDE;
|
| +
|
| protected:
|
| virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode mode) SK_OVERRIDE;
|
|
|
| @@ -34,14 +36,18 @@ private:
|
| DEFINE_DECODER_CREATOR(BMPImageDecoder);
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -static SkImageDecoder* sk_libbmp_dfactory(SkStream* stream) {
|
| +static bool is_bmp(SkStream* stream) {
|
| static const char kBmpMagic[] = { 'B', 'M' };
|
|
|
|
|
| char buffer[sizeof(kBmpMagic)];
|
|
|
| - if (stream->read(buffer, sizeof(kBmpMagic)) == sizeof(kBmpMagic) &&
|
| - !memcmp(buffer, kBmpMagic, sizeof(kBmpMagic))) {
|
| + return stream->read(buffer, sizeof(kBmpMagic)) == sizeof(kBmpMagic) &&
|
| + !memcmp(buffer, kBmpMagic, sizeof(kBmpMagic));
|
| +}
|
| +
|
| +static SkImageDecoder* sk_libbmp_dfactory(SkStream* stream) {
|
| + if (is_bmp(stream)) {
|
| return SkNEW(SkBMPImageDecoder);
|
| }
|
| return NULL;
|
| @@ -79,6 +85,13 @@ private:
|
| bool fJustBounds;
|
| };
|
|
|
| +SkImageDecoder::Format SkBMPImageDecoder::onGetFormat(SkStream* stream) const {
|
| + if (is_bmp(stream)) {
|
| + return kBMP_Format;
|
| + }
|
| + return kUnknown_Format;
|
| +}
|
| +
|
| bool SkBMPImageDecoder::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) {
|
|
|
| size_t length = stream->getLength();
|
|
|