From f2c736400f03f8fe7fe356962c979f23df4d5f6b Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Tue, 29 May 2018 15:41:27 -0400 Subject: support image-subsets in serialization A follow-on API change *could* be to extend the SerialProcs to pass subset information up to the client, in case they want to handle the subsetting step themselves. Bug: skia:7983 Change-Id: I36d3f1ce439886384495485c3be3c591d611a135 Reviewed-on: https://skia-review.googlesource.com/130543 Reviewed-by: Mike Klein Commit-Queue: Mike Reed --- src/image/SkImage.cpp | 5 +++++ src/image/SkImage_Base.h | 4 ++++ src/image/SkImage_Lazy.cpp | 4 ++++ 3 files changed, 13 insertions(+) (limited to 'src/image') 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 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 -- cgit v1.2.3