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

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

Issue 1048593002: Refactor Sk2x<T> + Sk4x<T> into SkNf<N,T> and SkNi<N,T> (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: This is actually faster Created 5 years, 8 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/Sk4x.h ('k') | src/core/SkMatrix.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 #include "Sk2x.h" 10 #include "SkNx.h"
11 11
12 static Sk2s from_point(const SkPoint& point) { 12 static Sk2s from_point(const SkPoint& point) {
13 return Sk2s::Load(&point.fX); 13 return Sk2s::Load(&point.fX);
14 } 14 }
15 15
16 static SkPoint to_point(const Sk2s& x) { 16 static SkPoint to_point(const Sk2s& x) {
17 SkPoint point; 17 SkPoint point;
18 x.store(&point.fX); 18 x.store(&point.fX);
19 return point; 19 return point;
20 } 20 }
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 return v0 + (v1 - v0) * t; 183 return v0 + (v1 - v0) * t;
184 } 184 }
185 185
186 void SkChopQuadAt(const SkPoint src[3], SkPoint dst[5], SkScalar t) { 186 void SkChopQuadAt(const SkPoint src[3], SkPoint dst[5], SkScalar t) {
187 SkASSERT(t > 0 && t < SK_Scalar1); 187 SkASSERT(t > 0 && t < SK_Scalar1);
188 188
189 Sk2s p0 = from_point(src[0]); 189 Sk2s p0 = from_point(src[0]);
190 Sk2s p1 = from_point(src[1]); 190 Sk2s p1 = from_point(src[1]);
191 Sk2s p2 = from_point(src[2]); 191 Sk2s p2 = from_point(src[2]);
192 Sk2s tt(t); 192 Sk2s tt(t);
193 193
194 Sk2s p01 = interp(p0, p1, tt); 194 Sk2s p01 = interp(p0, p1, tt);
195 Sk2s p12 = interp(p1, p2, tt); 195 Sk2s p12 = interp(p1, p2, tt);
196 196
197 dst[0] = to_point(p0); 197 dst[0] = to_point(p0);
198 dst[1] = to_point(p01); 198 dst[1] = to_point(p01);
199 dst[2] = to_point(interp(p01, p12, tt)); 199 dst[2] = to_point(interp(p01, p12, tt));
200 dst[3] = to_point(p12); 200 dst[3] = to_point(p12);
201 dst[4] = to_point(p2); 201 dst[4] = to_point(p2);
202 } 202 }
203 203
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 Sk2s p2 = from_point(src[2]); 435 Sk2s p2 = from_point(src[2]);
436 Sk2s p3 = from_point(src[3]); 436 Sk2s p3 = from_point(src[3]);
437 Sk2s tt(t); 437 Sk2s tt(t);
438 438
439 Sk2s ab = interp(p0, p1, tt); 439 Sk2s ab = interp(p0, p1, tt);
440 Sk2s bc = interp(p1, p2, tt); 440 Sk2s bc = interp(p1, p2, tt);
441 Sk2s cd = interp(p2, p3, tt); 441 Sk2s cd = interp(p2, p3, tt);
442 Sk2s abc = interp(ab, bc, tt); 442 Sk2s abc = interp(ab, bc, tt);
443 Sk2s bcd = interp(bc, cd, tt); 443 Sk2s bcd = interp(bc, cd, tt);
444 Sk2s abcd = interp(abc, bcd, tt); 444 Sk2s abcd = interp(abc, bcd, tt);
445 445
446 dst[0] = src[0]; 446 dst[0] = src[0];
447 dst[1] = to_point(ab); 447 dst[1] = to_point(ab);
448 dst[2] = to_point(abc); 448 dst[2] = to_point(abc);
449 dst[3] = to_point(abcd); 449 dst[3] = to_point(abcd);
450 dst[4] = to_point(bcd); 450 dst[4] = to_point(bcd);
451 dst[5] = to_point(cd); 451 dst[5] = to_point(cd);
452 dst[6] = src[3]; 452 dst[6] = src[3];
453 } 453 }
454 454
455 /* http://code.google.com/p/skia/issues/detail?id=32 455 /* http://code.google.com/p/skia/issues/detail?id=32
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
1534 matrix.preScale(SK_Scalar1, -SK_Scalar1); 1534 matrix.preScale(SK_Scalar1, -SK_Scalar1);
1535 } 1535 }
1536 if (userMatrix) { 1536 if (userMatrix) {
1537 matrix.postConcat(*userMatrix); 1537 matrix.postConcat(*userMatrix);
1538 } 1538 }
1539 for (int i = 0; i < conicCount; ++i) { 1539 for (int i = 0; i < conicCount; ++i) {
1540 matrix.mapPoints(dst[i].fPts, 3); 1540 matrix.mapPoints(dst[i].fPts, 3);
1541 } 1541 }
1542 return conicCount; 1542 return conicCount;
1543 } 1543 }
OLDNEW
« no previous file with comments | « src/core/Sk4x.h ('k') | src/core/SkMatrix.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698