Chromium Code Reviews| Index: src/images/SkImageDecoder_libpng.cpp |
| diff --git a/src/images/SkImageDecoder_libpng.cpp b/src/images/SkImageDecoder_libpng.cpp |
| index 9fe5fb9c95ce28ff5b3421ec7aa93cd661b3f8f9..63ef24e81ccf486895a70fb00ac4c2f8c5252ea8 100644 |
| --- a/src/images/SkImageDecoder_libpng.cpp |
| +++ b/src/images/SkImageDecoder_libpng.cpp |
| @@ -5,8 +5,8 @@ |
| * found in the LICENSE file. |
| */ |
| -#include "SkImageDecoder.h" |
| -#include "SkImageEncoder.h" |
| +#include "SkImageDecoder_libpng.h" |
| + |
| #include "SkColor.h" |
| #include "SkColorPriv.h" |
| #include "SkDither.h" |
| @@ -73,6 +73,7 @@ public: |
| SkColorType fColorType; |
| }; |
| + |
|
scroggo
2014/11/12 18:00:13
Why the extra line?
Kimmo Kinnunen
2014/11/18 08:29:45
Done.
|
| class SkPNGImageDecoder : public SkImageDecoder { |
| public: |
| SkPNGImageDecoder() { |
| @@ -1095,6 +1096,22 @@ static inline int pack_palette(SkColorTable* ctable, |
| return num_trans; |
| } |
| +SkImageDecoder::Format SkDetectFormatPNGImageDecoder(SkStreamRewindable* stream) { |
| + char buf[PNG_BYTES_TO_CHECK]; |
| + if (stream->read(buf, PNG_BYTES_TO_CHECK) == PNG_BYTES_TO_CHECK && |
| + !png_sig_cmp((png_bytep) buf, (png_size_t)0, PNG_BYTES_TO_CHECK)) { |
|
scroggo
2014/11/12 18:00:13
nit: move brace to next line.
(Again, easier to f
Kimmo Kinnunen
2014/11/18 08:29:45
Done. (Reverted the reordering.)
|
| + return SkImageDecoder::kPNG_Format; |
| + } |
| + return SkImageDecoder::kUnknown_Format; |
| +} |
| + |
| +SkImageDecoder* SkCreatePNGImageDecoder(SkStreamRewindable* stream) { |
| + if (SkDetectFormatPNGImageDecoder(stream) == SkImageDecoder::kPNG_Format) { |
| + return SkNEW(SkPNGImageDecoder); |
| + } |
| + return NULL; |
| +} |
| + |
| class SkPNGImageEncoder : public SkImageEncoder { |
| protected: |
| virtual bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality) SK_OVERRIDE; |
| @@ -1248,38 +1265,7 @@ bool SkPNGImageEncoder::doEncode(SkWStream* stream, const SkBitmap& bitmap, |
| return true; |
| } |
| -/////////////////////////////////////////////////////////////////////////////// |
| -DEFINE_DECODER_CREATOR(PNGImageDecoder); |
| -DEFINE_ENCODER_CREATOR(PNGImageEncoder); |
| -/////////////////////////////////////////////////////////////////////////////// |
| - |
| -static bool is_png(SkStreamRewindable* stream) { |
| - char buf[PNG_BYTES_TO_CHECK]; |
| - if (stream->read(buf, PNG_BYTES_TO_CHECK) == PNG_BYTES_TO_CHECK && |
| - !png_sig_cmp((png_bytep) buf, (png_size_t)0, PNG_BYTES_TO_CHECK)) { |
| - return true; |
| - } |
| - return false; |
| -} |
| - |
| -SkImageDecoder* sk_libpng_dfactory(SkStreamRewindable* stream) { |
| - if (is_png(stream)) { |
| - return SkNEW(SkPNGImageDecoder); |
| - } |
| - return NULL; |
| -} |
| - |
| -static SkImageDecoder::Format get_format_png(SkStreamRewindable* stream) { |
| - if (is_png(stream)) { |
| - return SkImageDecoder::kPNG_Format; |
| - } |
| - return SkImageDecoder::kUnknown_Format; |
| -} |
| - |
| -SkImageEncoder* sk_libpng_efactory(SkImageEncoder::Type t) { |
| +SkImageEncoder* SkCreatePNGImageEncoder(SkImageEncoder::Type t) { |
| return (SkImageEncoder::kPNG_Type == t) ? SkNEW(SkPNGImageEncoder) : NULL; |
| } |
| -static SkImageDecoder_DecodeReg gDReg(sk_libpng_dfactory); |
| -static SkImageDecoder_FormatReg gFormatReg(get_format_png); |
| -static SkImageEncoder_EncodeReg gEReg(sk_libpng_efactory); |