diff options
author | 2009-01-22 13:04:56 +0000 | |
---|---|---|
committer | 2009-01-22 13:04:56 +0000 | |
commit | 00bf85a98675c9d0c3150bbeb0a3d7198ad8f21f (patch) | |
tree | b4b522fd859aa3e3dcc2f20061bddbe348b850e4 /src/images/SkImageDecoder_libjpeg.cpp | |
parent | 9db6087c0e8be71e50aa09106759a868cb9597dc (diff) |
pull from android: use registry to build up list of image codecs
git-svn-id: http://skia.googlecode.com/svn/trunk@76 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/images/SkImageDecoder_libjpeg.cpp')
-rw-r--r-- | src/images/SkImageDecoder_libjpeg.cpp | 50 |
1 files changed, 21 insertions, 29 deletions
diff --git a/src/images/SkImageDecoder_libjpeg.cpp b/src/images/SkImageDecoder_libjpeg.cpp index 51339971ac..018c96c353 100644 --- a/src/images/SkImageDecoder_libjpeg.cpp +++ b/src/images/SkImageDecoder_libjpeg.cpp @@ -51,24 +51,6 @@ protected: SkBitmap::Config pref, Mode); }; -SkImageDecoder* SkImageDecoder_JPEG_Factory(SkStream* stream) { - static const char gHeader[] = { 0xFF, 0xD8, 0xFF }; - static const size_t HEADER_SIZE = sizeof(gHeader); - - char buffer[HEADER_SIZE]; - size_t len = stream->read(buffer, HEADER_SIZE); - - if (len != HEADER_SIZE) { - return NULL; // can't read enough - } - - if (memcmp(buffer, gHeader, HEADER_SIZE)) { - return NULL; - } - - return SkNEW(SkJPEGImageDecoder); -} - ////////////////////////////////////////////////////////////////////////// #include "SkTime.h" @@ -789,20 +771,30 @@ protected: } }; -SkImageEncoder* SkImageEncoder_JPEG_Factory(); -SkImageEncoder* SkImageEncoder_JPEG_Factory() { - return SkNEW(SkJPEGImageEncoder); -} +/////////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////// +#include "SkTRegistry.h" -#ifdef SK_DEBUG +static SkImageDecoder* DFactory(SkStream* stream) { + static const char gHeader[] = { 0xFF, 0xD8, 0xFF }; + static const size_t HEADER_SIZE = sizeof(gHeader); -void SkImageDecoder::UnitTest() { - SkBitmap bm; + char buffer[HEADER_SIZE]; + size_t len = stream->read(buffer, HEADER_SIZE); + + if (len != HEADER_SIZE) { + return NULL; // can't read enough + } + if (memcmp(buffer, gHeader, HEADER_SIZE)) { + return NULL; + } + return SkNEW(SkJPEGImageDecoder); +} - (void)SkImageDecoder::DecodeFile("logo.jpg", &bm); +static SkImageEncoder* EFactory(SkImageEncoder::Type t) { + return (SkImageEncoder::kJPEG_Type == t) ? SkNEW(SkJPEGImageEncoder) : NULL; } -#endif +static SkTRegistry<SkImageDecoder*, SkStream*> gDReg(DFactory); +static SkTRegistry<SkImageEncoder*, SkImageEncoder::Type> gEReg(EFactory); + |