Chromium Code Reviews| Index: src/effects/SkTransparentShader.cpp |
| diff --git a/src/effects/SkTransparentShader.cpp b/src/effects/SkTransparentShader.cpp |
| index 9de4a0cc23423d14ec451d7f5237b554341aad90..6a1a116b09e5af2e00e948cd1cf8fd36b6219bb9 100644 |
| --- a/src/effects/SkTransparentShader.cpp |
| +++ b/src/effects/SkTransparentShader.cpp |
| @@ -11,16 +11,37 @@ |
| #include "SkColorPriv.h" |
| #include "SkString.h" |
| -bool SkTransparentShader::setContext(const SkBitmap& device, |
| - const SkPaint& paint, |
| - const SkMatrix& matrix) { |
| - fDevice = &device; |
| - fAlpha = paint.getAlpha(); |
| +SkShader::Context* SkTransparentShader::createContext(const SkBitmap& device, |
| + const SkPaint& paint, |
| + const SkMatrix& matrix, |
| + void* storage) const { |
| + if (!this->validContext(device, paint, matrix)) { |
| + return NULL; |
| + } |
| + |
| + return SkNEW_PLACEMENT_ARGS(storage, TransparentShaderContext, (*this, device, paint, matrix)); |
| +} |
| - return this->INHERITED::setContext(device, paint, matrix); |
| +size_t SkTransparentShader::contextSize() const { |
| + return sizeof(TransparentShaderContext); |
| } |
| -uint32_t SkTransparentShader::getFlags() { |
| +bool SkTransparentShader::validContext(const SkBitmap& device, |
|
scroggo
2014/03/24 21:24:46
Why did you override this if all you do is call in
Dominik Grewe
2014/03/26 17:22:22
Removed it.
|
| + const SkPaint& paint, |
| + const SkMatrix& matrix) const { |
| + return this->INHERITED::validContext(device, paint, matrix); |
| +} |
| + |
| +SkTransparentShader::TransparentShaderContext::TransparentShaderContext( |
| + const SkTransparentShader& shader, const SkBitmap& device, |
|
scroggo
2014/03/24 21:24:46
nit: 8 space indent.
Dominik Grewe
2014/03/26 17:22:22
Done.
|
| + const SkPaint& paint, const SkMatrix& matrix) |
| + : INHERITED(shader, device, paint, matrix) |
| + , fDevice(&device) |
| + , fAlpha(paint.getAlpha()) {} |
|
scroggo
2014/03/24 21:24:46
fAlpha wasn't created by you, but as long as we're
Dominik Grewe
2014/03/26 17:22:22
Done.
|
| + |
| +SkTransparentShader::TransparentShaderContext::~TransparentShaderContext() {} |
| + |
| +uint32_t SkTransparentShader::TransparentShaderContext::getFlags() const { |
| uint32_t flags = this->INHERITED::getFlags(); |
| switch (fDevice->colorType()) { |
| @@ -39,7 +60,8 @@ uint32_t SkTransparentShader::getFlags() { |
| return flags; |
| } |
| -void SkTransparentShader::shadeSpan(int x, int y, SkPMColor span[], int count) { |
| +void SkTransparentShader::TransparentShaderContext::shadeSpan( |
| + int x, int y, SkPMColor span[], int count) { |
|
scroggo
2014/03/24 21:24:46
nit: The parameters that fit on the same line shou
|
| unsigned scale = SkAlpha255To256(fAlpha); |
| switch (fDevice->colorType()) { |
| @@ -97,7 +119,8 @@ void SkTransparentShader::shadeSpan(int x, int y, SkPMColor span[], int count) { |
| } |
| } |
| -void SkTransparentShader::shadeSpan16(int x, int y, uint16_t span[], int count) { |
| +void SkTransparentShader::TransparentShaderContext::shadeSpan16( |
| + int x, int y, uint16_t span[], int count) { |
|
scroggo
2014/03/24 21:24:46
same.
|
| SkASSERT(fDevice->colorType() == kRGB_565_SkColorType); |
| uint16_t* src = fDevice->getAddr16(x, y); |