Index: src/image/SkImage_Codec.cpp |
diff --git a/src/image/SkImage_Codec.cpp b/src/image/SkImage_Codec.cpp |
index 9d81dc943a5fd005387a55ca0428c6235d1952f0..77ce03779a44b83e753d9c6b06985862407c73e6 100644 |
--- a/src/image/SkImage_Codec.cpp |
+++ b/src/image/SkImage_Codec.cpp |
@@ -64,3 +64,40 @@ SkImage* SkImage::NewEncodedData(SkData* data) { |
return SkNEW_ARGS(SkImage_Codec, (data, bitmap.width(), bitmap.height())); |
} |
+ |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+// FIXME: Temporarily move this here so chromium can still build until we truly |
+// fix the core/images dependency issue (https://code.google.com/p/skia/issues/detail?id=1275) |
+#include "SkImage.h" |
+#include "../images/SkImageEncoder.h" |
+ |
+static const SkImage_Base* asIB(const SkImage* image) { |
+ return static_cast<const SkImage_Base*>(image); |
+} |
+ |
+static const struct { |
+ SkImageEncoder::Type fIE; |
+ SkImage::EncodeType fET; |
+} gTable[] = { |
+ { SkImageEncoder::kBMP_Type, SkImage::kBMP_EncodeType }, |
+ { SkImageEncoder::kGIF_Type, SkImage::kGIF_EncodeType }, |
+ { SkImageEncoder::kICO_Type, SkImage::kICO_EncodeType }, |
+ { SkImageEncoder::kJPEG_Type, SkImage::kJPEG_EncodeType }, |
+ { SkImageEncoder::kPNG_Type, SkImage::kPNG_EncodeType }, |
+ { SkImageEncoder::kWBMP_Type, SkImage::kWBMP_EncodeType }, |
+ { SkImageEncoder::kWEBP_Type, SkImage::kWEBP_EncodeType }, |
+}; |
+ |
+SkData* SkImage::encode(EncodeType et, int quality) const { |
+ for (size_t i = 0; i < SK_ARRAY_COUNT(gTable); ++i) { |
+ if (gTable[i].fET == et) { |
+ SkBitmap bm; |
+ if (asIB(this)->getROPixels(&bm)) { |
+ return SkImageEncoder::EncodeData(bm, gTable[i].fIE, quality); |
+ } |
+ break; |
+ } |
+ } |
+ return NULL; |
+} |