shape ops work in progress

git-svn-id: http://skia.googlecode.com/svn/trunk@6470 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/ShapeOps.cpp b/experimental/Intersection/ShapeOps.cpp
index fa29ab7..17a19e8 100644
--- a/experimental/Intersection/ShapeOps.cpp
+++ b/experimental/Intersection/ShapeOps.cpp
@@ -171,10 +171,12 @@
             contourWinding = oppContourWinding = 0;
             firstContour = false;
         } else {
-            int sumWinding = current->windSum(SkMin32(index, endIndex));
+            int minIndex = SkMin32(index, endIndex);
+            int sumWinding = current->windSum(minIndex);
+            int oppSumWinding = current->oppSum(minIndex);
             // FIXME: don't I have to adjust windSum to get contourWinding?
             if (sumWinding == SK_MinS32) {
-                sumWinding = current->computeSum(index, endIndex);
+                sumWinding = current->computeSum(index, endIndex, &oppSumWinding);
             }
             if (sumWinding == SK_MinS32) {
                 contourWinding = innerContourCheck(contourList, current,
@@ -182,21 +184,12 @@
                 oppContourWinding = innerContourCheck(contourList, current,
                         index, endIndex, true);
             } else {
-                contourWinding = sumWinding;
-                oppContourWinding = 0;
-                SkASSERT(0);
-                // FIXME: need to get oppContourWinding by building sort wheel and
-                // retrieving sumWinding of uphill opposite span, calling inner contour check
-                // if need be
-                int spanWinding = current->spanSign(index, endIndex);
-                bool inner = useInnerWinding(sumWinding - spanWinding, sumWinding);
-                if (inner) {
-                    contourWinding -= spanWinding;
-                }
+                int spanWinding, oppWinding;
+                contourWinding = updateWindings(current, index, endIndex, spanWinding, oppWinding,
+                        oppContourWinding);
 #if DEBUG_WINDING
-                SkDebugf("%s sumWinding=%d spanWinding=%d sign=%d inner=%d result=%d\n", __FUNCTION__,
-                        sumWinding, spanWinding, SkSign32(index - endIndex),
-                        inner, contourWinding);
+                SkDebugf("%s contourWinding=%d oppContourWinding=%d spanWinding=%d oppWinding=%d\n",
+                        __FUNCTION__, contourWinding, oppContourWinding, spanWinding, oppWinding);
 #endif
             }
 #if DEBUG_WINDING