Index: gm/hairlines.cpp |
=================================================================== |
--- gm/hairlines.cpp (revision 11440) |
+++ gm/hairlines.cpp (working copy) |
@@ -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 { |