OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include <cmath> | 8 #include <cmath> |
9 #include "SkBuffer.h" | 9 #include "SkBuffer.h" |
10 #include "SkCubicClipper.h" | 10 #include "SkCubicClipper.h" |
(...skipping 2387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2398 } else if (dir != fExpectedDir) { | 2398 } else if (dir != fExpectedDir) { |
2399 fConvexity = SkPath::kConcave_Convexity; | 2399 fConvexity = SkPath::kConcave_Convexity; |
2400 fFirstDirection = SkPathPriv::kUnknown_FirstDirection; | 2400 fFirstDirection = SkPathPriv::kUnknown_FirstDirection; |
2401 } | 2401 } |
2402 fLastVec = vec; | 2402 fLastVec = vec; |
2403 break; | 2403 break; |
2404 case kStraight_DirChange: | 2404 case kStraight_DirChange: |
2405 break; | 2405 break; |
2406 case kBackwards_DirChange: | 2406 case kBackwards_DirChange: |
2407 if (fIsCurve) { | 2407 if (fIsCurve) { |
2408 fConvexity = SkPath::kConcave_Convexity; | 2408 // If any of the subsequent dir is non-backward, it'll be co
ncave. |
2409 fFirstDirection = SkPathPriv::kUnknown_FirstDirection; | 2409 // Otherwise, it's still convex. |
| 2410 fExpectedDir = dir; |
2410 } | 2411 } |
2411 fLastVec = vec; | 2412 fLastVec = vec; |
2412 break; | 2413 break; |
2413 case kInvalid_DirChange: | 2414 case kInvalid_DirChange: |
2414 SkFAIL("Use of invalid direction change flag"); | 2415 SkFAIL("Use of invalid direction change flag"); |
2415 break; | 2416 break; |
2416 } | 2417 } |
2417 } | 2418 } |
2418 | 2419 |
2419 SkPoint fPriorPt; | 2420 SkPoint fPriorPt; |
(...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3390 path->arcTo(oval, startAngle, 180.f, false); | 3391 path->arcTo(oval, startAngle, 180.f, false); |
3391 startAngle += 180.f; | 3392 startAngle += 180.f; |
3392 forceMoveTo = false; | 3393 forceMoveTo = false; |
3393 sweepAngle -= 360.f; | 3394 sweepAngle -= 360.f; |
3394 } | 3395 } |
3395 path->arcTo(oval, startAngle, sweepAngle, forceMoveTo); | 3396 path->arcTo(oval, startAngle, sweepAngle, forceMoveTo); |
3396 if (useCenter) { | 3397 if (useCenter) { |
3397 path->close(); | 3398 path->close(); |
3398 } | 3399 } |
3399 } | 3400 } |
OLD | NEW |