OLD | NEW |
---|---|
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2009 The Android Open Source Project | 3 * Copyright 2009 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 "SkEdgeClipper.h" | 10 #include "SkEdgeClipper.h" |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
281 SkScalar t; | 281 SkScalar t; |
282 if (chopMonoCubicAtY(pts, clip.fTop, &t)) { | 282 if (chopMonoCubicAtY(pts, clip.fTop, &t)) { |
283 SkPoint tmp[7]; | 283 SkPoint tmp[7]; |
284 SkChopCubicAt(pts, tmp, t); | 284 SkChopCubicAt(pts, tmp, t); |
285 | 285 |
286 // tmp[3, 4].fY should all be to the below clip.fTop, and | 286 // tmp[3, 4].fY should all be to the below clip.fTop, and |
287 // still be monotonic in Y. Since we can't trust the numerics of | 287 // still be monotonic in Y. Since we can't trust the numerics of |
288 // the chopper, we force those conditions now | 288 // the chopper, we force those conditions now |
289 tmp[3].fY = clip.fTop; | 289 tmp[3].fY = clip.fTop; |
290 clamp_ge(tmp[4].fY, clip.fTop); | 290 clamp_ge(tmp[4].fY, clip.fTop); |
291 clamp_ge(tmp[5].fY, tmp[4].fY); | |
caryclark
2013/05/08 21:07:35
update the comment above?
reed1
2013/05/08 21:08:03
Done.
| |
291 | 292 |
292 pts[0] = tmp[3]; | 293 pts[0] = tmp[3]; |
293 pts[1] = tmp[4]; | 294 pts[1] = tmp[4]; |
294 pts[2] = tmp[5]; | 295 pts[2] = tmp[5]; |
295 } else { | 296 } else { |
296 // if chopMonoCubicAtY failed, then we may have hit inexact numerics | 297 // if chopMonoCubicAtY failed, then we may have hit inexact numerics |
297 // so we just clamp against the top | 298 // so we just clamp against the top |
298 for (int i = 0; i < 4; i++) { | 299 for (int i = 0; i < 4; i++) { |
299 clamp_ge(pts[i].fY, clip.fTop); | 300 clamp_ge(pts[i].fY, clip.fTop); |
300 } | 301 } |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
524 assert_monotonic(&pts[0].fY, count); | 525 assert_monotonic(&pts[0].fY, count); |
525 } | 526 } |
526 } | 527 } |
527 | 528 |
528 void sk_assert_monotonic_x(const SkPoint pts[], int count) { | 529 void sk_assert_monotonic_x(const SkPoint pts[], int count) { |
529 if (count > 1) { | 530 if (count > 1) { |
530 assert_monotonic(&pts[0].fX, count); | 531 assert_monotonic(&pts[0].fX, count); |
531 } | 532 } |
532 } | 533 } |
533 #endif | 534 #endif |
OLD | NEW |