Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(513)

Side by Side Diff: src/core/SkGeometry.cpp

Issue 1024473005: Try out operator overloads for Sk2x. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: simpler math Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/Sk2x.h ('k') | tests/Sk2xTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "SkGeometry.h" 8 #include "SkGeometry.h"
9 #include "SkMatrix.h" 9 #include "SkMatrix.h"
10 10
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 SkPoint SkEvalQuadAt(const SkPoint src[3], SkScalar t) { 132 SkPoint SkEvalQuadAt(const SkPoint src[3], SkScalar t) {
133 SkASSERT(src); 133 SkASSERT(src);
134 SkASSERT(t >= 0 && t <= SK_Scalar1); 134 SkASSERT(t >= 0 && t <= SK_Scalar1);
135 135
136 const Sk2f t2(t); 136 const Sk2f t2(t);
137 137
138 Sk2f P0 = Sk2f::Load(&src[0].fX); 138 Sk2f P0 = Sk2f::Load(&src[0].fX);
139 Sk2f P1 = Sk2f::Load(&src[1].fX); 139 Sk2f P1 = Sk2f::Load(&src[1].fX);
140 Sk2f P2 = Sk2f::Load(&src[2].fX); 140 Sk2f P2 = Sk2f::Load(&src[2].fX);
141 141
142 Sk2f A = P2.subtract(P1.add(P1)).add(P0); 142 Sk2f B = P1 - P0;
143 Sk2f B = P1.subtract(P0); 143 Sk2f A = P2 - P1 - B;
144 B = B.add(B);
145 144
146 SkPoint result; 145 SkPoint result;
147 A.multiply(t2).add(B).multiply(t2).add(P0).store(&result.fX); 146 ((A * t2 + B+B) * t2 + P0).store(&result.fX);
148 return result; 147 return result;
149 } 148 }
150 149
151 static void interp_quad_coords(const SkScalar* src, SkScalar* dst, SkScalar t) { 150 static void interp_quad_coords(const SkScalar* src, SkScalar* dst, SkScalar t) {
152 SkScalar ab = SkScalarInterp(src[0], src[2], t); 151 SkScalar ab = SkScalarInterp(src[0], src[2], t);
153 SkScalar bc = SkScalarInterp(src[2], src[4], t); 152 SkScalar bc = SkScalarInterp(src[2], src[4], t);
154 153
155 dst[0] = src[0]; 154 dst[0] = src[0];
156 dst[2] = ab; 155 dst[2] = ab;
157 dst[4] = SkScalarInterp(ab, bc, t); 156 dst[4] = SkScalarInterp(ab, bc, t);
(...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1480 matrix.preScale(SK_Scalar1, -SK_Scalar1); 1479 matrix.preScale(SK_Scalar1, -SK_Scalar1);
1481 } 1480 }
1482 if (userMatrix) { 1481 if (userMatrix) {
1483 matrix.postConcat(*userMatrix); 1482 matrix.postConcat(*userMatrix);
1484 } 1483 }
1485 for (int i = 0; i < conicCount; ++i) { 1484 for (int i = 0; i < conicCount; ++i) {
1486 matrix.mapPoints(dst[i].fPts, 3); 1485 matrix.mapPoints(dst[i].fPts, 3);
1487 } 1486 }
1488 return conicCount; 1487 return conicCount;
1489 } 1488 }
OLDNEW
« no previous file with comments | « src/core/Sk2x.h ('k') | tests/Sk2xTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698