aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2015-08-20 08:47:26 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-08-20 08:47:26 -0700
commitddbbddabefe865cc52e4b89a9d45455b987129bd (patch)
treedac7bc153f4623b6efb980985734478b93033355 /src
parent7d173403f47bb85cfd5c42b69c734668e25e47f9 (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.cpp4
-rw-r--r--src/image/SkImage_Base.h4
-rw-r--r--src/image/SkImage_Raster.cpp4
-rw-r--r--src/lazy/SkCachingPixelRef.h2
-rw-r--r--src/lazy/SkDiscardablePixelRef.h2
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;