| Index: src/core/SkShader.cpp
|
| diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp
|
| index a449d0fd9d4e7835c686d25c76cd5b0960846696..0f6ba4ce9f65855e9937593dddcf6e61e2dff8f7 100644
|
| --- a/src/core/SkShader.cpp
|
| +++ b/src/core/SkShader.cpp
|
| @@ -56,15 +56,11 @@ bool SkShader::computeTotalInverse(const SkMatrix& matrix, SkMatrix* totalInvers
|
| return m->invert(totalInverse);
|
| }
|
|
|
| -bool SkShader::validContext(const SkBitmap& device,
|
| - const SkPaint& paint,
|
| - const SkMatrix& matrix,
|
| - SkMatrix* totalInverse) const {
|
| - return this->computeTotalInverse(matrix, totalInverse);
|
| +bool SkShader::validContext(const ContextRec& rec, SkMatrix* totalInverse) const {
|
| + return this->computeTotalInverse(*rec.fMatrix, totalInverse);
|
| }
|
|
|
| -SkShader::Context* SkShader::createContext(const SkBitmap&, const SkPaint&, const SkMatrix&,
|
| - void* storage) const {
|
| +SkShader::Context* SkShader::createContext(const ContextRec&, void* storage) const {
|
| return NULL;
|
| }
|
|
|
| @@ -72,18 +68,17 @@ size_t SkShader::contextSize() const {
|
| return 0;
|
| }
|
|
|
| -SkShader::Context::Context(const SkShader& shader, const SkBitmap& device,
|
| - const SkPaint& paint, const SkMatrix& matrix)
|
| +SkShader::Context::Context(const SkShader& shader, const ContextRec& rec)
|
| : fShader(shader)
|
| {
|
| - SkASSERT(fShader.validContext(device, paint, matrix));
|
| + SkASSERT(fShader.validContext(rec));
|
|
|
| // Because the context parameters must be valid at this point, we know that the matrix is
|
| // invertible.
|
| - SkAssertResult(fShader.computeTotalInverse(matrix, &fTotalInverse));
|
| + SkAssertResult(fShader.computeTotalInverse(*rec.fMatrix, &fTotalInverse));
|
| fTotalInverseClass = (uint8_t)ComputeMatrixClass(fTotalInverse);
|
|
|
| - fPaintAlpha = paint.getAlpha();
|
| + fPaintAlpha = rec.fPaint->getAlpha();
|
| }
|
|
|
| SkShader::Context::~Context() {}
|
| @@ -250,23 +245,20 @@ uint8_t SkColorShader::ColorShaderContext::getSpan16Alpha() const {
|
| return SkGetPackedA32(fPMColor);
|
| }
|
|
|
| -SkShader::Context* SkColorShader::createContext(const SkBitmap& device, const SkPaint& paint,
|
| - const SkMatrix& matrix, void* storage) const {
|
| - if (!this->validContext(device, paint, matrix)) {
|
| +SkShader::Context* SkColorShader::createContext(const ContextRec& rec, void* storage) const {
|
| + if (!this->validContext(rec)) {
|
| return NULL;
|
| }
|
|
|
| - return SkNEW_PLACEMENT_ARGS(storage, ColorShaderContext, (*this, device, paint, matrix));
|
| + return SkNEW_PLACEMENT_ARGS(storage, ColorShaderContext, (*this, rec));
|
| }
|
|
|
| SkColorShader::ColorShaderContext::ColorShaderContext(const SkColorShader& shader,
|
| - const SkBitmap& device,
|
| - const SkPaint& paint,
|
| - const SkMatrix& matrix)
|
| - : INHERITED(shader, device, paint, matrix)
|
| + const ContextRec& rec)
|
| + : INHERITED(shader, rec)
|
| {
|
| SkColor color = shader.fColor;
|
| - unsigned a = SkAlphaMul(SkColorGetA(color), SkAlpha255To256(paint.getAlpha()));
|
| + unsigned a = SkAlphaMul(SkColorGetA(color), SkAlpha255To256(rec.fPaint->getAlpha()));
|
|
|
| unsigned r = SkColorGetR(color);
|
| unsigned g = SkColorGetG(color);
|
| @@ -285,7 +277,7 @@ SkColorShader::ColorShaderContext::ColorShaderContext(const SkColorShader& shade
|
| fFlags = kConstInY32_Flag;
|
| if (255 == a) {
|
| fFlags |= kOpaqueAlpha_Flag;
|
| - if (paint.isDither() == false) {
|
| + if (rec.fPaint->isDither() == false) {
|
| fFlags |= kHasSpan16_Flag;
|
| }
|
| }
|
|
|