OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2008 The Android Open Source Project | 3 * Copyright 2008 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 "SkPathMeasure.h" | 10 #include "SkPathMeasure.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 // diff = -a/4 + b/2 - c/4 | 66 // diff = -a/4 + b/2 - c/4 |
67 SkScalar dx = SkScalarHalf(pts[1].fX) - | 67 SkScalar dx = SkScalarHalf(pts[1].fX) - |
68 SkScalarHalf(SkScalarHalf(pts[0].fX + pts[2].fX)); | 68 SkScalarHalf(SkScalarHalf(pts[0].fX + pts[2].fX)); |
69 SkScalar dy = SkScalarHalf(pts[1].fY) - | 69 SkScalar dy = SkScalarHalf(pts[1].fY) - |
70 SkScalarHalf(SkScalarHalf(pts[0].fY + pts[2].fY)); | 70 SkScalarHalf(SkScalarHalf(pts[0].fY + pts[2].fY)); |
71 | 71 |
72 SkScalar dist = SkMaxScalar(SkScalarAbs(dx), SkScalarAbs(dy)); | 72 SkScalar dist = SkMaxScalar(SkScalarAbs(dx), SkScalarAbs(dy)); |
73 return dist > CHEAP_DIST_LIMIT; | 73 return dist > CHEAP_DIST_LIMIT; |
74 } | 74 } |
75 | 75 |
| 76 #ifndef SK_SUPPORT_LEGACY_CONIC_MEASURE |
76 static bool conic_too_curvy(const SkPoint& firstPt, const SkPoint& midTPt, | 77 static bool conic_too_curvy(const SkPoint& firstPt, const SkPoint& midTPt, |
77 const SkPoint& lastPt) { | 78 const SkPoint& lastPt) { |
78 SkPoint midEnds = firstPt + lastPt; | 79 SkPoint midEnds = firstPt + lastPt; |
79 midEnds *= 0.5f; | 80 midEnds *= 0.5f; |
80 SkVector dxy = midTPt - midEnds; | 81 SkVector dxy = midTPt - midEnds; |
81 SkScalar dist = SkMaxScalar(SkScalarAbs(dxy.fX), SkScalarAbs(dxy.fY)); | 82 SkScalar dist = SkMaxScalar(SkScalarAbs(dxy.fX), SkScalarAbs(dxy.fY)); |
82 return dist > CHEAP_DIST_LIMIT; | 83 return dist > CHEAP_DIST_LIMIT; |
83 } | 84 } |
| 85 #endif |
84 | 86 |
85 static bool cheap_dist_exceeds_limit(const SkPoint& pt, | 87 static bool cheap_dist_exceeds_limit(const SkPoint& pt, |
86 SkScalar x, SkScalar y) { | 88 SkScalar x, SkScalar y) { |
87 SkScalar dist = SkMaxScalar(SkScalarAbs(x - pt.fX), SkScalarAbs(y - pt.fY)); | 89 SkScalar dist = SkMaxScalar(SkScalarAbs(x - pt.fX), SkScalarAbs(y - pt.fY)); |
88 // just made up the 1/2 | 90 // just made up the 1/2 |
89 return dist > CHEAP_DIST_LIMIT; | 91 return dist > CHEAP_DIST_LIMIT; |
90 } | 92 } |
91 | 93 |
92 static bool cubic_too_curvy(const SkPoint pts[4]) { | 94 static bool cubic_too_curvy(const SkPoint pts[4]) { |
93 return cheap_dist_exceeds_limit(pts[1], | 95 return cheap_dist_exceeds_limit(pts[1], |
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 | 750 |
749 for (int i = 0; i < fSegments.count(); i++) { | 751 for (int i = 0; i < fSegments.count(); i++) { |
750 const Segment* seg = &fSegments[i]; | 752 const Segment* seg = &fSegments[i]; |
751 SkDebugf("pathmeas: seg[%d] distance=%g, point=%d, t=%g, type=%d\n", | 753 SkDebugf("pathmeas: seg[%d] distance=%g, point=%d, t=%g, type=%d\n", |
752 i, seg->fDistance, seg->fPtIndex, seg->getScalarT(), | 754 i, seg->fDistance, seg->fPtIndex, seg->getScalarT(), |
753 seg->fType); | 755 seg->fType); |
754 } | 756 } |
755 } | 757 } |
756 | 758 |
757 #endif | 759 #endif |
OLD | NEW |