Index: src/images/SkImageDecoder_libbmp.cpp |
diff --git a/src/images/SkImageDecoder_libbmp.cpp b/src/images/SkImageDecoder_libbmp.cpp |
index 7b87e40039d48b582610ab271b6def44bac1da64..b033efee70429d198855fc61c797002ad9915033 100644 |
--- a/src/images/SkImageDecoder_libbmp.cpp |
+++ b/src/images/SkImageDecoder_libbmp.cpp |
@@ -6,10 +6,10 @@ |
* found in the LICENSE file. |
*/ |
+#include "SkImageDecoder_libbmp.h" |
#include "bmpdecoderhelper.h" |
#include "SkColorPriv.h" |
-#include "SkImageDecoder.h" |
#include "SkScaledBitmapSampler.h" |
#include "SkStream.h" |
#include "SkStreamPriv.h" |
@@ -30,40 +30,6 @@ private: |
typedef SkImageDecoder INHERITED; |
}; |
-/////////////////////////////////////////////////////////////////////////////// |
-DEFINE_DECODER_CREATOR(BMPImageDecoder); |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-static bool is_bmp(SkStreamRewindable* stream) { |
- static const char kBmpMagic[] = { 'B', 'M' }; |
- |
- |
- char buffer[sizeof(kBmpMagic)]; |
- |
- return stream->read(buffer, sizeof(kBmpMagic)) == sizeof(kBmpMagic) && |
- !memcmp(buffer, kBmpMagic, sizeof(kBmpMagic)); |
-} |
- |
-static SkImageDecoder* sk_libbmp_dfactory(SkStreamRewindable* stream) { |
- if (is_bmp(stream)) { |
- return SkNEW(SkBMPImageDecoder); |
- } |
- return NULL; |
-} |
- |
-static SkImageDecoder_DecodeReg gReg(sk_libbmp_dfactory); |
- |
-static SkImageDecoder::Format get_format_bmp(SkStreamRewindable* stream) { |
- if (is_bmp(stream)) { |
- return SkImageDecoder::kBMP_Format; |
- } |
- return SkImageDecoder::kUnknown_Format; |
-} |
- |
-static SkImageDecoder_FormatReg gFormatReg(get_format_bmp); |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
class SkBmpDecoderCallback : public image_codec::BmpDecoderCallback { |
public: |
// we don't copy the bitmap, just remember the pointer |
@@ -160,3 +126,20 @@ bool SkBMPImageDecoder::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) { |
} |
return true; |
} |
+ |
+SkImageDecoder::Format SkDetectFormatBMPImageDecoder(SkStreamRewindable* stream) { |
+ static const char kBmpMagic[] = { 'B', 'M' }; |
+ char buffer[sizeof(kBmpMagic)]; |
+ if (stream->read(buffer, sizeof(kBmpMagic)) == sizeof(kBmpMagic) && |
+ !memcmp(buffer, kBmpMagic, sizeof(kBmpMagic))) { |
scroggo
2014/11/12 18:00:12
I don't think it's in the style guide, but this is
Kimmo Kinnunen
2014/11/18 08:29:45
Right..
|
+ return SkImageDecoder::kBMP_Format; |
+ } |
+ return SkImageDecoder::kUnknown_Format; |
+} |
+ |
+SkImageDecoder* SkCreateBMPImageDecoder(SkStreamRewindable* stream) { |
+ if (SkDetectFormatBMPImageDecoder(stream) == SkImageDecoder::kBMP_Format) { |
+ return SkNEW(SkBMPImageDecoder); |
+ } |
+ return NULL; |
+} |