| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrImageIDTextureAdjuster.h" | 8 #include "GrImageIDTextureAdjuster.h" |
| 9 | 9 |
| 10 #include "GrContext.h" | 10 #include "GrContext.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 GrUniqueKey baseKey; | 34 GrUniqueKey baseKey; |
| 35 GrMakeKeyFromImageID(&baseKey, fBmp->getGenerationID(), | 35 GrMakeKeyFromImageID(&baseKey, fBmp->getGenerationID(), |
| 36 SkIRect::MakeWH(fBmp->width(), fBmp->height())); | 36 SkIRect::MakeWH(fBmp->width(), fBmp->height())); |
| 37 MakeCopyKeyFromOrigKey(baseKey, params, copyKey); | 37 MakeCopyKeyFromOrigKey(baseKey, params, copyKey); |
| 38 } | 38 } |
| 39 | 39 |
| 40 void GrBitmapTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { | 40 void GrBitmapTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { |
| 41 GrInstallBitmapUniqueKeyInvalidator(copyKey, fBmp->pixelRef()); | 41 GrInstallBitmapUniqueKeyInvalidator(copyKey, fBmp->pixelRef()); |
| 42 } | 42 } |
| 43 | 43 |
| 44 SkColorSpace* GrBitmapTextureAdjuster::getColorSpace() { |
| 45 return fBmp->colorSpace(); |
| 46 } |
| 47 |
| 44 ////////////////////////////////////////////////////////////////////////////// | 48 ////////////////////////////////////////////////////////////////////////////// |
| 45 | 49 |
| 46 // SkImage's don't have a way of communicating whether they're alpha-only. So we
fallback to | 50 // SkImage's don't have a way of communicating whether they're alpha-only. So we
fallback to |
| 47 // inspecting the texture. | 51 // inspecting the texture. |
| 48 static bool tex_image_is_alpha_only(const SkImage_Base& img) { | 52 static bool tex_image_is_alpha_only(const SkImage_Base& img) { |
| 49 return GrPixelConfigIsAlphaOnly(img.peekTexture()->config()); | 53 return GrPixelConfigIsAlphaOnly(img.peekTexture()->config()); |
| 50 } | 54 } |
| 51 | 55 |
| 52 GrImageTextureAdjuster::GrImageTextureAdjuster(const SkImage_Base* img) | 56 GrImageTextureAdjuster::GrImageTextureAdjuster(const SkImage_Base* img) |
| 53 : INHERITED(img->peekTexture(), SkIRect::MakeWH(img->width(), img->height())
, | 57 : INHERITED(img->peekTexture(), SkIRect::MakeWH(img->width(), img->height())
, |
| 54 tex_image_is_alpha_only(*img)) | 58 tex_image_is_alpha_only(*img)) |
| 55 , fImageBase(img) {} | 59 , fImageBase(img) {} |
| 56 | 60 |
| 57 void GrImageTextureAdjuster::makeCopyKey(const CopyParams& params, GrUniqueKey*
copyKey) { | 61 void GrImageTextureAdjuster::makeCopyKey(const CopyParams& params, GrUniqueKey*
copyKey) { |
| 58 // By construction this texture adjuster always represents an entire SkImage
, so use the | 62 // By construction this texture adjuster always represents an entire SkImage
, so use the |
| 59 // image's width and height for the key's rectangle. | 63 // image's width and height for the key's rectangle. |
| 60 GrUniqueKey baseKey; | 64 GrUniqueKey baseKey; |
| 61 GrMakeKeyFromImageID(&baseKey, fImageBase->uniqueID(), | 65 GrMakeKeyFromImageID(&baseKey, fImageBase->uniqueID(), |
| 62 SkIRect::MakeWH(fImageBase->width(), fImageBase->height
())); | 66 SkIRect::MakeWH(fImageBase->width(), fImageBase->height
())); |
| 63 MakeCopyKeyFromOrigKey(baseKey, params, copyKey); | 67 MakeCopyKeyFromOrigKey(baseKey, params, copyKey); |
| 64 } | 68 } |
| 65 | 69 |
| 66 void GrImageTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { | 70 void GrImageTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { |
| 67 // We don't currently have a mechanism for notifications on Images! | 71 // We don't currently have a mechanism for notifications on Images! |
| 68 } | 72 } |
| 69 | 73 |
| 74 SkColorSpace* GrImageTextureAdjuster::getColorSpace() { |
| 75 return fImageBase->onImageInfo().colorSpace(); |
| 76 } |
| 77 |
| 70 ////////////////////////////////////////////////////////////////////////////// | 78 ////////////////////////////////////////////////////////////////////////////// |
| 71 | 79 |
| 72 GrBitmapTextureMaker::GrBitmapTextureMaker(GrContext* context, const SkBitmap& b
itmap) | 80 GrBitmapTextureMaker::GrBitmapTextureMaker(GrContext* context, const SkBitmap& b
itmap) |
| 73 : INHERITED(context, bitmap.width(), bitmap.height(), bmp_is_alpha_only(bitm
ap)) | 81 : INHERITED(context, bitmap.width(), bitmap.height(), bmp_is_alpha_only(bitm
ap)) |
| 74 , fBitmap(bitmap) { | 82 , fBitmap(bitmap) { |
| 75 SkASSERT(!bitmap.getTexture()); | 83 SkASSERT(!bitmap.getTexture()); |
| 76 if (!bitmap.isVolatile()) { | 84 if (!bitmap.isVolatile()) { |
| 77 SkIPoint origin = bitmap.pixelRefOrigin(); | 85 SkIPoint origin = bitmap.pixelRefOrigin(); |
| 78 SkIRect subset = SkIRect::MakeXYWH(origin.fX, origin.fY, bitmap.width(), | 86 SkIRect subset = SkIRect::MakeXYWH(origin.fX, origin.fY, bitmap.width(), |
| 79 bitmap.height()); | 87 bitmap.height()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 107 void GrBitmapTextureMaker::makeCopyKey(const CopyParams& copyParams, GrUniqueKey
* copyKey) { | 115 void GrBitmapTextureMaker::makeCopyKey(const CopyParams& copyParams, GrUniqueKey
* copyKey) { |
| 108 if (fOriginalKey.isValid()) { | 116 if (fOriginalKey.isValid()) { |
| 109 MakeCopyKeyFromOrigKey(fOriginalKey, copyParams, copyKey); | 117 MakeCopyKeyFromOrigKey(fOriginalKey, copyParams, copyKey); |
| 110 } | 118 } |
| 111 } | 119 } |
| 112 | 120 |
| 113 void GrBitmapTextureMaker::didCacheCopy(const GrUniqueKey& copyKey) { | 121 void GrBitmapTextureMaker::didCacheCopy(const GrUniqueKey& copyKey) { |
| 114 GrInstallBitmapUniqueKeyInvalidator(copyKey, fBitmap.pixelRef()); | 122 GrInstallBitmapUniqueKeyInvalidator(copyKey, fBitmap.pixelRef()); |
| 115 } | 123 } |
| 116 | 124 |
| 125 SkColorSpace* GrBitmapTextureMaker::getColorSpace() { |
| 126 return fBitmap.colorSpace(); |
| 127 } |
| 128 |
| 117 ////////////////////////////////////////////////////////////////////////////// | 129 ////////////////////////////////////////////////////////////////////////////// |
| 118 static bool cacher_is_alpha_only(const SkImageCacherator& cacher) { | 130 static bool cacher_is_alpha_only(const SkImageCacherator& cacher) { |
| 119 return kAlpha_8_SkColorType == cacher.info().colorType(); | 131 return kAlpha_8_SkColorType == cacher.info().colorType(); |
| 120 } | 132 } |
| 121 GrImageTextureMaker::GrImageTextureMaker(GrContext* context, SkImageCacherator*
cacher, | 133 GrImageTextureMaker::GrImageTextureMaker(GrContext* context, SkImageCacherator*
cacher, |
| 122 const SkImage* client, SkImage::Caching
Hint chint) | 134 const SkImage* client, SkImage::Caching
Hint chint) |
| 123 : INHERITED(context, cacher->info().width(), cacher->info().height(), | 135 : INHERITED(context, cacher->info().width(), cacher->info().height(), |
| 124 cacher_is_alpha_only(*cacher)) | 136 cacher_is_alpha_only(*cacher)) |
| 125 , fCacher(cacher) | 137 , fCacher(cacher) |
| 126 , fClient(client) | 138 , fClient(client) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 141 if (fOriginalKey.isValid() && SkImage::kAllow_CachingHint == fCachingHint) { | 153 if (fOriginalKey.isValid() && SkImage::kAllow_CachingHint == fCachingHint) { |
| 142 MakeCopyKeyFromOrigKey(fOriginalKey, stretch, paramsCopyKey); | 154 MakeCopyKeyFromOrigKey(fOriginalKey, stretch, paramsCopyKey); |
| 143 } | 155 } |
| 144 } | 156 } |
| 145 | 157 |
| 146 void GrImageTextureMaker::didCacheCopy(const GrUniqueKey& copyKey) { | 158 void GrImageTextureMaker::didCacheCopy(const GrUniqueKey& copyKey) { |
| 147 if (fClient) { | 159 if (fClient) { |
| 148 as_IB(fClient)->notifyAddedToCache(); | 160 as_IB(fClient)->notifyAddedToCache(); |
| 149 } | 161 } |
| 150 } | 162 } |
| 163 |
| 164 SkColorSpace* GrImageTextureMaker::getColorSpace() { |
| 165 return fCacher->info().colorSpace(); |
| 166 } |
| OLD | NEW |