Index: src/images/SkImageEncoder_Factory.cpp |
diff --git a/src/images/SkImageEncoder_Factory.cpp b/src/images/SkImageEncoder_Factory.cpp |
index 2931d12eae7c42042c53b8f22a83aaae2bc7094a..c4cd522d57057d6533c18d903102c935f124fccb 100644 |
--- a/src/images/SkImageEncoder_Factory.cpp |
+++ b/src/images/SkImageEncoder_Factory.cpp |
@@ -7,17 +7,45 @@ |
*/ |
#include "SkImageEncoder.h" |
- |
-template SkImageEncoder_EncodeReg* SkImageEncoder_EncodeReg::gHead; |
+#include "SkImageDecoder_libpng.h" |
+#include "SkImageDecoder_libjpeg.h" |
+#include "SkImageDecoder_libwebp.h" |
+#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) |
+#include "SkImageDecoder_ktx.h" |
+#endif |
+#if defined(SK_BUILD_FOR_WIN) |
+#include "SkImageDecoder_WIC.h" |
+#endif |
+#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) |
+#include "SkImageDecoder_CG.h" |
+#endif |
SkImageEncoder* SkImageEncoder::Create(Type t) { |
SkImageEncoder* codec = NULL; |
- const SkImageEncoder_EncodeReg* curr = SkImageEncoder_EncodeReg::Head(); |
- while (curr) { |
- if ((codec = curr->factory()(t)) != NULL) { |
- return codec; |
- } |
- curr = curr->next(); |
+#if !defined(SK_BUILD_FOR_MAC) && !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_WIN) |
+ if ((codec = SkCreatePNGImageEncoder(t)) != NULL) { |
+ return codec; |
+ } |
+#endif |
+ if ((codec = SkCreateJPEGImageEncoder(t)) != NULL) { |
+ return codec; |
+ } |
+ if ((codec = SkCreateWEBPImageEncoder(t)) != NULL) { |
+ return codec; |
+ } |
+#if !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) |
+ if ((codec = SkCreateKTXImageEncoder(t)) != NULL) { |
+ return codec; |
+ } |
+#endif |
+#if defined(SK_BUILD_FOR_WIN) |
+ if ((codec = SkCreateImageEncoder_WIC(t)) != NULL) { |
+ return codec; |
+ } |
+#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) |
+ if ((codec = SkCreateImageEncoder_CG(t)) != NULL) { |
+ return codec; |
} |
+#endif |
return NULL; |
} |