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 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 SkScan::FillRect(tmp, clip, blitter); | 370 SkScan::FillRect(tmp, clip, blitter); |
371 } | 371 } |
372 | 372 |
373 void SkScan::HairLine(const SkPoint& p0, const SkPoint& p1, | 373 void SkScan::HairLine(const SkPoint& p0, const SkPoint& p1, |
374 const SkRasterClip& clip, SkBlitter* blitter) { | 374 const SkRasterClip& clip, SkBlitter* blitter) { |
375 if (clip.isBW()) { | 375 if (clip.isBW()) { |
376 HairLineRgn(p0, p1, &clip.bwRgn(), blitter); | 376 HairLineRgn(p0, p1, &clip.bwRgn(), blitter); |
377 } else { | 377 } else { |
378 const SkRegion* clipRgn = NULL; | 378 const SkRegion* clipRgn = NULL; |
379 SkRect r; | 379 SkRect r; |
380 SkIRect ir; | |
381 r.set(p0.fX, p0.fY, p1.fX, p1.fY); | 380 r.set(p0.fX, p0.fY, p1.fX, p1.fY); |
382 r.sort(); | 381 r.sort(); |
383 r.inset(-SK_ScalarHalf, -SK_ScalarHalf); | 382 r.inset(-SK_ScalarHalf, -SK_ScalarHalf); |
384 r.roundOut(&ir); | |
385 | 383 |
386 SkAAClipBlitterWrapper wrap; | 384 SkAAClipBlitterWrapper wrap; |
387 if (!clip.quickContains(ir)) { | 385 if (!clip.quickContains(r.roundOut())) { |
388 wrap.init(clip, blitter); | 386 wrap.init(clip, blitter); |
389 blitter = wrap.getBlitter(); | 387 blitter = wrap.getBlitter(); |
390 clipRgn = &wrap.getRgn(); | 388 clipRgn = &wrap.getRgn(); |
391 } | 389 } |
392 HairLineRgn(p0, p1, clipRgn, blitter); | 390 HairLineRgn(p0, p1, clipRgn, blitter); |
393 } | 391 } |
394 } | 392 } |
395 | 393 |
396 void SkScan::AntiHairLine(const SkPoint& p0, const SkPoint& p1, | 394 void SkScan::AntiHairLine(const SkPoint& p0, const SkPoint& p1, |
397 const SkRasterClip& clip, SkBlitter* blitter) { | 395 const SkRasterClip& clip, SkBlitter* blitter) { |
(...skipping 10 matching lines...) Expand all Loading... |
408 | 406 |
409 SkAAClipBlitterWrapper wrap; | 407 SkAAClipBlitterWrapper wrap; |
410 if (!clip.quickContains(ir)) { | 408 if (!clip.quickContains(ir)) { |
411 wrap.init(clip, blitter); | 409 wrap.init(clip, blitter); |
412 blitter = wrap.getBlitter(); | 410 blitter = wrap.getBlitter(); |
413 clipRgn = &wrap.getRgn(); | 411 clipRgn = &wrap.getRgn(); |
414 } | 412 } |
415 AntiHairLineRgn(p0, p1, clipRgn, blitter); | 413 AntiHairLineRgn(p0, p1, clipRgn, blitter); |
416 } | 414 } |
417 } | 415 } |
OLD | NEW |