Add GM case for arc truncation error bug

https://codereview.chromium.org/23532082/



git-svn-id: http://skia.googlecode.com/svn/trunk@11466 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/expectations/gm/ignored-tests.txt b/expectations/gm/ignored-tests.txt
index 0cc2bba..a41e7bd 100644
--- a/expectations/gm/ignored-tests.txt
+++ b/expectations/gm/ignored-tests.txt
@@ -21,3 +21,7 @@
 ## Added by edisonn as part of https://codereview.chromium.org/23851037/
 #gradients
 
+# Added by robertphillips as part of https://codereview.chromium.org/23532082/
+hairlines
+
+
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index d4d142f..fb7258e 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -133,6 +133,31 @@
             bug2->lineTo(5.5f, 0.5f);
             bug2->lineTo(0.5f, 0.5f);
         }
+
+        {
+            // Arc example to test imperfect truncation bug (crbug.com/295626) 
+            static const SkScalar kRad = SkIntToScalar(2000);
+            static const SkScalar kStartAngle = SkFloatToScalar(262.59717f);
+            static const SkScalar kSweepAngle = SkScalarHalf(SkFloatToScalar(17.188717f));
+
+            SkPath* bug = &fPaths.push_back();
+
+            // Add a circular arc
+            SkRect circle = SkRect::MakeLTRB(-kRad, -kRad, kRad, kRad);
+            bug->addArc(circle, kStartAngle, kSweepAngle);
+
+            // Now add the chord that should cap the circular arc
+            SkScalar cosV, sinV = SkScalarSinCos(SkDegreesToRadians(kStartAngle), &cosV);
+
+            SkPoint p0 = SkPoint::Make(kRad * cosV, kRad * sinV);
+
+            sinV = SkScalarSinCos(SkDegreesToRadians(kStartAngle + kSweepAngle), &cosV);
+
+            SkPoint p1 = SkPoint::Make(kRad * cosV, kRad * sinV);
+
+            bug->moveTo(p0);
+            bug->lineTo(p1);
+        }
     }
 
     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {