Add GrQuadUtils namespace to hold ResolveAAType function

Change-Id: I6357af83b55be8efa8dfd709acde908296c05f82
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/216605
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/geometry/GrQuad.cpp b/src/gpu/geometry/GrQuad.cpp
index 6ed7232..78f4e3b 100644
--- a/src/gpu/geometry/GrQuad.cpp
+++ b/src/gpu/geometry/GrQuad.cpp
@@ -8,7 +8,6 @@
 #include "src/gpu/geometry/GrQuad.h"
 
 #include "include/core/SkMatrix.h"
-#include "include/private/GrTypesPriv.h"
 
 using V4f = skvx::Vec<4, float>;
 
@@ -100,41 +99,6 @@
     }
 }
 
-void GrResolveAATypeForQuad(GrAAType requestedAAType, GrQuadAAFlags requestedEdgeFlags,
-                            const GrQuad& quad, GrAAType* outAAType, GrQuadAAFlags* outEdgeFlags) {
-    // Most cases will keep the requested types unchanged
-    *outAAType = requestedAAType;
-    *outEdgeFlags = requestedEdgeFlags;
-
-    switch (requestedAAType) {
-        // When aa type is coverage, disable AA if the edge configuration doesn't actually need it
-        case GrAAType::kCoverage:
-            if (requestedEdgeFlags == GrQuadAAFlags::kNone) {
-                // Turn off anti-aliasing
-                *outAAType = GrAAType::kNone;
-            } else {
-                // For coverage AA, if the quad is a rect and it lines up with pixel boundaries
-                // then overall aa and per-edge aa can be completely disabled
-                if (quad.quadType() == GrQuad::Type::kAxisAligned && !quad.aaHasEffectOnRect()) {
-                    *outAAType = GrAAType::kNone;
-                    *outEdgeFlags = GrQuadAAFlags::kNone;
-                }
-            }
-            break;
-        // For no or msaa anti aliasing, override the edge flags since edge flags only make sense
-        // when coverage aa is being used.
-        case GrAAType::kNone:
-            *outEdgeFlags = GrQuadAAFlags::kNone;
-            break;
-        case GrAAType::kMSAA:
-            *outEdgeFlags = GrQuadAAFlags::kAll;
-            break;
-        case GrAAType::kMixedSamples:
-            SK_ABORT("Should not use mixed sample AA with edge AA flags");
-            break;
-    }
-};
-
 GrQuad GrQuad::MakeFromRect(const SkRect& rect, const SkMatrix& m) {
     V4f x, y, w;
     SkMatrix::TypeMask tm = m.getType();
diff --git a/src/gpu/geometry/GrQuad.h b/src/gpu/geometry/GrQuad.h
index 27d98cb..9f4f974 100644
--- a/src/gpu/geometry/GrQuad.h
+++ b/src/gpu/geometry/GrQuad.h
@@ -13,9 +13,6 @@
 #include "include/core/SkPoint3.h"
 #include "include/private/SkVx.h"
 
-enum class GrAAType : unsigned;
-enum class GrQuadAAFlags;
-
 /**
  * GrQuad is a collection of 4 points which can be used to represent an arbitrary quadrilateral. The
  * points make a triangle strip with CCW triangles (top-left, bottom-left, top-right, bottom-right).
@@ -131,9 +128,4 @@
     Type fType;
 };
 
-// Resolve disagreements between the overall requested AA type and the per-edge quad AA flags.
-// Both outAAType and outEdgeFlags will be updated.
-void GrResolveAATypeForQuad(GrAAType requestedAAType, GrQuadAAFlags requestedEdgeFlags,
-                            const GrQuad& quad, GrAAType* outAAtype, GrQuadAAFlags* outEdgeFlags);
-
 #endif
diff --git a/src/gpu/geometry/GrQuadUtils.cpp b/src/gpu/geometry/GrQuadUtils.cpp
new file mode 100644
index 0000000..ba109cf
--- /dev/null
+++ b/src/gpu/geometry/GrQuadUtils.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "src/gpu/geometry/GrQuadUtils.h"
+
+#include "include/private/GrTypesPriv.h"
+#include "src/gpu/geometry/GrQuad.h"
+
+namespace GrQuadUtils {
+
+void ResolveAAType(GrAAType requestedAAType, GrQuadAAFlags requestedEdgeFlags, const GrQuad& quad,
+                   GrAAType* outAAType, GrQuadAAFlags* outEdgeFlags) {
+    // Most cases will keep the requested types unchanged
+    *outAAType = requestedAAType;
+    *outEdgeFlags = requestedEdgeFlags;
+
+    switch (requestedAAType) {
+        // When aa type is coverage, disable AA if the edge configuration doesn't actually need it
+        case GrAAType::kCoverage:
+            if (requestedEdgeFlags == GrQuadAAFlags::kNone) {
+                // Turn off anti-aliasing
+                *outAAType = GrAAType::kNone;
+            } else {
+                // For coverage AA, if the quad is a rect and it lines up with pixel boundaries
+                // then overall aa and per-edge aa can be completely disabled
+                if (quad.quadType() == GrQuad::Type::kAxisAligned && !quad.aaHasEffectOnRect()) {
+                    *outAAType = GrAAType::kNone;
+                    *outEdgeFlags = GrQuadAAFlags::kNone;
+                }
+            }
+            break;
+        // For no or msaa anti aliasing, override the edge flags since edge flags only make sense
+        // when coverage aa is being used.
+        case GrAAType::kNone:
+            *outEdgeFlags = GrQuadAAFlags::kNone;
+            break;
+        case GrAAType::kMSAA:
+            *outEdgeFlags = GrQuadAAFlags::kAll;
+            break;
+        case GrAAType::kMixedSamples:
+            SK_ABORT("Should not use mixed sample AA with edge AA flags");
+            break;
+    }
+};
+
+}; // namespace GrQuadUtils
diff --git a/src/gpu/geometry/GrQuadUtils.h b/src/gpu/geometry/GrQuadUtils.h
new file mode 100644
index 0000000..29feeeb
--- /dev/null
+++ b/src/gpu/geometry/GrQuadUtils.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2019 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrQuadUtils_DEFINED
+#define GrQuadUtils_DEFINED
+
+enum class GrQuadAAFlags;
+enum class GrAAType : unsigned;
+class GrQuad;
+
+namespace GrQuadUtils {
+
+    // Resolve disagreements between the overall requested AA type and the per-edge quad AA flags.
+    // Both outAAType and outEdgeFlags will be updated.
+    void ResolveAAType(GrAAType requestedAAType, GrQuadAAFlags requestedEdgeFlags,
+                       const GrQuad& quad, GrAAType* outAAtype, GrQuadAAFlags* outEdgeFlags);
+
+}; // namespace GrQuadUtils
+
+#endif