shape ops work in progress
M Intersection/Simplify.cpp git-svn-id: http://skia.googlecode.com/svn/trunk@4560 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
5f47a39916
commit
027de226c1
@ -28,6 +28,7 @@
|
||||
#define DEBUG_CROSS 0
|
||||
#define DEBUG_DUMP 0
|
||||
#define DEBUG_PATH_CONSTRUCTION 0
|
||||
#define DEBUG_ACTIVE_SPANS 0
|
||||
#define DEBUG_WINDING 0
|
||||
#define DEBUG_UNUSED 0 // set to expose unused functions
|
||||
#define DEBUG_MARK_DONE 0
|
||||
@ -41,12 +42,18 @@
|
||||
#define DEBUG_CROSS 1
|
||||
#define DEBUG_DUMP 1
|
||||
#define DEBUG_PATH_CONSTRUCTION 1
|
||||
#define DEBUG_ACTIVE_SPANS 01
|
||||
#define DEBUG_WINDING 01
|
||||
#define DEBUG_UNUSED 0 // set to expose unused functions
|
||||
#define DEBUG_MARK_DONE 01
|
||||
|
||||
#endif
|
||||
|
||||
#if DEBUG_ACTIVE_SPANS && !DEBUG_DUMP
|
||||
#undef DEBUG_DUMP
|
||||
#define DEBUG_DUMP 1
|
||||
#endif
|
||||
|
||||
#if DEBUG_DUMP
|
||||
static const char* kLVerbStr[] = {"", "line", "quad", "cubic"};
|
||||
// static const char* kUVerbStr[] = {"", "Line", "Quad", "Cubic"};
|
||||
@ -1768,6 +1775,33 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DEBUG_ACTIVE_SPANS
|
||||
void debugShowActiveSpans(int contourID, int segmentIndex) {
|
||||
if (done()) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < fTs.count(); ++i) {
|
||||
if (fTs[i].fDone) {
|
||||
continue;
|
||||
}
|
||||
SkDebugf("%s contour=%d segment=%d (%d)", __FUNCTION__, contourID,
|
||||
segmentIndex, fID);
|
||||
SkDebugf(" (%1.9g,%1.9g", fPts[0].fX, fPts[0].fY);
|
||||
for (int vIndex = 1; vIndex <= fVerb; ++vIndex) {
|
||||
SkDebugf(" %1.9g,%1.9g", fPts[vIndex].fX, fPts[vIndex].fY);
|
||||
}
|
||||
const Span* span = &fTs[i];
|
||||
SkDebugf(") fT=%d (%1.9g) (%1.9g,%1.9g)", i, fTs[i].fT,
|
||||
xAtT(span), yAtT(i));
|
||||
const Segment* other = fTs[i].fOther;
|
||||
SkDebugf(" other=%d otherT=%1.9g otherIndex=%d", other->fID,
|
||||
fTs[i].fOtherT, fTs[i].fOtherIndex);
|
||||
SkDebugf(" windSum=%d windValue=%d\n", fTs[i].fWindSum,
|
||||
fTs[i].fWindValue);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
private:
|
||||
const SkPoint* fPts;
|
||||
SkPath::Verb fVerb;
|
||||
@ -2071,6 +2105,14 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DEBUG_ACTIVE_SPANS
|
||||
void debugShowActiveSpans() {
|
||||
for (int index = 0; index < fSegments.count(); ++index) {
|
||||
fSegments[index].debugShowActiveSpans(fID, index);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void setBounds() {
|
||||
int count = fSegments.count();
|
||||
@ -2807,6 +2849,14 @@ static Segment* findChase(SkTDArray<Span*>& chase, int& tIndex, int& endIndex) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if DEBUG_ACTIVE_SPANS
|
||||
static void debugShowActiveSpans(SkTDArray<Contour*>& contourList) {
|
||||
for (int index = 0; index < contourList.count(); ++ index) {
|
||||
contourList[index]->debugShowActiveSpans();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Each segment may have an inside or an outside. Segments contained within
|
||||
// winding may have insides on either side, and form a contour that should be
|
||||
// ignored. Segments that are coincident with opposing direction segments may
|
||||
@ -2884,6 +2934,9 @@ static void bridge(SkTDArray<Contour*>& contourList, SkPath& simple) {
|
||||
simple.close();
|
||||
}
|
||||
current = findChase(chaseArray, index, endIndex);
|
||||
#if DEBUG_ACTIVE_SPANS
|
||||
debugShowActiveSpans(contourList);
|
||||
#endif
|
||||
if (!current) {
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user