diff options
author | 2013-12-10 21:11:12 +0000 | |
---|---|---|
committer | 2013-12-10 21:11:12 +0000 | |
commit | edd370f949a457f5d8f7a62efdaf685d4caf46fe (patch) | |
tree | ccb79dcfeedf361e44488f67cb22350dd8c97aa0 /src/lazy | |
parent | a3b84d41efbbc5ab1e050a33d66dca4d1c44c9e3 (diff) |
Sk_API for SkImageGenerator and SkInstallDiscardablePixelRef
Added SK_API to SkImageGenerator (already in include/).
Moved SkDiscardablePixelRef::Install to SkInstallDiscardablePixelRef,
added SK_API to that function, and moved declaration to
SkImageGenerator.h
This keeps the SkDiscardablePixelRef internal to Skia, but exposes a
method to install it into a bitmap.
Modifed tests that rely on this functio to use new version.
BUG=
R=mtklein@google.com, reed@google.com
Review URL: https://codereview.chromium.org/111713002
git-svn-id: http://skia.googlecode.com/svn/trunk@12612 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/lazy')
-rw-r--r-- | src/lazy/SkDiscardablePixelRef.cpp | 15 | ||||
-rw-r--r-- | src/lazy/SkDiscardablePixelRef.h | 37 |
2 files changed, 15 insertions, 37 deletions
diff --git a/src/lazy/SkDiscardablePixelRef.cpp b/src/lazy/SkDiscardablePixelRef.cpp index e614db37e9..6a9507c8c7 100644 --- a/src/lazy/SkDiscardablePixelRef.cpp +++ b/src/lazy/SkDiscardablePixelRef.cpp @@ -7,6 +7,7 @@ #include "SkDiscardablePixelRef.h" #include "SkDiscardableMemory.h" +#include "SkImageGenerator.h" SkDiscardablePixelRef::SkDiscardablePixelRef(SkImageGenerator* generator, const SkImageInfo& info, @@ -62,18 +63,22 @@ void SkDiscardablePixelRef::onUnlockPixels() { } } -bool SkDiscardablePixelRef::Install(SkImageGenerator* generator, - SkBitmap* dst, - SkDiscardableMemory::Factory* factory) { +bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, + SkBitmap* dst, + SkDiscardableMemory::Factory* factory) { SkImageInfo info; SkASSERT(generator != NULL); if ((NULL == generator) || (!generator->getInfo(&info)) - || (!dst->setConfig(info, 0)) - || (0 == dst->getSize())) { // dst->getSize=0 Probably a bad config + || (!dst->setConfig(info, 0))) { SkDELETE(generator); return false; } + SkASSERT(dst->config() != SkBitmap::kNo_Config); + if (dst->empty()) { // Use a normal pixelref. + SkDELETE(generator); // Do not need this anymore. + return dst->allocPixels(NULL, NULL); + } SkAutoTUnref<SkDiscardablePixelRef> ref(SkNEW_ARGS(SkDiscardablePixelRef, (generator, info, dst->getSize(), diff --git a/src/lazy/SkDiscardablePixelRef.h b/src/lazy/SkDiscardablePixelRef.h index 78dcd66791..44c6df9637 100644 --- a/src/lazy/SkDiscardablePixelRef.h +++ b/src/lazy/SkDiscardablePixelRef.h @@ -9,43 +9,12 @@ #define SkDiscardablePixelRef_DEFINED #include "SkDiscardableMemory.h" -#include "SkPixelRef.h" #include "SkImageGenerator.h" #include "SkImageInfo.h" - -/** - * An interface that allows a purgable PixelRef to re-decode an image. - */ - -typedef SkDiscardableMemory* (*SkDiscardableMemoryFactory)(size_t bytes); - +#include "SkPixelRef.h" class SkDiscardablePixelRef : public SkPixelRef { public: - /** - * Takes ownership of SkImageGenerator. If this method fails for - * whatever reason, it will return false and immediatetely delete - * the generator. If it succeeds, it will modify destination - * bitmap. - * - * If Install fails or when the SkDiscardablePixelRef that is - * installed into destination is destroyed, it will call - * SkDELETE() on the generator. Therefore, generator should be - * allocated with SkNEW() or SkNEW_ARGS(). - * - * @param destination Upon success, this bitmap will be - * configured and have a pixelref installed. - * - * @param factory If not NULL, this object will be used as a - * source of discardable memory when decoding. If NULL, then - * SkDiscardableMemory::Create() will be called. - * - * @return true iff successful. - */ - static bool Install(SkImageGenerator* generator, - SkBitmap* destination, - SkDiscardableMemory::Factory* factory = NULL); - SK_DECLARE_UNFLATTENABLE_OBJECT() protected: @@ -75,5 +44,9 @@ private: size_t size, size_t rowBytes, SkDiscardableMemory::Factory* factory); + friend bool SkInstallDiscardablePixelRef(SkImageGenerator*, + SkBitmap*, + SkDiscardableMemory::Factory*); + typedef SkPixelRef INHERITED; }; #endif // SkDiscardablePixelRef_DEFINED |