Add new GM to test hairline subdivision.

As I'm changing the subdivision method, I want to have a baseline to
make sure I don't break anything.

Change-Id: I655c658589c7229ae37d7b8588ff70325afeaa61
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302907
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index 74d270f..f631d72 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -262,6 +262,39 @@
     }
 }
 
+// GM to test subdivision of hairlines
+static void draw_subdivided_quad(SkCanvas* canvas, int x0, int y0, int x1, int y1, SkColor color) {
+    SkPaint paint;
+    paint.setStrokeWidth(1);
+    paint.setAntiAlias(true);
+    paint.setStyle(SkPaint::kStroke_Style);
+    paint.setColor(color);
+
+    SkPath quad;
+    quad.moveTo(0, 0);
+    quad.quadTo(SkIntToScalar(x0), SkIntToScalar(y0),
+                SkIntToScalar(x1), SkIntToScalar(y1));
+    canvas->drawPath(quad, paint);
+}
+
+DEF_SIMPLE_GM(hairline_subdiv, canvas, 512, 256) {
+    // no subdivisions
+    canvas->translate(45, -25);
+    draw_subdivided_quad(canvas, 334, 334, 467, 267, SK_ColorBLACK);
+
+    // one subdivision
+    canvas->translate(-185, -150);
+    draw_subdivided_quad(canvas, 472, 472, 660, 378, SK_ColorRED);
+
+    // two subdivisions
+    canvas->translate(-275, -200);
+    draw_subdivided_quad(canvas, 668, 668, 934, 535, SK_ColorGREEN);
+
+    // three subdivisions
+    canvas->translate(-385, -260);
+    draw_subdivided_quad(canvas, 944, 944, 1320, 756, SK_ColorBLUE);
+}
+
 //////////////////////////////////////////////////////////////////////////////
 
 DEF_GM( return new HairlinesGM; )