diff options
author | 2015-08-20 08:47:26 -0700 | |
---|---|---|
committer | 2015-08-20 08:47:26 -0700 | |
commit | ddbbddabefe865cc52e4b89a9d45455b987129bd (patch) | |
tree | dac7bc153f4623b6efb980985734478b93033355 /src | |
parent | 7d173403f47bb85cfd5c42b69c734668e25e47f9 (diff) |
SkImage method for detecting lazy decoding
BUG=skia:4224
R=reed@google.com
Review URL: https://codereview.chromium.org/1305453007
Diffstat (limited to 'src')
-rw-r--r-- | src/image/SkImage.cpp | 4 | ||||
-rw-r--r-- | src/image/SkImage_Base.h | 4 | ||||
-rw-r--r-- | src/image/SkImage_Raster.cpp | 4 | ||||
-rw-r--r-- | src/lazy/SkCachingPixelRef.h | 2 | ||||
-rw-r--r-- | src/lazy/SkDiscardablePixelRef.h | 2 |
5 files changed, 15 insertions, 1 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index 9c996dc7b8..715b4f4043 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -287,6 +287,10 @@ SkImage* SkImage::NewFromPicture(const SkPicture* picture, const SkISize& dimens return NewFromGenerator(SkImageGenerator::NewFromPicture(dimensions, picture, matrix, paint)); } +bool SkImage::isLazyGenerated() const { + return as_IB(this)->onIsLazyGenerated(); +} + ////////////////////////////////////////////////////////////////////////////////////// #if !SK_SUPPORT_GPU diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h index 38f99064a0..46cd3de3db 100644 --- a/src/image/SkImage_Base.h +++ b/src/image/SkImage_Base.h @@ -60,7 +60,7 @@ public: virtual SkShader* onNewShader(SkShader::TileMode, SkShader::TileMode, - const SkMatrix* localMatrix) const { return NULL; }; + const SkMatrix* localMatrix) const { return NULL; } // newWidth > 0, newHeight > 0, subset either NULL or a proper subset of this bounds virtual SkImage* onNewImage(int newWidth, int newHeight, const SkIRect* subset, @@ -69,6 +69,8 @@ public: virtual bool onAsLegacyBitmap(SkBitmap*, LegacyBitmapMode) const; + virtual bool onIsLazyGenerated() const { return false; } + private: const SkSurfaceProps fProps; diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index 120c397e82..51bc6f03e2 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -93,6 +93,10 @@ public: SkASSERT(fBitmap.isImmutable()); } + bool onIsLazyGenerated() const override { + return fBitmap.pixelRef() && fBitmap.pixelRef()->isLazyGenerated(); + } + private: SkImage_Raster() : INHERITED(0, 0, kNeedNewImageUniqueID, NULL) { fBitmap.setImmutable(); diff --git a/src/lazy/SkCachingPixelRef.h b/src/lazy/SkCachingPixelRef.h index 25fde0a781..818db22b19 100644 --- a/src/lazy/SkCachingPixelRef.h +++ b/src/lazy/SkCachingPixelRef.h @@ -50,6 +50,8 @@ protected: return fImageGenerator->refEncodedData(); } + bool onIsLazyGenerated() const override { return true; } + private: SkImageGenerator* const fImageGenerator; bool fErrorInDecoding; diff --git a/src/lazy/SkDiscardablePixelRef.h b/src/lazy/SkDiscardablePixelRef.h index e8451ee269..3b38fa669c 100644 --- a/src/lazy/SkDiscardablePixelRef.h +++ b/src/lazy/SkDiscardablePixelRef.h @@ -36,6 +36,8 @@ protected: return fGenerator->refEncodedData(); } + bool onIsLazyGenerated() const override { return true; } + private: SkImageGenerator* const fGenerator; SkDiscardableMemory::Factory* const fDMFactory; |