Index: src/gpu/GrAAHairLinePathRenderer.cpp |
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp |
index 15a5569b3072c73c05471af3d7a0486042ce89f7..37150bd9a592317cffba51c34199a8900d326f95 100644 |
--- a/src/gpu/GrAAHairLinePathRenderer.cpp |
+++ b/src/gpu/GrAAHairLinePathRenderer.cpp |
@@ -643,6 +643,7 @@ void add_line(const SkPoint p[2], |
bool GrAAHairLinePathRenderer::createLineGeom(GrDrawTarget* target, |
GrDrawState* drawState, |
+ uint8_t coverage, |
GrDrawTarget::AutoReleaseGeometry* arg, |
SkRect* devBounds, |
const SkPath& path, |
@@ -670,7 +671,7 @@ bool GrAAHairLinePathRenderer::createLineGeom(GrDrawTarget* target, |
} |
devBounds->set(lines.begin(), lines.count()); |
for (int i = 0; i < lineCnt; ++i) { |
- add_line(&lines[2*i], toSrc, drawState->getCoverage(), &verts); |
+ add_line(&lines[2*i], toSrc, coverage, &verts); |
} |
// All the verts computed by add_line are within sqrt(1^2 + 0.5^2) of the end points. |
static const SkScalar kSqrtOfOneAndAQuarter = 1.118f; |
@@ -803,14 +804,15 @@ bool check_bounds(GrDrawState* drawState, const SkRect& devBounds, void* vertice |
bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
GrDrawState* drawState, |
+ GrColor color, |
const SkPath& path, |
const SkStrokeRec& stroke, |
bool antiAlias) { |
SkScalar hairlineCoverage; |
+ uint8_t newCoverage = 0xff; |
if (IsStrokeHairlineOrEquivalent(stroke, drawState->getViewMatrix(), |
&hairlineCoverage)) { |
- uint8_t newCoverage = SkScalarRoundToInt(hairlineCoverage * drawState->getCoverage()); |
- drawState->setCoverage(newCoverage); |
+ newCoverage = SkScalarRoundToInt(hairlineCoverage * 0xff); |
} |
SkIRect devClipBounds; |
@@ -837,10 +839,13 @@ bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType | |
GrDefaultGeoProcFactory::kCoverage_GPType; |
GrDrawState::AutoRestoreEffects are(drawState); |
- drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create(gpFlags))->unref(); |
+ drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create(color, |
+ gpFlags, |
+ newCoverage))->unref(); |
if (!this->createLineGeom(target, |
drawState, |
+ newCoverage, |
&arg, |
&devBounds, |
path, |
@@ -911,7 +916,10 @@ bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
if (quadCnt > 0) { |
GrGeometryProcessor* hairQuadProcessor = |
- GrQuadEffect::Create(kHairlineAA_GrProcessorEdgeType, *target->caps()); |
+ GrQuadEffect::Create(color, |
+ kHairlineAA_GrProcessorEdgeType, |
+ *target->caps(), |
+ newCoverage); |
SkASSERT(hairQuadProcessor); |
GrDrawState::AutoRestoreEffects are(drawState); |
target->setIndexSourceToBuffer(fQuadsIndexBuffer); |
@@ -934,7 +942,7 @@ bool GrAAHairLinePathRenderer::onDrawPath(GrDrawTarget* target, |
if (conicCnt > 0) { |
GrDrawState::AutoRestoreEffects are(drawState); |
GrGeometryProcessor* hairConicProcessor = GrConicEffect::Create( |
- kHairlineAA_GrProcessorEdgeType, *target->caps()); |
+ color, kHairlineAA_GrProcessorEdgeType, *target->caps(), newCoverage); |
SkASSERT(hairConicProcessor); |
drawState->setGeometryProcessor(hairConicProcessor)->unref(); |