OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 The Android Open Source Project | 3 * Copyright 2011 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "SkScan.h" | 10 #include "SkScan.h" |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 clipBounds.set(clip->getBounds()); | 618 clipBounds.set(clip->getBounds()); |
619 /* We perform integral clipping later on, but we do a scalar clip first | 619 /* We perform integral clipping later on, but we do a scalar clip first |
620 to ensure that our coordinates are expressible in fixed/integers. | 620 to ensure that our coordinates are expressible in fixed/integers. |
621 | 621 |
622 antialiased hairlines can draw up to 1/2 of a pixel outside of | 622 antialiased hairlines can draw up to 1/2 of a pixel outside of |
623 their bounds, so we need to outset the clip before calling the | 623 their bounds, so we need to outset the clip before calling the |
624 clipper. To make the numerics safer, we outset by a whole pixel, | 624 clipper. To make the numerics safer, we outset by a whole pixel, |
625 since the 1/2 pixel boundary is important to the antihair blitter, | 625 since the 1/2 pixel boundary is important to the antihair blitter, |
626 we don't want to risk numerical fate by chopping on that edge. | 626 we don't want to risk numerical fate by chopping on that edge. |
627 */ | 627 */ |
628 clipBounds.inset(-SK_Scalar1, -SK_Scalar1); | 628 clipBounds.outset(SK_Scalar1, SK_Scalar1); |
629 | 629 |
630 if (!SkLineClipper::IntersectLine(pts, clipBounds, pts)) { | 630 if (!SkLineClipper::IntersectLine(pts, clipBounds, pts)) { |
631 return; | 631 return; |
632 } | 632 } |
633 } | 633 } |
634 | 634 |
635 SkFDot6 x0 = SkScalarToFDot6(pts[0].fX); | 635 SkFDot6 x0 = SkScalarToFDot6(pts[0].fX); |
636 SkFDot6 y0 = SkScalarToFDot6(pts[0].fY); | 636 SkFDot6 y0 = SkScalarToFDot6(pts[0].fY); |
637 SkFDot6 x1 = SkScalarToFDot6(pts[1].fX); | 637 SkFDot6 x1 = SkScalarToFDot6(pts[1].fX); |
638 SkFDot6 y1 = SkScalarToFDot6(pts[1].fY); | 638 SkFDot6 y1 = SkScalarToFDot6(pts[1].fY); |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1065 | 1065 |
1066 void SkScan::AntiFrameRect(const SkRect& r, const SkPoint& strokeSize, | 1066 void SkScan::AntiFrameRect(const SkRect& r, const SkPoint& strokeSize, |
1067 const SkRasterClip& clip, SkBlitter* blitter) { | 1067 const SkRasterClip& clip, SkBlitter* blitter) { |
1068 if (clip.isBW()) { | 1068 if (clip.isBW()) { |
1069 AntiFrameRect(r, strokeSize, &clip.bwRgn(), blitter); | 1069 AntiFrameRect(r, strokeSize, &clip.bwRgn(), blitter); |
1070 } else { | 1070 } else { |
1071 SkAAClipBlitterWrapper wrap(clip, blitter); | 1071 SkAAClipBlitterWrapper wrap(clip, blitter); |
1072 AntiFrameRect(r, strokeSize, &wrap.getRgn(), wrap.getBlitter()); | 1072 AntiFrameRect(r, strokeSize, &wrap.getRgn(), wrap.getBlitter()); |
1073 } | 1073 } |
1074 } | 1074 } |
OLD | NEW |