aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image
diff options
context:
space:
mode:
Diffstat (limited to 'src/image')
-rw-r--r--src/image/SkImage.cpp5
-rw-r--r--src/image/SkImage_Base.h4
-rw-r--r--src/image/SkImage_Lazy.cpp4
3 files changed, 13 insertions, 0 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp
index 72285bd698..cc4419a904 100644
--- a/src/image/SkImage.cpp
+++ b/src/image/SkImage.cpp
@@ -411,6 +411,11 @@ void SkImage_unpinAsTexture(const SkImage* image, GrContext* ctx) {
as_IB(image)->onUnpinAsTexture(ctx);
}
+SkIRect SkImage_getSubset(const SkImage* image) {
+ SkASSERT(image);
+ return as_IB(image)->onGetSubset();
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////////
sk_sp<SkImage> SkImageMakeRasterCopyAndAssignColorSpace(const SkImage* src,
diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h
index 2049fb3561..0d54a39471 100644
--- a/src/image/SkImage_Base.h
+++ b/src/image/SkImage_Base.h
@@ -38,6 +38,10 @@ public:
virtual SkColorType onColorType() const = 0;
virtual SkAlphaType onAlphaType() const = 0;
+ virtual SkIRect onGetSubset() const {
+ return { 0, 0, this->width(), this->height() };
+ }
+
virtual bool onPeekPixels(SkPixmap*) const { return false; }
virtual const SkBitmap* onPeekBitmap() const { return nullptr; }
diff --git a/src/image/SkImage_Lazy.cpp b/src/image/SkImage_Lazy.cpp
index 82d573d708..7914f58d3c 100644
--- a/src/image/SkImage_Lazy.cpp
+++ b/src/image/SkImage_Lazy.cpp
@@ -77,6 +77,10 @@ public:
return fInfo.alphaType();
}
+ SkIRect onGetSubset() const override {
+ return SkIRect::MakeXYWH(fOrigin.fX, fOrigin.fY, fInfo.width(), fInfo.height());
+ }
+
bool onReadPixels(const SkImageInfo&, void*, size_t, int srcX, int srcY,
CachingHint) const override;
#if SK_SUPPORT_GPU