shape ops work in progress

Review URL: https://codereview.appspot.com/6392058

git-svn-id: http://skia.googlecode.com/svn/trunk@4591 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
caryclark@google.com 2012-07-13 11:57:28 +00:00
parent c665832fbf
commit 5c286d3286
2 changed files with 14 additions and 9 deletions

View File

@ -1157,9 +1157,10 @@ public:
// it is guaranteed to have an end which describes a non-zero length (?)
// winding -1 means ccw, 1 means cw
// firstFind allows coincident edges to be treated differently
Segment* findNext(SkTDArray<Span*>& chase, int winding, const int startIndex,
const int endIndex,
int& nextStart, int& nextEnd, int& flipped, bool firstFind) {
Segment* findNext(SkTDArray<Span*>& chase, int winding,
const int startIndex, const int endIndex,
int& nextStart, int& nextEnd, int& flipped, bool firstFind
,bool active /* active param is debugging only */ ) {
SkASSERT(startIndex != endIndex);
int count = fTs.count();
SkASSERT(startIndex < endIndex ? startIndex < count - 1
@ -1217,11 +1218,14 @@ public:
}
firstEdge = false;
if (!winding) {
if (!active) {
SkASSERT(nextAngle->segment() == this);
markWinding(SkMin32(nextAngle->start(), nextAngle->end()),
maxWinding);
SkDebugf("%s inactive\n", __FUNCTION__);
return NULL;
}
if (!foundAngle) {
#if 0
nextAngle->segment()->markWinding(
SkMin32(nextAngle->start(), nextAngle->end()), maxWinding);
#endif
foundAngle = nextAngle;
}
continue;
@ -2941,7 +2945,8 @@ static void bridge(SkTDArray<Contour*>& contourList, SkPath& simple) {
int nextStart, nextEnd, flipped = 1;
Segment* next = current->findNext(chaseArray,
winding + spanWinding, index,
endIndex, nextStart, nextEnd, flipped, firstTime);
endIndex, nextStart, nextEnd, flipped, firstTime
, active /* active is debugging only */ );
if (!next) {
break;
}

View File

@ -35,7 +35,7 @@ static const SimplifyFindNextTest::Segment* testCommon(
int nextStart, nextEnd, flipped = 1;
SkTDArray<SimplifyFindNextTest::Span*> chaseArray;
SimplifyFindNextTest::Segment* next = segment.findNext(chaseArray, winding,
startIndex, endIndex, nextStart, nextEnd, flipped, true);
startIndex, endIndex, nextStart, nextEnd, flipped, true, true);
pts[1] = next->xyAtT(&next->span(nextStart));
SkASSERT(pts[0] == pts[1]);
return next;