diff options
author | 2013-05-31 14:00:10 +0000 | |
---|---|---|
committer | 2013-05-31 14:00:10 +0000 | |
commit | 7def5e1630d47cdbfa4b58a9c86bc060693c4d79 (patch) | |
tree | 548101df35f6b8bc30a73784c26b3f20527b34a4 /src/image/SkImage.cpp | |
parent | f865be37868430ab75e3c787afc2869ba18216c3 (diff) |
Separate core and images project.
SkImage calls functions on SkImageDecoder and SkImageEncoder. This
is desired behavior, and it is also desired to include SkImage as
a part of core. In order to keep core from depending on images,
update SkImageDecoder_empty.cpp to implement all of SkImageDecoder
and SkImageEncoder. This file will be built by chrome (in
https://codereview.chromium.org/15960015).
Move force_linking from SkImageDecoder.cpp to its own file. It must
be called to force linking with the image decoders if desired. Call
the function in tools that need it:
sk_image
render_pictures
render_pdfs
sk_hello
filter
bench_pictures
debugger
SkImageDecoder:
Derive from SkNoncopyable, instead of duplicating its
hiding of constructors.
skhello:
Return rather than trying to write a null SkData to the stream.
Revert "Hamfistedly removed core dependence on images"
(commit 0f05f682a90bc125323677abf3476e1027d174f5) and
"Move SkImage::encode to SkImage_Codec.cpp."
(commit 83e47a954d0bf65439f3d9c0c93213063dd70da3.)
These two commits were temporary fixes that this change
cleans up.
SkSnapshot.cpp:
Check for a NULL encoder returned by SkImageEncoder::Create.
BUG=https://code.google.com/p/skia/issues/detail?id=1275
R=djsollen@google.com, robertphillips@google.com
Review URL: https://codereview.chromium.org/15806010
git-svn-id: http://skia.googlecode.com/svn/trunk@9364 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/image/SkImage.cpp')
-rw-r--r-- | src/image/SkImage.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index 1169459df6..9c60f55aa7 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -5,17 +5,21 @@ * found in the LICENSE file. */ -#include "SkImage_Base.h" -#include "SkImagePriv.h" #include "SkBitmap.h" #include "SkCanvas.h" +#include "SkImagePriv.h" +#include "SkImage_Base.h" SK_DEFINE_INST_COUNT(SkImage) -static SkImage_Base* asIB(SkImage* image) { +static SkImage_Base* as_IB(SkImage* image) { return static_cast<SkImage_Base*>(image); } +static const SkImage_Base* as_IB(const SkImage* image) { + return static_cast<const SkImage_Base*>(image); +} + uint32_t SkImage::NextUniqueID() { static int32_t gUniqueID; @@ -29,9 +33,17 @@ uint32_t SkImage::NextUniqueID() { void SkImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) { - asIB(this)->onDraw(canvas, x, y, paint); + as_IB(this)->onDraw(canvas, x, y, paint); } GrTexture* SkImage::getTexture() { - return asIB(this)->onGetTexture(); + return as_IB(this)->onGetTexture(); +} + +SkData* SkImage::encode(SkImageEncoder::Type type, int quality) const { + SkBitmap bm; + if (as_IB(this)->getROPixels(&bm)) { + return SkImageEncoder::EncodeData(bm, type, quality); + } + return NULL; } |