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

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

Issue 1016263002: remove unused SkXRay functions (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 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 | « no previous file | src/core/SkGeometry.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 #ifndef SkGeometry_DEFINED 8 #ifndef SkGeometry_DEFINED
9 #define SkGeometry_DEFINED 9 #define SkGeometry_DEFINED
10 10
11 #include "SkMatrix.h" 11 #include "SkMatrix.h"
12 12
13 /** An XRay is a half-line that runs from the specific point/origin to
14 +infinity in the X direction. e.g. XRay(3,5) is the half-line
15 (3,5)....(infinity, 5)
16 */
17 typedef SkPoint SkXRay;
18
19 /** Given a line segment from pts[0] to pts[1], and an xray, return true if
20 they intersect. Optional outgoing "ambiguous" argument indicates
21 whether the answer is ambiguous because the query occurred exactly at
22 one of the endpoints' y coordinates, indicating that another query y
23 coordinate is preferred for robustness.
24 */
25 bool SkXRayCrossesLine(const SkXRay& pt, const SkPoint pts[2],
26 bool* ambiguous = NULL);
27
28 /** Given a quadratic equation Ax^2 + Bx + C = 0, return 0, 1, 2 roots for the 13 /** Given a quadratic equation Ax^2 + Bx + C = 0, return 0, 1, 2 roots for the
29 equation. 14 equation.
30 */ 15 */
31 int SkFindUnitQuadRoots(SkScalar A, SkScalar B, SkScalar C, SkScalar roots[2]); 16 int SkFindUnitQuadRoots(SkScalar A, SkScalar B, SkScalar C, SkScalar roots[2]);
32 17
33 /////////////////////////////////////////////////////////////////////////////// 18 ///////////////////////////////////////////////////////////////////////////////
34 19
35 /** Set pt to the point on the src quadratic specified by t. t must be 20 /** Set pt to the point on the src quadratic specified by t. t must be
36 0 <= t <= 1.0 21 0 <= t <= 1.0
37 */ 22 */
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 /** Return 1 for no chop, 2 for having chopped the cubic at a single 137 /** Return 1 for no chop, 2 for having chopped the cubic at a single
153 inflection point, 3 for having chopped at 2 inflection points. 138 inflection point, 3 for having chopped at 2 inflection points.
154 dst will hold the resulting 1, 2, or 3 cubics. 139 dst will hold the resulting 1, 2, or 3 cubics.
155 */ 140 */
156 int SkChopCubicAtInflections(const SkPoint src[4], SkPoint dst[10]); 141 int SkChopCubicAtInflections(const SkPoint src[4], SkPoint dst[10]);
157 142
158 int SkFindCubicMaxCurvature(const SkPoint src[4], SkScalar tValues[3]); 143 int SkFindCubicMaxCurvature(const SkPoint src[4], SkScalar tValues[3]);
159 int SkChopCubicAtMaxCurvature(const SkPoint src[4], SkPoint dst[13], 144 int SkChopCubicAtMaxCurvature(const SkPoint src[4], SkPoint dst[13],
160 SkScalar tValues[3] = NULL); 145 SkScalar tValues[3] = NULL);
161 146
162 /** Given a monotonic cubic bezier, determine whether an xray intersects the
163 cubic.
164 By definition the cubic is open at the starting point; in other
165 words, if pt.fY is equivalent to cubic[0].fY, and pt.fX is to the
166 left of the curve, the line is not considered to cross the curve,
167 but if it is equal to cubic[3].fY then it is considered to
168 cross.
169 Optional outgoing "ambiguous" argument indicates whether the answer is
170 ambiguous because the query occurred exactly at one of the endpoints' y
171 coordinates, indicating that another query y coordinate is preferred
172 for robustness.
173 */
174 bool SkXRayCrossesMonotonicCubic(const SkXRay& pt, const SkPoint cubic[4],
175 bool* ambiguous = NULL);
176
177 /** Given an arbitrary cubic bezier, return the number of times an xray crosses
178 the cubic. Valid return values are [0..3]
179 By definition the cubic is open at the starting point; in other
180 words, if pt.fY is equivalent to cubic[0].fY, and pt.fX is to the
181 left of the curve, the line is not considered to cross the curve,
182 but if it is equal to cubic[3].fY then it is considered to
183 cross.
184 Optional outgoing "ambiguous" argument indicates whether the answer is
185 ambiguous because the query occurred exactly at one of the endpoints' y
186 coordinates or at a tangent point, indicating that another query y
187 coordinate is preferred for robustness.
188 */
189 int SkNumXRayCrossingsForCubic(const SkXRay& pt, const SkPoint cubic[4],
190 bool* ambiguous = NULL);
191
192 enum SkCubicType { 147 enum SkCubicType {
193 kSerpentine_SkCubicType, 148 kSerpentine_SkCubicType,
194 kCusp_SkCubicType, 149 kCusp_SkCubicType,
195 kLoop_SkCubicType, 150 kLoop_SkCubicType,
196 kQuadratic_SkCubicType, 151 kQuadratic_SkCubicType,
197 kLine_SkCubicType, 152 kLine_SkCubicType,
198 kPoint_SkCubicType 153 kPoint_SkCubicType
199 }; 154 };
200 155
201 /** Returns the cubic classification. Pass scratch storage for computing inflect ion data, 156 /** Returns the cubic classification. Pass scratch storage for computing inflect ion data,
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 private: 300 private:
346 enum { 301 enum {
347 kQuadCount = 8, // should handle most conics 302 kQuadCount = 8, // should handle most conics
348 kPointCount = 1 + 2 * kQuadCount, 303 kPointCount = 1 + 2 * kQuadCount,
349 }; 304 };
350 SkAutoSTMalloc<kPointCount, SkPoint> fStorage; 305 SkAutoSTMalloc<kPointCount, SkPoint> fStorage;
351 int fQuadCount; // #quads for current usage 306 int fQuadCount; // #quads for current usage
352 }; 307 };
353 308
354 #endif 309 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkGeometry.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698