shape ops work in progress

Complete rewrite of binary logic makes the result
work and much easier to understand.

git-svn-id: http://skia.googlecode.com/svn/trunk@6597 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/SimplifyRect4x4_Test.cpp b/experimental/Intersection/SimplifyRect4x4_Test.cpp
index cdd43dd..5d857e9 100644
--- a/experimental/Intersection/SimplifyRect4x4_Test.cpp
+++ b/experimental/Intersection/SimplifyRect4x4_Test.cpp
@@ -23,13 +23,13 @@
     bzero(pathStr, sizeof(pathStr));
     do {
         int aShape = state.a & 0x03;
-        int aCW = state.a >> 2;
+        SkPath::Direction aCW = state.a >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
         int bShape = state.b & 0x03;
-        int bCW = state.b >> 2;
+        SkPath::Direction bCW = state.b >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
         int cShape = state.c & 0x03;
-        int cCW = state.c >> 2;
+        SkPath::Direction cCW = state.c >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
         int dShape = state.d & 0x03;
-        int dCW = state.d >> 2;
+        SkPath::Direction dCW = state.d >> 2 ? SkPath::kCCW_Direction : SkPath::kCW_Direction;
         for (int aXAlign = 0 ; aXAlign < 5; ++aXAlign) {
         for (int aYAlign = 0 ; aYAlign < 5; ++aYAlign)      {
         for (int bXAlign = 0 ; bXAlign < 5; ++bXAlign)          {
@@ -63,9 +63,9 @@
                         aXAlign = 5;
                         break;
                 }
-                path.addRect(l, t, r, b, (SkPath::Direction) aCW);
+                path.addRect(l, t, r, b, aCW);
                 str += sprintf(str, "    path.addRect(%d, %d, %d, %d,"
-                        " (SkPath::Direction) %d);\n", l, t, r, b, aCW);
+                        " SkPath::kC%sWDirection);\n", l, t, r, b, aCW ? "C" : "");
             } else {
                 aXAlign = 5;
                 aYAlign = 5;
@@ -91,9 +91,9 @@
                         bXAlign = 5;
                         break;
                 }
-                path.addRect(l, t, r, b, (SkPath::Direction) bCW);
+                path.addRect(l, t, r, b, bCW);
                 str += sprintf(str, "    path.addRect(%d, %d, %d, %d,"
-                        " (SkPath::Direction) %d);\n", l, t, r, b, bCW);
+                        " SkPath::kC%sWDirection);\n", l, t, r, b, bCW ? "C" : "");
             } else {
                 bXAlign = 5;
                 bYAlign = 5;
@@ -119,9 +119,9 @@
                         cXAlign = 5;
                         break;
                 }
-                path.addRect(l, t, r, b, (SkPath::Direction) cCW);
+                path.addRect(l, t, r, b, cCW);
                 str += sprintf(str, "    path.addRect(%d, %d, %d, %d,"
-                        " (SkPath::Direction) %d);\n", l, t, r, b, cCW);
+                        " SkPath::kC%sWDirection);\n", l, t, r, b, cCW ? "C" : "");
             } else {
                 cXAlign = 5;
                 cYAlign = 5;
@@ -147,9 +147,9 @@
                         dXAlign = 5;
                         break;
                 }
-                path.addRect(l, t, r, b, (SkPath::Direction) dCW);
+                path.addRect(l, t, r, b, dCW);
                 str += sprintf(str, "    path.addRect(%d, %d, %d, %d,"
-                        " (SkPath::Direction) %d);\n", l, t, r, b, dCW);
+                        " SkPath::kC%sWDirection);\n", l, t, r, b, dCW ? "C" : "");
             } else {
                 dXAlign = 5;
                 dYAlign = 5;