| Index: src/gpu/GrDefaultPathRenderer.cpp
|
| diff --git a/src/gpu/GrDefaultPathRenderer.cpp b/src/gpu/GrDefaultPathRenderer.cpp
|
| index 4d9026f08606e6470e4440f92ddead91a17972a8..24d3c456cb34edaa5edf03a4e50027194ebacf1e 100644
|
| --- a/src/gpu/GrDefaultPathRenderer.cpp
|
| +++ b/src/gpu/GrDefaultPathRenderer.cpp
|
| @@ -233,12 +233,10 @@ bool GrDefaultPathRenderer::createGeom(GrDrawTarget* target,
|
| }
|
| }
|
|
|
| - // TODO this is really wierd, I just need default vertex stride, can I think of a better way?
|
| - SkAutoTUnref<const GrGeometryProcessor> gp(GrDefaultGeoProcFactory::Create());
|
| - if (!arg->set(target, maxPts, gp->getVertexStride(), maxIdxs)) {
|
| + if (!arg->set(target, maxPts, GrDefaultGeoProcFactory::DefaultVertexStride(), maxIdxs)) {
|
| return false;
|
| }
|
| - SkASSERT(gp->getVertexStride() == sizeof(SkPoint));
|
| + SkASSERT(GrDefaultGeoProcFactory::DefaultVertexStride() == sizeof(SkPoint));
|
|
|
| uint16_t* idxBase = reinterpret_cast<uint16_t*>(arg->indices());
|
| uint16_t* idx = idxBase;
|
| @@ -330,6 +328,7 @@ FINISHED:
|
|
|
| bool GrDefaultPathRenderer::internalDrawPath(GrDrawTarget* target,
|
| GrDrawState* drawState,
|
| + GrColor color,
|
| const SkPath& path,
|
| const SkStrokeRec& origStroke,
|
| bool stencilOnly) {
|
| @@ -337,10 +336,10 @@ bool GrDefaultPathRenderer::internalDrawPath(GrDrawTarget* target,
|
| SkTCopyOnFirstWrite<SkStrokeRec> stroke(origStroke);
|
|
|
| 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);
|
|
|
| if (!stroke->isHairlineStyle()) {
|
| stroke.writable()->setHairlineStyle();
|
| @@ -493,13 +492,16 @@ bool GrDefaultPathRenderer::internalDrawPath(GrDrawTarget* target,
|
| bounds = path.getBounds();
|
| }
|
| GrDrawTarget::AutoGeometryPush agp(target);
|
| - target->drawSimpleRect(drawState, bounds);
|
| + target->drawSimpleRect(drawState, color, bounds);
|
| } else {
|
| if (passCount > 1) {
|
| drawState->enableState(GrDrawState::kNoColorWrites_StateBit);
|
| }
|
| GrDrawState::AutoRestoreEffects are(drawState);
|
| - drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create())->unref();
|
| + drawState->setGeometryProcessor(
|
| + GrDefaultGeoProcFactory::Create(color,
|
| + GrDefaultGeoProcFactory::kPosition_GPType,
|
| + newCoverage))->unref();
|
| if (indexCnt) {
|
| target->drawIndexed(drawState,
|
| primType,
|
| @@ -530,11 +532,13 @@ bool GrDefaultPathRenderer::canDrawPath(const GrDrawTarget* target,
|
|
|
| bool GrDefaultPathRenderer::onDrawPath(GrDrawTarget* target,
|
| GrDrawState* drawState,
|
| + GrColor color,
|
| const SkPath& path,
|
| const SkStrokeRec& stroke,
|
| bool antiAlias) {
|
| return this->internalDrawPath(target,
|
| drawState,
|
| + color,
|
| path,
|
| stroke,
|
| false);
|
| @@ -546,5 +550,5 @@ void GrDefaultPathRenderer::onStencilPath(GrDrawTarget* target,
|
| const SkStrokeRec& stroke) {
|
| SkASSERT(SkPath::kInverseEvenOdd_FillType != path.getFillType());
|
| SkASSERT(SkPath::kInverseWinding_FillType != path.getFillType());
|
| - this->internalDrawPath(target, drawState, path, stroke, true);
|
| + this->internalDrawPath(target, drawState, GrColor_WHITE, path, stroke, true);
|
| }
|
|
|