shape ops work in progress

git-svn-id: http://skia.googlecode.com/svn/trunk@7758 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/Intersections.cpp b/experimental/Intersection/Intersections.cpp
index 26fcc3f..3de45cb 100644
--- a/experimental/Intersection/Intersections.cpp
+++ b/experimental/Intersection/Intersections.cpp
@@ -122,16 +122,22 @@
                 || startPt.approximatelyEqual(fPt[index])
                 || endPt.approximatelyEqual(fPt[index]))) {
             SkASSERT(fUsed > 0);
-            int remaining = --fUsed - index;
-            if (remaining > 0) {
-                memmove(&fPt[index], &fPt[index - 1], sizeof(fPt[0]) * remaining);
-                memmove(&fT[0][index], &fT[0][index - 1], sizeof(fT[0][0]) * remaining);
-                memmove(&fT[1][index], &fT[1][index - 1], sizeof(fT[1][0]) * remaining);
-                int coBit = fIsCoincident[0] & (1 << index);
-                fIsCoincident[0] -= ((fIsCoincident[0] >> 1) & ~((1 << index) - 1)) + coBit;
-                SkASSERT(!(coBit ^ (fIsCoincident[1] & (1 << index))));
-                fIsCoincident[1] -= ((fIsCoincident[1] >> 1) & ~((1 << index) - 1)) + coBit;
-            }
+            removeOne(index);
         }
     }
 }
+
+void Intersections::removeOne(int index) {
+    int remaining = --fUsed - index;
+    if (remaining <= 0) {
+        return;
+    }
+    memmove(&fPt[index], &fPt[index + 1], sizeof(fPt[0]) * remaining);
+    memmove(&fT[0][index], &fT[0][index + 1], sizeof(fT[0][0]) * remaining);
+    memmove(&fT[1][index], &fT[1][index + 1], sizeof(fT[1][0]) * remaining);
+    SkASSERT(fIsCoincident[0] == 0);
+    int coBit = fIsCoincident[0] & (1 << index);
+    fIsCoincident[0] -= ((fIsCoincident[0] >> 1) & ~((1 << index) - 1)) + coBit;
+    SkASSERT(!(coBit ^ (fIsCoincident[1] & (1 << index))));
+    fIsCoincident[1] -= ((fIsCoincident[1] >> 1) & ~((1 << index) - 1)) + coBit;
+}