use SkPath for GrPath, removing GrPathIter entirely
http://codereview.appspot.com/4515071/
git-svn-id: http://skia.googlecode.com/svn/trunk@1335 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrTesselatedPathRenderer.cpp b/gpu/src/GrTesselatedPathRenderer.cpp
index 19ee46d..da6da5c 100644
--- a/gpu/src/GrTesselatedPathRenderer.cpp
+++ b/gpu/src/GrTesselatedPathRenderer.cpp
@@ -18,6 +18,8 @@
#include "GrMemory.h"
#include "GrPathUtils.h"
+#include "GrPoint.h"
+#include "GrTDArray.h"
#include <internal_glu.h>
@@ -137,7 +139,7 @@
void GrTesselatedPathRenderer::drawPath(GrDrawTarget* target,
GrDrawTarget::StageBitfield stages,
- GrPathIter* path,
+ const GrPath& path,
GrPathFill fill,
const GrPoint* translate) {
GrDrawTarget::AutoStateRestore asr(target);
@@ -161,8 +163,6 @@
}
GrScalar tolSqd = GrMul(tol, tol);
- path->rewind();
-
int subpathCnt;
int maxPts = GrPathUtils::worstCasePointCount(path, &subpathCnt, tol);
@@ -184,16 +184,14 @@
GrAutoSTMalloc<8, uint16_t> subpathVertCount(subpathCnt);
- path->rewind();
-
GrPoint pts[4];
+ SkPath::Iter iter(path, true);
bool first = true;
int subpath = 0;
for (;;) {
- GrPathCmd cmd = path->next(pts);
- switch (cmd) {
+ switch (iter.next(pts)) {
case kMove_PathCmd:
if (!first) {
subpathVertCount[subpath] = vert-subpathBase;
@@ -262,7 +260,7 @@
return;
}
- if (subpathCnt == 1 && !inverted && path->convexHint() == kConvex_ConvexHint) {
+ if (subpathCnt == 1 && !inverted && path.isConvex()) {
if (target->isAntialiasState()) {
target->enableState(GrDrawTarget::kEdgeAA_StateBit);
EdgeArray edges;
@@ -347,25 +345,25 @@
}
bool GrTesselatedPathRenderer::canDrawPath(const GrDrawTarget* target,
- GrPathIter* path,
+ const SkPath& path,
GrPathFill fill) const {
return kHairLine_PathFill != fill;
}
void GrTesselatedPathRenderer::drawPathToStencil(GrDrawTarget* target,
- GrPathIter* path,
+ const SkPath& path,
GrPathFill fill,
const GrPoint* translate) {
GrAlwaysAssert(!"multipass stencil should not be needed");
}
bool GrTesselatedPathRenderer::supportsAA(GrDrawTarget* target,
- GrPathIter* path,
+ const SkPath& path,
GrPathFill fill) {
int subpathCnt = 0;
int tol = GrPathUtils::gTolerance;
GrPathUtils::worstCasePointCount(path, &subpathCnt, tol);
return (subpathCnt == 1 &&
!IsFillInverted(fill) &&
- path->convexHint() == kConvex_ConvexHint);
+ path.isConvex());
}