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
This commit is contained in:
robertphillips@google.com 2013-09-26 12:05:32 +00:00
parent 441433e9c4
commit 6c000321f2
2 changed files with 29 additions and 0 deletions

View File

@ -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

View File

@ -133,6 +133,31 @@ protected:
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 {