aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images/SkImageDecoder_libjpeg.cpp
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-01-22 13:04:56 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2009-01-22 13:04:56 +0000
commit00bf85a98675c9d0c3150bbeb0a3d7198ad8f21f (patch)
treeb4b522fd859aa3e3dcc2f20061bddbe348b850e4 /src/images/SkImageDecoder_libjpeg.cpp
parent9db6087c0e8be71e50aa09106759a868cb9597dc (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.cpp50
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);
+