Minor refactoring to remove duplicate enum from Ganesh (_SetOp -> SkRegion::Op)

http://codereview.appspot.com/6116047/



git-svn-id: http://skia.googlecode.com/svn/trunk@3763 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrClip.cpp b/src/gpu/GrClip.cpp
index 87d58c4..a5120d4 100644
--- a/src/gpu/GrClip.cpp
+++ b/src/gpu/GrClip.cpp
@@ -59,7 +59,7 @@
         fList.push_back();
         fList.back().fRect = r;
         fList.back().fType = kRect_ClipType;
-        fList.back().fOp = kReplace_SetOp;
+        fList.back().fOp = SkRegion::kReplace_Op;
         fList.back().fDoAA = false;
         fConservativeBounds = r;
         fConservativeBoundsValid = true;
@@ -75,7 +75,7 @@
         fList.push_back();
         fList.back().fRect.set(r);
         fList.back().fType = kRect_ClipType;
-        fList.back().fOp = kReplace_SetOp;
+        fList.back().fOp = SkRegion::kReplace_Op;
         fList.back().fDoAA = false;
         fConservativeBounds.set(r);
         fConservativeBoundsValid = true;
@@ -108,7 +108,7 @@
                 fRequiresAA = true;
             }
             // iterators should not emit replace
