From 7def5e1630d47cdbfa4b58a9c86bc060693c4d79 Mon Sep 17 00:00:00 2001 From: "scroggo@google.com" Date: Fri, 31 May 2013 14:00:10 +0000 Subject: 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 --- src/image/SkImage.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src/image/SkImage.cpp') 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(image); } +static const SkImage_Base* as_IB(const SkImage* image) { + return static_cast(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; } -- cgit v1.2.3