Pull the triangulating path renderer's shape-space triangulation into a helper method

This functionality will also be needed in TriangulatingPathOp::onPrePrepareDraws

Bug: 1108408
Change-Id: I0bf3f3c14820b946f4c4bc738c55e7a5eb2e7ced
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/328556
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/ops/GrTriangulatingPathRenderer.cpp b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
index fcb0ce1..b158a19 100644
--- a/src/gpu/ops/GrTriangulatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
@@ -262,6 +262,30 @@
         builder.finish();
     }
 
+    // Triangulate the provided 'shape' in the shape's coordinate space. 'tol' should already
+    // have been mapped back from device space.
+    static int Triangulate(GrEagerVertexAllocator* allocator,
+                           const SkMatrix& viewMatrix,
+                           const GrStyledShape& shape,
+                           const SkIRect& devClipBounds,
+                           SkScalar tol,
+                           int* numCountedCurves) {
+        SkRect clipBounds = SkRect::Make(devClipBounds);
+
+        SkMatrix vmi;
+        if (!viewMatrix.invert(&vmi)) {
+            return 0;
+        }
+        vmi.mapRect(&clipBounds);
+
+        SkASSERT(!shape.style().applies());
+        SkPath path;
+        shape.asPath(&path);
+
+        return GrTriangulator::PathToTriangles(path, tol, clipBounds, allocator,
+                                               GrTriangulator::Mode::kNormal, numCountedCurves);
+    }
+
     void createNonAAMesh(Target* target) {
         SkASSERT(!fAntiAlias);
         GrResourceProvider* rp = target->resourceProvider();
@@ -283,22 +307,16 @@
             }
         }
 
-        SkRect clipBounds = SkRect::Make(fDevClipBounds);
-
-        SkMatrix vmi;
-        if (!fViewMatrix.invert(&vmi)) {
-            return;
-        }
-        vmi.mapRect(&clipBounds);
-        int numCountedCurves;
         bool canMapVB = GrCaps::kNone_MapFlags != target->caps().mapBufferFlags();
         StaticVertexAllocator allocator(rp, canMapVB);
-        int vertexCount = GrTriangulator::PathToTriangles(this->getPath(), tol, clipBounds,
-                                                          &allocator, GrTriangulator::Mode::kNormal,
-                                                          &numCountedCurves);
+
+        int numCountedCurves;
+        int vertexCount = Triangulate(&allocator, fViewMatrix, fShape, fDevClipBounds, tol,
+                                      &numCountedCurves);
         if (vertexCount == 0) {
             return;
         }
+
         sk_sp<GrGpuBuffer> vb = allocator.detachVertexBuffer();
 
         key.setCustomData(create_data(vertexCount, numCountedCurves, tol));