OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
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 "SkCurveMeasure.h" | 8 #include "SkCurveMeasure.h" |
9 #include "SkGeometry.h" | 9 #include "SkGeometry.h" |
10 | 10 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 switch (fSegType) { | 99 switch (fSegType) { |
100 case kQuad_SegType: { | 100 case kQuad_SegType: { |
101 float Ax = pts[0].x(); | 101 float Ax = pts[0].x(); |
102 float Bx = pts[1].x(); | 102 float Bx = pts[1].x(); |
103 float Cx = pts[2].x(); | 103 float Cx = pts[2].x(); |
104 float Ay = pts[0].y(); | 104 float Ay = pts[0].y(); |
105 float By = pts[1].y(); | 105 float By = pts[1].y(); |
106 float Cy = pts[2].y(); | 106 float Cy = pts[2].y(); |
107 | 107 |
108 // precompute coefficients for derivative | 108 // precompute coefficients for derivative |
109 xCoeff[0] = Sk8f(2.0f*(Ax - 2*Bx + Cx)); | 109 xCoeff[0] = Sk8f(2*(Ax - 2*Bx + Cx)); |
110 xCoeff[1] = Sk8f(2.0f*(Bx - Ax)); | 110 xCoeff[1] = Sk8f(2*(Bx - Ax)); |
111 | 111 |
112 yCoeff[0] = Sk8f(2.0f*(Ay - 2*By + Cy)); | 112 yCoeff[0] = Sk8f(2*(Ay - 2*By + Cy)); |
113 yCoeff[1] = Sk8f(2.0f*(By - Ay)); | 113 yCoeff[1] = Sk8f(2*(By - Ay)); |
114 } | 114 } |
115 break; | 115 break; |
116 case kCubic_SegType: | 116 case kCubic_SegType: |
117 { | 117 { |
118 float Ax = pts[0].x(); | 118 float Ax = pts[0].x(); |
119 float Bx = pts[1].x(); | 119 float Bx = pts[1].x(); |
120 float Cx = pts[2].x(); | 120 float Cx = pts[2].x(); |
121 float Dx = pts[3].x(); | 121 float Dx = pts[3].x(); |
122 float Ay = pts[0].y(); | 122 float Ay = pts[0].y(); |
123 float By = pts[1].y(); | 123 float By = pts[1].y(); |
124 float Cy = pts[2].y(); | 124 float Cy = pts[2].y(); |
125 float Dy = pts[3].y(); | 125 float Dy = pts[3].y(); |
126 | 126 |
127 // precompute coefficients for derivative | 127 // precompute coefficients for derivative |
128 xCoeff[0] = Sk8f(3.0f*(-Ax + 3.0f*(Bx - Cx) + Dx)); | 128 xCoeff[0] = Sk8f(3*(-Ax + 3*(Bx - Cx) + Dx)); |
129 xCoeff[1] = Sk8f(3.0f*(2.0f*(Ax - 2.0f*Bx + Cx))); | 129 xCoeff[1] = Sk8f(6*(Ax - 2*Bx + Cx)); |
130 xCoeff[2] = Sk8f(3.0f*(-Ax + Bx)); | 130 xCoeff[2] = Sk8f(3*(-Ax + Bx)); |
131 | 131 |
132 yCoeff[0] = Sk8f(3.0f*(-Ay + 3.0f*(By - Cy) + Dy)); | 132 yCoeff[0] = Sk8f(3*(-Ay + 3*(By - Cy) + Dy)); |
133 yCoeff[1] = Sk8f(3.0f * -Ay + By + 2.0f*(Ay - 2.0f*By + Cy)); | 133 yCoeff[1] = Sk8f(6*(Ay - 2*By + Cy)); |
134 yCoeff[2] = Sk8f(3.0f*(-Ay + By)); | 134 yCoeff[2] = Sk8f(3*(-Ay + By)); |
135 } | 135 } |
136 break; | 136 break; |
137 case kConic_SegType: | 137 case kConic_SegType: |
138 UNIMPLEMENTED; | 138 UNIMPLEMENTED; |
139 break; | 139 break; |
140 default: | 140 default: |
141 UNIMPLEMENTED; | 141 UNIMPLEMENTED; |
142 } | 142 } |
143 } | 143 } |
144 | 144 |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 if (time) { | 301 if (time) { |
302 *time = t; | 302 *time = t; |
303 } | 303 } |
304 if (pos) { | 304 if (pos) { |
305 *pos = evaluate(fPts, fSegType, t); | 305 *pos = evaluate(fPts, fSegType, t); |
306 } | 306 } |
307 if (tan) { | 307 if (tan) { |
308 *tan = evaluateDerivative(fPts, fSegType, t); | 308 *tan = evaluateDerivative(fPts, fSegType, t); |
309 } | 309 } |
310 } | 310 } |
OLD | NEW |