Add getColorSpace to GrTextureProducer
authorbrianosman <brianosman@google.com>
Fri, 15 Jul 2016 13:59:48 +0000 (06:59 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 15 Jul 2016 13:59:48 +0000 (06:59 -0700)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2150113002

Review-Url: https://codereview.chromium.org/2150113002

src/gpu/GrImageIDTextureAdjuster.cpp
src/gpu/GrImageIDTextureAdjuster.h
src/gpu/GrTextureParamsAdjuster.h

index 4ff3ed5d956f4e4daec4ee597e175cab2d55d381..4b57757da60f27a719a5336861a9fbad8fc48aaf 100644 (file)
@@ -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();
+}
index d516fc592c212a7f21786f080181c25ea7110825..c32bdb18a09d8b778c0dd85d63349e933397e551 100644 (file)
@@ -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;
index 08d71c4563f9c047ad39c51882810f9497c5d3be..7513eb4d2f03dc5bec123779fc8352cbfb79eda8 100644 (file)
@@ -108,6 +108,8 @@ protected:
     */
     virtual void didCacheCopy(const GrUniqueKey& copyKey) = 0;
 
+    virtual SkColorSpace* getColorSpace() = 0;
+
 private:
     const int   fWidth;
     const int   fHeight;