-            GrAssert(kReplace_SetOp != e.fOp);
+            GrAssert(SkRegion::kReplace_Op != e.fOp);
             switch (e.fType) {
                 case kRect_ClipType:
                     iter->getRect(&e.fRect);
@@ -117,7 +117,7 @@
                     }
                     ++rectCount;
                     if (isectRectValid) {
-                        if (kIntersect_SetOp == e.fOp) {
+                        if (SkRegion::kIntersect_Op == e.fOp) {
                             GrAssert(fList.count() <= 2);
                             if (fList.count() > 1) {
                                 GrAssert(2 == rectCount);
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp
index cdcc741..a6c1705 100644
--- a/src/gpu/GrClipMaskManager.cpp
+++ b/src/gpu/GrClipMaskManager.cpp
@@ -91,7 +91,7 @@
 int process_initial_clip_elements(const GrClip& clip,
                                   const GrRect& bounds,
                                   bool* clearToInside,
-                                  GrSetOp* startOp) {
+                                  SkRegion::Op* startOp) {
 
     // logically before the first element of the clip stack is 
     // processed the clip is entirely open. However, depending on the
@@ -105,13 +105,13 @@
 
     for (curr = 0; curr < count && !done; ++curr) {
         switch (clip.getOp(curr)) {
-            case kReplace_SetOp:
+            case SkRegion::kReplace_Op:
                 // replace ignores everything previous
-                *startOp = kReplace_SetOp;
+                *startOp = SkRegion::kReplace_Op;
                 *clearToInside = false;
                 done = true;
                 break;
-            case kIntersect_SetOp:
+            case SkRegion::kIntersect_Op:
                 // if this element contains the entire bounds then we
                 // can skip it.
                 if (kRect_ClipType == clip.getElementType(curr)
@@ -122,47 +122,47 @@
                 // same as clear to 0 and treat as a replace. Otherwise,
                 // set stays empty.
                 if (*clearToInside) {
-                    *startOp = kReplace_SetOp;
+                    *startOp = SkRegion::kReplace_Op;
                     *clearToInside = false;
                     done = true;
                 }
                 break;
                 // we can skip a leading union.
-            case kUnion_SetOp:
+            case SkRegion::kUnion_Op:
                 // if everything is initially outside then union is
                 // same as replace. Otherwise, every pixel is still 
                 // clearToInside
                 if (!*clearToInside) {
-                    *startOp = kReplace_SetOp;
+                    *startOp = SkRegion::kReplace_Op;
                     done = true;
                 }
                 break;
-            case kXor_SetOp:
+            case SkRegion::kXOR_Op:
                 // xor is same as difference or replace both of which
                 // can be 1-pass instead of 2 for xor.
                 if (*clearToInside) {
-                    *startOp = kDifference_SetOp;
+                    *startOp = SkRegion::kDifference_Op;
                 } else {
-                    *startOp = kReplace_SetOp;
+                    *startOp = SkRegion::kReplace_Op;
                 }
                 done = true;
                 break;
-            case kDifference_SetOp:
+            case SkRegion::kDifference_Op:
                 // if all pixels are clearToInside then we have to process the
                 // difference, otherwise it has no effect and all pixels
                 // remain outside.
                 if (*clearToInside) {
-                    *startOp = kDifference_SetOp;
+                    *startOp = SkRegion::kDifference_Op;
                     done = true;
                 }
                 break;
-            case kReverseDifference_SetOp:
+            case SkRegion::kReverseDifference_Op:
                 // if all pixels are clearToInside then reverse difference
                 // produces empty set. Otherise it is same as replace
                 if (*clearToInside) {
                     *clearToInside = false;
                 } else {
-                    *startOp = kReplace_SetOp;
+                    *startOp = SkRegion::kReplace_Op;
                     done = true;
                 }
                 break;
@@ -226,7 +226,7 @@
                        GrIntToScalar(rt->width()), GrIntToScalar(rt->height()));
 
         bool clearToInside;
-        GrSetOp startOp = kReplace_SetOp; // suppress warning
+        SkRegion::Op startOp = SkRegion::kReplace_Op; // suppress warning
         int start = process_initial_clip_elements(clipCopy,
                                                     rtRect,
                                                     &clearToInside,
@@ -256,7 +256,7 @@
                 fillInverted = false;
                 // there is no point in intersecting a screen filling
                 // rectangle.
-                if (kIntersect_SetOp == clipCopy.getOp(c) &&
+                if (SkRegion::kIntersect_Op == clipCopy.getOp(c) &&
                     clipCopy.getRect(c).contains(rtRect)) {
                     continue;
                 }
@@ -275,7 +275,7 @@
                     !pr->requiresStencilPass(*clipPath, fill, gpu);
             }
 
-            GrSetOp op = (c == start) ? startOp : clipCopy.getOp(c);
+            SkRegion::Op op = (c == start) ? startOp : clipCopy.getOp(c);
             int passes;
             GrStencilSettings stencilSettings[GrStencilSettings::kMaxStencilClipPasses];
 
diff --git a/src/gpu/GrStencil.cpp b/src/gpu/GrStencil.cpp
index 6624942..ab0e78c 100644
--- a/src/gpu/GrStencil.cpp
+++ b/src/gpu/GrStencil.cpp
@@ -220,7 +220,7 @@
     0x0000            // set clip bit
 );
 
-bool GrStencilSettings::GetClipPasses(GrSetOp op, 
+bool GrStencilSettings::GetClipPasses(SkRegion::Op op, 
                                       bool canBeDirect,
                                       unsigned int stencilClipMask,
                                       bool invertedFill,
@@ -229,19 +229,19 @@
     if (canBeDirect && !invertedFill) {
         *numPasses = 0;
         switch (op) {
-            case kReplace_SetOp:
+            case SkRegion::kReplace_Op:
                 *numPasses = 1;
                 settings[0] = gReplaceClip;
                 break;
-            case kUnion_SetOp:
+            case SkRegion::kUnion_Op:
                 *numPasses = 1;
                 settings[0] = gUnionClip;
                 break;
-            case kXor_SetOp:
+            case SkRegion::kXOR_Op:
                 *numPasses = 1;
                 settings[0] = gXorClip;
                 break;
-            case kDifference_SetOp:
+            case SkRegion::kDifference_Op:
                 *numPasses = 1;
                 settings[0] = gDiffClip;
                 break;
@@ -260,7 +260,7 @@
         // if we make the path renderer go to stencil we always give it a
         // non-inverted fill and we use the stencil rules on the client->clipbit
         // pass to select either the zeros or nonzeros.
-        case kReplace_SetOp:
+        case SkRegion::kReplace_Op:
             *numPasses= 1;
             settings[0] = invertedFill ? gInvUserToClipReplace : gUserToClipReplace;
             settings[0].fFrontFuncMask &= ~stencilClipMask;
@@ -268,13 +268,13 @@
             settings[0].fBackFuncMask = settings[0].fFrontFuncMask;
             settings[0].fBackFuncRef = settings[0].fFrontFuncRef;
             break;
-        case kIntersect_SetOp:
+        case SkRegion::kIntersect_Op:
             *numPasses = 1;
             settings[0] = invertedFill ? gInvUserToClipIsect : gUserToClipIsect;
             settings[0].fFrontFuncRef = stencilClipMask;
             settings[0].fBackFuncRef = settings[0].fFrontFuncRef;
             break;
-        case kUnion_SetOp:
+        case SkRegion::kUnion_Op:
             *numPasses = 2;
             if (invertedFill) {
                 settings[0] = gInvUserToClipUnionPass0;
@@ -301,7 +301,7 @@
                 settings[1].fBackFuncRef = settings[1].fFrontFuncRef;
             }
             break;
-        case kXor_SetOp:
+        case SkRegion::kXOR_Op:
             *numPasses = 2;
             if (invertedFill) {
                 settings[0] = gInvUserToClipXorPass0;
@@ -321,13 +321,13 @@
                 settings[1].fBackFuncRef = settings[1].fFrontFuncRef;
             }
             break;
-        case kDifference_SetOp:
+        case SkRegion::kDifference_Op:
             *numPasses = 1;
             settings[0] = invertedFill ? gInvUserToClipDiff : gUserToClipDiff;
             settings[0].fFrontFuncRef |= stencilClipMask;
             settings[0].fBackFuncRef = settings[0].fFrontFuncRef;
             break;
-        case kReverseDifference_SetOp:
+        case SkRegion::kReverseDifference_Op:
             if (invertedFill) {
                 *numPasses = 1;
                 settings[0] = gInvUserToClipRDiff;
diff --git a/src/gpu/GrStencil.h b/src/gpu/GrStencil.h
index 39700fe..bba5aa6 100644
--- a/src/gpu/GrStencil.h
+++ b/src/gpu/GrStencil.h
@@ -11,6 +11,8 @@
 #define GrStencil_DEFINED
 
 #include "GrTypes.h"
+#include "SkRegion.h"
+
 /**
  * Gr uses the stencil buffer to implement complex clipping inside the
  * GrDrawTarget class. The GrDrawTarget makes a subset of the stencil buffer
@@ -319,7 +321,7 @@
      *         stencil clip bit. Will only be true if canBeDirect is true.
      *         numPasses will be 1 if return value is true.
      */
-    static bool GetClipPasses(GrSetOp op, 
+    static bool GetClipPasses(SkRegion::Op op, 
                               bool canBeDirect,
                               unsigned int stencilClipMask,
                               bool invertedFill,
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index c832b20..12967e2 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -159,26 +159,17 @@
     }
 }
 
-GrSetOp SkGrClipIterator::getOp() const {
+SkRegion::Op SkGrClipIterator::getOp() const {
     // we skipped to the last "replace" op
     // when this iter was reset.
     // GrClip doesn't allow replace, so treat it as
     // intersect.
-    GrSetOp skToGrOps[] = {
-        kDifference_SetOp,         // kDifference_Op
-        kIntersect_SetOp,          // kIntersect_Op
-        kUnion_SetOp,              // kUnion_Op
-        kXor_SetOp,                // kXOR_Op
-        kReverseDifference_SetOp,  // kReverseDifference_Op
-        kIntersect_SetOp           // kReplace_op
-    };
-    GR_STATIC_ASSERT(0 == SkRegion::kDifference_Op);
-    GR_STATIC_ASSERT(1 == SkRegion::kIntersect_Op);
-    GR_STATIC_ASSERT(2 == SkRegion::kUnion_Op);
-    GR_STATIC_ASSERT(3 == SkRegion::kXOR_Op);
-    GR_STATIC_ASSERT(4 == SkRegion::kReverseDifference_Op);
-    GR_STATIC_ASSERT(5 == SkRegion::kReplace_Op);
-    return skToGrOps[fCurr->fOp];
+    if (SkRegion::kReplace_Op == fCurr->fOp) {
+        return SkRegion::kIntersect_Op;
+    }
+
+    return fCurr->fOp;
+
 }
 
 bool SkGrClipIterator::getDoAA() const {