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 "SkBuffer.h" | 10 #include "SkBuffer.h" |
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 if (!this->cheapComputeDirection(&direction)) { | 294 if (!this->cheapComputeDirection(&direction)) { |
295 return false; | 295 return false; |
296 } | 296 } |
297 | 297 |
298 SkPoint firstPt; | 298 SkPoint firstPt; |
299 SkPoint prevPt; | 299 SkPoint prevPt; |
300 RawIter iter(*this); | 300 RawIter iter(*this); |
301 SkPath::Verb verb; | 301 SkPath::Verb verb; |
302 SkPoint pts[4]; | 302 SkPoint pts[4]; |
303 SkDEBUGCODE(int moveCnt = 0;) | 303 SkDEBUGCODE(int moveCnt = 0;) |
| 304 SkDEBUGCODE(int segmentCount = 0;) |
| 305 SkDEBUGCODE(int closeCount = 0;) |
304 | 306 |
305 while ((verb = iter.next(pts)) != kDone_Verb) { | 307 while ((verb = iter.next(pts)) != kDone_Verb) { |
306 int nextPt = -1; | 308 int nextPt = -1; |
307 switch (verb) { | 309 switch (verb) { |
308 case kMove_Verb: | 310 case kMove_Verb: |
309 SkASSERT(!moveCnt); | 311 SkASSERT(!segmentCount && !closeCount); |
310 SkDEBUGCODE(++moveCnt); | 312 SkDEBUGCODE(++moveCnt); |
311 firstPt = prevPt = pts[0]; | 313 firstPt = prevPt = pts[0]; |
312 break; | 314 break; |
313 case kLine_Verb: | 315 case kLine_Verb: |
314 nextPt = 1; | 316 nextPt = 1; |
315 SkASSERT(moveCnt); | 317 SkASSERT(moveCnt && !closeCount); |
| 318 SkDEBUGCODE(++segmentCount); |
316 break; | 319 break; |
317 case kQuad_Verb: | 320 case kQuad_Verb: |
318 case kConic_Verb: | 321 case kConic_Verb: |
319 SkASSERT(moveCnt); | 322 SkASSERT(moveCnt && !closeCount); |
| 323 SkDEBUGCODE(++segmentCount); |
320 nextPt = 2; | 324 nextPt = 2; |
321 break; | 325 break; |
322 case kCubic_Verb: | 326 case kCubic_Verb: |
323 SkASSERT(moveCnt); | 327 SkASSERT(moveCnt && !closeCount); |
| 328 SkDEBUGCODE(++segmentCount); |
324 nextPt = 3; | 329 nextPt = 3; |
325 break; | 330 break; |
326 case kClose_Verb: | 331 case kClose_Verb: |
| 332 SkDEBUGCODE(++closeCount;) |
327 break; | 333 break; |
328 default: | 334 default: |
329 SkDEBUGFAIL("unknown verb"); | 335 SkDEBUGFAIL("unknown verb"); |
330 } | 336 } |
331 if (-1 != nextPt) { | 337 if (-1 != nextPt) { |
332 if (!check_edge_against_rect(prevPt, pts[nextPt], rect, direction))
{ | 338 if (!check_edge_against_rect(prevPt, pts[nextPt], rect, direction))
{ |
333 return false; | 339 return false; |
334 } | 340 } |
335 prevPt = pts[nextPt]; | 341 prevPt = pts[nextPt]; |
336 } | 342 } |
(...skipping 2652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2989 switch (this->getFillType()) { | 2995 switch (this->getFillType()) { |
2990 case SkPath::kEvenOdd_FillType: | 2996 case SkPath::kEvenOdd_FillType: |
2991 case SkPath::kInverseEvenOdd_FillType: | 2997 case SkPath::kInverseEvenOdd_FillType: |
2992 w &= 1; | 2998 w &= 1; |
2993 break; | 2999 break; |
2994 default: | 3000 default: |
2995 break; | 3001 break; |
2996 } | 3002 } |
2997 return SkToBool(w); | 3003 return SkToBool(w); |
2998 } | 3004 } |
OLD | NEW |