| 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 "GrTextureParamsAdjuster.h" | 8 #include "GrTextureParamsAdjuster.h" |
| 9 | 9 |
| 10 #include "GrCaps.h" | 10 #include "GrCaps.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 localRect.fBottom *= sy; | 105 localRect.fBottom *= sy; |
| 106 } else { | 106 } else { |
| 107 localRect = SkRect::MakeWH(1.f, 1.f); | 107 localRect = SkRect::MakeWH(1.f, 1.f); |
| 108 } | 108 } |
| 109 | 109 |
| 110 SkRect dstRect = SkRect::MakeIWH(copyParams.fWidth, copyParams.fHeight); | 110 SkRect dstRect = SkRect::MakeIWH(copyParams.fWidth, copyParams.fHeight); |
| 111 copyDC->fillRectToRect(GrNoClip(), paint, SkMatrix::I(), dstRect, localRect)
; | 111 copyDC->fillRectToRect(GrNoClip(), paint, SkMatrix::I(), dstRect, localRect)
; |
| 112 return copyDC->asTexture().release(); | 112 return copyDC->asTexture().release(); |
| 113 } | 113 } |
| 114 | 114 |
| 115 GrTextureAdjuster::GrTextureAdjuster(GrTexture* original, | 115 GrTextureAdjuster::GrTextureAdjuster(GrTexture* original, const SkIRect& content
Area, |
| 116 const SkIRect& contentArea, | 116 uint32_t uniqueID, SkColorSpace* cs) |
| 117 bool isAlphaOnly) | 117 : INHERITED(contentArea.width(), contentArea.height(), |
| 118 : INHERITED(contentArea.width(), contentArea.height(), isAlphaOnly) | 118 GrPixelConfigIsAlphaOnly(original->config())) |
| 119 , fOriginal(original) { | 119 , fOriginal(original) |
| 120 , fColorSpace(cs) |
| 121 , fUniqueID(uniqueID) |
| 122 { |
| 120 SkASSERT(SkIRect::MakeWH(original->width(), original->height()).contains(con
tentArea)); | 123 SkASSERT(SkIRect::MakeWH(original->width(), original->height()).contains(con
tentArea)); |
| 121 if (contentArea.fLeft > 0 || contentArea.fTop > 0 || | 124 if (contentArea.fLeft > 0 || contentArea.fTop > 0 || |
| 122 contentArea.fRight < original->width() || contentArea.fBottom < original
->height()) { | 125 contentArea.fRight < original->width() || contentArea.fBottom < original
->height()) { |
| 123 fContentArea.set(contentArea); | 126 fContentArea.set(contentArea); |
| 124 } | 127 } |
| 125 } | 128 } |
| 126 | 129 |
| 130 void GrTextureAdjuster::makeCopyKey(const CopyParams& params, GrUniqueKey* copyK
ey) { |
| 131 GrUniqueKey baseKey; |
| 132 GrMakeKeyFromImageID(&baseKey, fUniqueID, SkIRect::MakeWH(this->width(), thi
s->height())); |
| 133 MakeCopyKeyFromOrigKey(baseKey, params, copyKey); |
| 134 } |
| 135 |
| 136 void GrTextureAdjuster::didCacheCopy(const GrUniqueKey& copyKey) { |
| 137 // We don't currently have a mechanism for notifications on Images! |
| 138 } |
| 139 |
| 140 SkColorSpace* GrTextureAdjuster::getColorSpace() { |
| 141 return fColorSpace; |
| 142 } |
| 143 |
| 127 GrTexture* GrTextureAdjuster::refCopy(const CopyParams& copyParams) { | 144 GrTexture* GrTextureAdjuster::refCopy(const CopyParams& copyParams) { |
| 128 GrTexture* texture = this->originalTexture(); | 145 GrTexture* texture = this->originalTexture(); |
| 129 GrContext* context = texture->getContext(); | 146 GrContext* context = texture->getContext(); |
| 130 const SkIRect* contentArea = this->contentAreaOrNull(); | 147 const SkIRect* contentArea = this->contentAreaOrNull(); |
| 131 GrUniqueKey key; | 148 GrUniqueKey key; |
| 132 this->makeCopyKey(copyParams, &key); | 149 this->makeCopyKey(copyParams, &key); |
| 133 if (key.isValid()) { | 150 if (key.isValid()) { |
| 134 GrTexture* cachedCopy = context->textureProvider()->findAndRefTextureByU
niqueKey(key); | 151 GrTexture* cachedCopy = context->textureProvider()->findAndRefTextureByU
niqueKey(key); |
| 135 if (cachedCopy) { | 152 if (cachedCopy) { |
| 136 return cachedCopy; | 153 return cachedCopy; |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 } | 533 } |
| 517 | 534 |
| 518 GrTexture* GrTextureMaker::generateTextureForParams(const CopyParams& copyParams
, bool willBeMipped, | 535 GrTexture* GrTextureMaker::generateTextureForParams(const CopyParams& copyParams
, bool willBeMipped, |
| 519 SkSourceGammaTreatment gamma
Treatment) { | 536 SkSourceGammaTreatment gamma
Treatment) { |
| 520 SkAutoTUnref<GrTexture> original(this->refOriginalTexture(willBeMipped, gamm
aTreatment)); | 537 SkAutoTUnref<GrTexture> original(this->refOriginalTexture(willBeMipped, gamm
aTreatment)); |
| 521 if (!original) { | 538 if (!original) { |
| 522 return nullptr; | 539 return nullptr; |
| 523 } | 540 } |
| 524 return copy_on_gpu(original, nullptr, copyParams); | 541 return copy_on_gpu(original, nullptr, copyParams); |
| 525 } | 542 } |
| OLD | NEW |