diff options
author | 2013-05-20 23:57:38 +0000 | |
---|---|---|
committer | 2013-05-20 23:57:38 +0000 | |
commit | 1f6aed0b1cf7bcb05b5b8ae588021aa7c70fb176 (patch) | |
tree | 344ad3d7dba8838e4885d5deba1d5c693dacb7fc | |
parent | 73e4d5710bc5591ae5b3c6e956be2789e3fbef0d (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
-rw-r--r-- | gyp/tools.gyp | 1 | ||||
-rw-r--r-- | src/image/SkImage.cpp | 29 | ||||
-rw-r--r-- | src/image/SkImage_Codec.cpp | 37 |
3 files changed, 38 insertions, 29 deletions
diff --git a/gyp/tools.gyp b/gyp/tools.gyp index aa27b45f62..1fe564e464 100644 --- a/gyp/tools.gyp +++ b/gyp/tools.gyp @@ -65,6 +65,7 @@ 'type': 'executable', 'sources': [ '../tools/skhello.cpp', + '../src/image/SkImage_Codec.cpp', ], 'dependencies': [ 'skia_base_libs.gyp:skia_base_libs', diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index 13af631b2a..bb4a336ffd 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -9,7 +9,6 @@ #include "SkImagePriv.h" #include "SkBitmap.h" #include "SkCanvas.h" -#include "../images/SkImageEncoder.h" SK_DEFINE_INST_COUNT(SkImage) @@ -17,10 +16,6 @@ static SkImage_Base* asIB(SkImage* image) { return static_cast<SkImage_Base*>(image); } -static const SkImage_Base* asIB(const SkImage* image) { - return static_cast<const SkImage_Base*>(image); -} - uint32_t SkImage::NextUniqueID() { static int32_t gUniqueID; @@ -41,28 +36,4 @@ GrTexture* SkImage::getTexture() { return asIB(this)->onGetTexture(); } -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; -} 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; +} |