aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image/SkImage_Codec.cpp
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-05-20 23:57:38 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-05-20 23:57:38 +0000
commit1f6aed0b1cf7bcb05b5b8ae588021aa7c70fb176 (patch)
tree344ad3d7dba8838e4885d5deba1d5c693dacb7fc /src/image/SkImage_Codec.cpp
parent73e4d5710bc5591ae5b3c6e956be2789e3fbef0d (diff)
Move SkImage::encode to SkImage_Codec.cpp.
Chrome depends on SkImage.cpp, but does not include SkImageDecoder, so having SkImage::encode in SkImage.cpp breaks chromium. Temporarily fix the problem by moving the implementation into SkImage_Codec.cpp. The larger fix will be to solve https://code.google.com/p/skia/issues/detail?id=1275 R=reed@google.com, robertphillips@google.com Author: scroggo@google.com Review URL: https://chromiumcodereview.appspot.com/15314004 git-svn-id: http://skia.googlecode.com/svn/trunk@9204 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/image/SkImage_Codec.cpp')
-rw-r--r--src/image/SkImage_Codec.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/image/SkImage_Codec.cpp b/src/image/SkImage_Codec.cpp
index 9d81dc943a..77ce03779a 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;
+}