OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 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 29 matching lines...) Expand all Loading... |
40 } | 40 } |
41 #endif | 41 #endif |
42 | 42 |
43 void SkScan::HairLineRgn(const SkPoint& pt0, const SkPoint& pt1, | 43 void SkScan::HairLineRgn(const SkPoint& pt0, const SkPoint& pt1, |
44 const SkRegion* clip, SkBlitter* blitter) { | 44 const SkRegion* clip, SkBlitter* blitter) { |
45 SkBlitterClipper clipper; | 45 SkBlitterClipper clipper; |
46 SkRect r; | 46 SkRect r; |
47 SkIRect clipR, ptsR; | 47 SkIRect clipR, ptsR; |
48 SkPoint pts[2] = { pt0, pt1 }; | 48 SkPoint pts[2] = { pt0, pt1 }; |
49 | 49 |
50 #ifdef SK_SCALAR_IS_FLOAT | |
51 // We have to pre-clip the line to fit in a SkFixed, so we just chop | 50 // We have to pre-clip the line to fit in a SkFixed, so we just chop |
52 // the line. TODO find a way to actually draw beyond that range. | 51 // the line. TODO find a way to actually draw beyond that range. |
53 { | 52 { |
54 SkRect fixedBounds; | 53 SkRect fixedBounds; |
55 const SkScalar max = SkIntToScalar(32767); | 54 const SkScalar max = SkIntToScalar(32767); |
56 fixedBounds.set(-max, -max, max, max); | 55 fixedBounds.set(-max, -max, max, max); |
57 if (!SkLineClipper::IntersectLine(pts, fixedBounds, pts)) { | 56 if (!SkLineClipper::IntersectLine(pts, fixedBounds, pts)) { |
58 return; | 57 return; |
59 } | 58 } |
60 } | 59 } |
61 #endif | |
62 | 60 |
63 if (clip) { | 61 if (clip) { |
64 // Perform a clip in scalar space, so we catch huge values which might | 62 // Perform a clip in scalar space, so we catch huge values which might |
65 // be missed after we convert to SkFDot6 (overflow) | 63 // be missed after we convert to SkFDot6 (overflow) |
66 r.set(clip->getBounds()); | 64 r.set(clip->getBounds()); |
67 if (!SkLineClipper::IntersectLine(pts, r, pts)) { | 65 if (!SkLineClipper::IntersectLine(pts, r, pts)) { |
68 return; | 66 return; |
69 } | 67 } |
70 } | 68 } |
71 | 69 |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 | 408 |
411 SkAAClipBlitterWrapper wrap; | 409 SkAAClipBlitterWrapper wrap; |
412 if (!clip.quickContains(ir)) { | 410 if (!clip.quickContains(ir)) { |
413 wrap.init(clip, blitter); | 411 wrap.init(clip, blitter); |
414 blitter = wrap.getBlitter(); | 412 blitter = wrap.getBlitter(); |
415 clipRgn = &wrap.getRgn(); | 413 clipRgn = &wrap.getRgn(); |
416 } | 414 } |
417 AntiHairLineRgn(p0, p1, clipRgn, blitter); | 415 AntiHairLineRgn(p0, p1, clipRgn, blitter); |
418 } | 416 } |
419 } | 417 } |
OLD | NEW |