diff --git a/src/gpu/GrImageIDTextureAdjuster.cpp b/src/gpu/GrImageIDTextureAdjuster.cpp index 4ff3ed5d95..4b57757da6 100644 --- a/src/gpu/GrImageIDTextureAdjuster.cpp +++ b/src/gpu/GrImageIDTextureAdjuster.cpp @@ -41,6 +41,10 @@ void GrBitmapTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { GrInstallBitmapUniqueKeyInvalidator(copyKey, fBmp->pixelRef()); } +SkColorSpace* GrBitmapTextureAdjuster::getColorSpace() { + return fBmp->colorSpace(); +} + ////////////////////////////////////////////////////////////////////////////// // SkImage's don't have a way of communicating whether they're alpha-only. So we fallback to @@ -67,6 +71,10 @@ void GrImageTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { // We don't currently have a mechanism for notifications on Images! } +SkColorSpace* GrImageTextureAdjuster::getColorSpace() { + return fImageBase->onImageInfo().colorSpace(); +} + ////////////////////////////////////////////////////////////////////////////// GrBitmapTextureMaker::GrBitmapTextureMaker(GrContext* context, const SkBitmap& bitmap) @@ -114,6 +122,10 @@ void GrBitmapTextureMaker::didCacheCopy(const GrUniqueKey& copyKey) { GrInstallBitmapUniqueKeyInvalidator(copyKey, fBitmap.pixelRef()); } +SkColorSpace* GrBitmapTextureMaker::getColorSpace() { + return fBitmap.colorSpace(); +} + ////////////////////////////////////////////////////////////////////////////// static bool cacher_is_alpha_only(const SkImageCacherator& cacher) { return kAlpha_8_SkColorType == cacher.info().colorType(); @@ -148,3 +160,7 @@ void GrImageTextureMaker::didCacheCopy(const GrUniqueKey& copyKey) { as_IB(fClient)->notifyAddedToCache(); } } + +SkColorSpace* GrImageTextureMaker::getColorSpace() { + return fCacher->info().colorSpace(); +} diff --git a/src/gpu/GrImageIDTextureAdjuster.h b/src/gpu/GrImageIDTextureAdjuster.h index d516fc592c..c32bdb18a0 100644 --- a/src/gpu/GrImageIDTextureAdjuster.h +++ b/src/gpu/GrImageIDTextureAdjuster.h @@ -21,6 +21,9 @@ class GrBitmapTextureAdjuster : public GrTextureAdjuster { public: explicit GrBitmapTextureAdjuster(const SkBitmap* bmp); +protected: + SkColorSpace* getColorSpace() override; + private: void makeCopyKey(const CopyParams& params, GrUniqueKey* copyKey) override; @@ -37,6 +40,9 @@ class GrImageTextureAdjuster : public GrTextureAdjuster { public: explicit GrImageTextureAdjuster(const SkImage_Base* img); +protected: + SkColorSpace* getColorSpace() override; + private: void makeCopyKey(const CopyParams& params, GrUniqueKey* copyKey) override; @@ -61,6 +67,8 @@ protected: void didCacheCopy(const GrUniqueKey& copyKey) override; + SkColorSpace* getColorSpace() override; + private: const SkBitmap fBitmap; GrUniqueKey fOriginalKey; @@ -84,6 +92,8 @@ protected: void makeCopyKey(const CopyParams& stretch, GrUniqueKey* paramsCopyKey) override; void didCacheCopy(const GrUniqueKey& copyKey) override; + SkColorSpace* getColorSpace() override; + private: SkImageCacherator* fCacher; const SkImage* fClient; diff --git a/src/gpu/GrTextureParamsAdjuster.h b/src/gpu/GrTextureParamsAdjuster.h index 08d71c4563..7513eb4d2f 100644 --- a/src/gpu/GrTextureParamsAdjuster.h +++ b/src/gpu/GrTextureParamsAdjuster.h @@ -108,6 +108,8 @@ protected: */ virtual void didCacheCopy(const GrUniqueKey& copyKey) = 0; + virtual SkColorSpace* getColorSpace() = 0; + private: const int fWidth; const int fHeight;