Index: src/gpu/GrAARectRenderer.cpp |
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp |
index 07e81ecef7b9fe7f8a2d380b5c5fca34710207ac..3f0e1b0117181c5d56df9d4a6243e0cf06e2dff6 100644 |
--- a/src/gpu/GrAARectRenderer.cpp |
+++ b/src/gpu/GrAARectRenderer.cpp |
@@ -26,16 +26,18 @@ enum CoverageAttribType { |
} |
static const GrGeometryProcessor* create_rect_gp(const GrDrawState& drawState, GrColor color, |
- CoverageAttribType* type) { |
+ CoverageAttribType* type, |
+ const SkMatrix& localMatrix) { |
uint32_t flags = GrDefaultGeoProcFactory::kColor_GPType; |
const GrGeometryProcessor* gp; |
if (drawState.canTweakAlphaForCoverage()) { |
- gp = GrDefaultGeoProcFactory::Create(color, flags); |
+ gp = GrDefaultGeoProcFactory::Create(color, flags, localMatrix); |
SkASSERT(gp->getVertexStride() == sizeof(GrDefaultGeoProcFactory::PositionColorAttr)); |
*type = kUseColor_CoverageAttribType; |
} else { |
flags |= GrDefaultGeoProcFactory::kCoverage_GPType; |
- gp = GrDefaultGeoProcFactory::Create(color, flags, GrColorIsOpaque(color)); |
+ gp = GrDefaultGeoProcFactory::Create(color, flags, GrColorIsOpaque(color), 0xff, |
+ localMatrix); |
SkASSERT(gp->getVertexStride()==sizeof(GrDefaultGeoProcFactory::PositionColorCoverageAttr)); |
*type = kUseCoverage_CoverageAttribType; |
} |
@@ -178,13 +180,15 @@ GrIndexBuffer* GrAARectRenderer::aaStrokeRectIndexBuffer(bool miterStroke) { |
void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target, |
GrDrawState* drawState, |
GrColor color, |
+ const SkMatrix& localMatrix, |
const SkRect& rect, |
const SkMatrix& combinedMatrix, |
const SkRect& devRect) { |
GrDrawState::AutoRestoreEffects are(drawState); |
CoverageAttribType type; |
- SkAutoTUnref<const GrGeometryProcessor> gp(create_rect_gp(*drawState, color, &type)); |
+ SkAutoTUnref<const GrGeometryProcessor> gp(create_rect_gp(*drawState, color, &type, |
+ localMatrix)); |
size_t vertexStride = gp->getVertexStride(); |
GrDrawTarget::AutoReleaseGeometry geo(target, 8, vertexStride, 0); |
@@ -308,6 +312,7 @@ void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target, |
void GrAARectRenderer::strokeAARect(GrDrawTarget* target, |
GrDrawState* drawState, |
GrColor color, |
+ const SkMatrix& localMatrix, |
const SkRect& rect, |
const SkMatrix& combinedMatrix, |
const SkRect& devRect, |
@@ -354,7 +359,8 @@ void GrAARectRenderer::strokeAARect(GrDrawTarget* target, |
} |
if (spare <= 0 && miterStroke) { |
- this->fillAARect(target, drawState, color, devOutside, SkMatrix::I(), devOutside); |
+ this->fillAARect(target, drawState, color, localMatrix, devOutside, SkMatrix::I(), |
+ devOutside); |
return; |
} |
@@ -371,13 +377,14 @@ void GrAARectRenderer::strokeAARect(GrDrawTarget* target, |
devOutsideAssist.outset(0, ry); |
} |
- this->geometryStrokeAARect(target, drawState, color, devOutside, devOutsideAssist, devInside, |
- miterStroke); |
+ this->geometryStrokeAARect(target, drawState, color, localMatrix, devOutside, devOutsideAssist, |
+ devInside, miterStroke); |
} |
void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target, |
GrDrawState* drawState, |
GrColor color, |
+ const SkMatrix& localMatrix, |
const SkRect& devOutside, |
const SkRect& devOutsideAssist, |
const SkRect& devInside, |
@@ -385,7 +392,8 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target, |
GrDrawState::AutoRestoreEffects are(drawState); |
CoverageAttribType type; |
- SkAutoTUnref<const GrGeometryProcessor> gp(create_rect_gp(*drawState, color, &type)); |
+ SkAutoTUnref<const GrGeometryProcessor> gp(create_rect_gp(*drawState, color, &type, |
+ localMatrix)); |
int innerVertexNum = 4; |
int outerVertexNum = miterStroke ? 4 : 8; |
@@ -510,6 +518,7 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target, |
void GrAARectRenderer::fillAANestedRects(GrDrawTarget* target, |
GrDrawState* drawState, |
GrColor color, |
+ const SkMatrix& localMatrix, |
const SkRect rects[2], |
const SkMatrix& combinedMatrix) { |
SkASSERT(combinedMatrix.rectStaysRect()); |
@@ -521,10 +530,11 @@ void GrAARectRenderer::fillAANestedRects(GrDrawTarget* target, |
combinedMatrix.mapPoints((SkPoint*)&devInside, (const SkPoint*)&rects[1], 2); |
if (devInside.isEmpty()) { |
- this->fillAARect(target, drawState, color, devOutside, SkMatrix::I(), devOutside); |
+ this->fillAARect(target, drawState, color, localMatrix, devOutside, SkMatrix::I(), |
+ devOutside); |
return; |
} |
- this->geometryStrokeAARect(target, drawState, color, devOutside, devOutsideAssist, devInside, |
- true); |
+ this->geometryStrokeAARect(target, drawState, color, localMatrix, devOutside, devOutsideAssist, |
+ devInside, true); |
} |