diff options
author | 2009-11-30 12:48:33 +0000 | |
---|---|---|
committer | 2009-11-30 12:48:33 +0000 | |
commit | a3d901099d7d295cd7d9df4114e874d9ccfff447 (patch) | |
tree | a893d4f767bb7d9ae9ea4b610aaf167267fb202f /src/core/SkScan_Antihair.cpp | |
parent | 7767cd87fdadeed868457a2407e8b0a50006fc4a (diff) |
add unittest for IntersectLine, used by hairlines
git-svn-id: http://skia.googlecode.com/svn/trunk@447 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkScan_Antihair.cpp')
-rw-r--r-- | src/core/SkScan_Antihair.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/core/SkScan_Antihair.cpp b/src/core/SkScan_Antihair.cpp index 13cdc09e79..0003298b38 100644 --- a/src/core/SkScan_Antihair.cpp +++ b/src/core/SkScan_Antihair.cpp @@ -429,6 +429,17 @@ void SkScan::AntiHairLine(const SkPoint& pt0, const SkPoint& pt1, if (clip) { SkRect clipBounds; clipBounds.set(clip->getBounds()); + /* We perform integral clipping later on, but we do a scalar clip first + to ensure that our coordinates are expressible in fixed/integers. + + antialiased hairlines can draw up to 1/2 of a pixel outside of + their bounds, so we need to outset the clip before calling the + clipper. To make the numerics safer, we outset by a whole pixel, + since the 1/2 pixel boundary is important to the antihair blitter, + we don't want to risk numerical fate by chopping on that edge. + */ + clipBounds.inset(-SK_Scalar1, -SK_Scalar1); + if (!SkLineClipper::IntersectLine(pts, clipBounds, pts)) { return; } |