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); |