Flutter Engine
The Flutter Engine
Classes | Functions | Variables
SkPathOpsCurve.h File Reference
#include "include/core/SkPath.h"
#include "include/core/SkPoint.h"
#include "include/core/SkScalar.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkDebug.h"
#include "src/pathops/SkIntersections.h"
#include "src/pathops/SkPathOpsConic.h"
#include "src/pathops/SkPathOpsCubic.h"
#include "src/pathops/SkPathOpsLine.h"
#include "src/pathops/SkPathOpsPoint.h"
#include "src/pathops/SkPathOpsQuad.h"
#include "src/pathops/SkPathOpsTypes.h"

Go to the source code of this file.

Classes

struct  SkOpCurve
 
struct  SkDCurve
 
class  SkDCurveSweep
 

Functions

static SkDPoint dline_xy_at_t (const SkPoint a[2], SkScalar, double t)
 
static SkDPoint dquad_xy_at_t (const SkPoint a[3], SkScalar, double t)
 
static SkDPoint dconic_xy_at_t (const SkPoint a[3], SkScalar weight, double t)
 
static SkDPoint dcubic_xy_at_t (const SkPoint a[4], SkScalar, double t)
 
static SkDPoint ddline_xy_at_t (const SkDCurve &c, double t)
 
static SkDPoint ddquad_xy_at_t (const SkDCurve &c, double t)
 
static SkDPoint ddconic_xy_at_t (const SkDCurve &c, double t)
 
static SkDPoint ddcubic_xy_at_t (const SkDCurve &c, double t)
 
static SkPoint fline_xy_at_t (const SkPoint a[2], SkScalar weight, double t)
 
static SkPoint fquad_xy_at_t (const SkPoint a[3], SkScalar weight, double t)
 
static SkPoint fconic_xy_at_t (const SkPoint a[3], SkScalar weight, double t)
 
static SkPoint fcubic_xy_at_t (const SkPoint a[4], SkScalar weight, double t)
 
static SkDVector dline_dxdy_at_t (const SkPoint a[2], SkScalar, double)
 
static SkDVector dquad_dxdy_at_t (const SkPoint a[3], SkScalar, double t)
 
static SkDVector dconic_dxdy_at_t (const SkPoint a[3], SkScalar weight, double t)
 
static SkDVector dcubic_dxdy_at_t (const SkPoint a[4], SkScalar, double t)
 
static SkDVector ddline_dxdy_at_t (const SkDCurve &c, double)
 
static SkDVector ddquad_dxdy_at_t (const SkDCurve &c, double t)
 
static SkDVector ddconic_dxdy_at_t (const SkDCurve &c, double t)
 
static SkDVector ddcubic_dxdy_at_t (const SkDCurve &c, double t)
 
static SkVector fline_dxdy_at_t (const SkPoint a[2], SkScalar, double)
 
static SkVector fquad_dxdy_at_t (const SkPoint a[3], SkScalar weight, double t)
 
static SkVector fconic_dxdy_at_t (const SkPoint a[3], SkScalar weight, double t)
 
static SkVector fcubic_dxdy_at_t (const SkPoint a[4], SkScalar weight, double t)
 
static bool line_is_vertical (const SkPoint a[2], SkScalar, double startT, double endT)
 
static bool quad_is_vertical (const SkPoint a[3], SkScalar, double startT, double endT)
 
static bool conic_is_vertical (const SkPoint a[3], SkScalar weight, double startT, double endT)
 
static bool cubic_is_vertical (const SkPoint a[4], SkScalar, double startT, double endT)
 
static void line_intersect_ray (const SkPoint a[2], SkScalar, const SkDLine &ray, SkIntersections *i)
 
static void quad_intersect_ray (const SkPoint a[3], SkScalar, const SkDLine &ray, SkIntersections *i)
 
static void conic_intersect_ray (const SkPoint a[3], SkScalar weight, const SkDLine &ray, SkIntersections *i)
 
static void cubic_intersect_ray (const SkPoint a[4], SkScalar, const SkDLine &ray, SkIntersections *i)
 
static void dline_intersect_ray (const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
 
static void dquad_intersect_ray (const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
 
static void dconic_intersect_ray (const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
 
static void dcubic_intersect_ray (const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
 
static int line_intercept_h (const SkPoint a[2], SkScalar, SkScalar y, double *roots)
 
static int line_intercept_v (const SkPoint a[2], SkScalar, SkScalar x, double *roots)
 
static int quad_intercept_h (const SkPoint a[2], SkScalar, SkScalar y, double *roots)
 
static int quad_intercept_v (const SkPoint a[2], SkScalar, SkScalar x, double *roots)
 
static int conic_intercept_h (const SkPoint a[2], SkScalar w, SkScalar y, double *roots)
 
static int conic_intercept_v (const SkPoint a[2], SkScalar w, SkScalar x, double *roots)
 
static int cubic_intercept_h (const SkPoint a[3], SkScalar, SkScalar y, double *roots)
 
static int cubic_intercept_v (const SkPoint a[3], SkScalar, SkScalar x, double *roots)
 

Variables

SkDPoint(SkDCurve::*const Top [])(const SkPoint curve[], SkScalar cWeight, double tStart, double tEnd, double *topT)
 
static SkDPoint(*const CurveDPointAtT [])(const SkPoint[], SkScalar, double)
 
static SkDPoint(*const CurveDDPointAtT [])(const SkDCurve &, double)
 
static SkPoint(*const CurvePointAtT [])(const SkPoint[], SkScalar, double)
 
static SkDVector(*const CurveDSlopeAtT [])(const SkPoint[], SkScalar, double)
 
static SkDVector(*const CurveDDSlopeAtT [])(const SkDCurve &, double)
 
static SkVector(*const CurveSlopeAtT [])(const SkPoint[], SkScalar, double)
 
static bool(*const CurveIsVertical [])(const SkPoint[], SkScalar, double, double)
 
static void(*const CurveIntersectRay [])(const SkPoint[], SkScalar, const SkDLine &, SkIntersections *)
 
static void(*const CurveDIntersectRay [])(const SkDCurve &, const SkDLine &, SkIntersections *)
 
static int(*const CurveIntercept [])(const SkPoint[], SkScalar, SkScalar, double *)
 

Function Documentation

◆ conic_intercept_h()

static int conic_intercept_h ( const SkPoint  a[2],
SkScalar  w,
SkScalar  y,
double *  roots 
)
static

Definition at line 394 of file SkPathOpsCurve.h.

394 {
397}
static double HorizontalIntercept(const SkDLine &line, double y)
struct MyStruct a[10]
double y
AI float conic(float tolerance, const SkPoint pts[], float w, const VectorXform &vectorXform=VectorXform())
Definition: WangsFormula.h:287
SkScalar w

◆ conic_intercept_v()

static int conic_intercept_v ( const SkPoint  a[2],
SkScalar  w,
SkScalar  x,
double *  roots 
)
static

Definition at line 399 of file SkPathOpsCurve.h.

399 {
402}
static double VerticalIntercept(const SkDLine &line, double x)
double x

◆ conic_intersect_ray()

static void conic_intersect_ray ( const SkPoint  a[3],
SkScalar  weight,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 319 of file SkPathOpsCurve.h.

320 {
322 conic.set(a, weight);
323 i->intersectRay(conic, ray);
324}

◆ conic_is_vertical()

static bool conic_is_vertical ( const SkPoint  a[3],
SkScalar  weight,
double  startT,
double  endT 
)
static

Definition at line 282 of file SkPathOpsCurve.h.

282 {
284 conic.set(a, weight);
285 SkDConic dst = conic.subDivide(startT, endT);
286 return AlmostEqualUlps(dst[0].fX, dst[1].fX) && AlmostEqualUlps(dst[1].fX, dst[2].fX);
287}
bool AlmostEqualUlps(const SkPoint &pt1, const SkPoint &pt2)
dst
Definition: cp.py:12

◆ cubic_intercept_h()

static int cubic_intercept_h ( const SkPoint  a[3],
SkScalar  ,
SkScalar  y,
double *  roots 
)
static

Definition at line 404 of file SkPathOpsCurve.h.

404 {
406 return cubic.set(a).horizontalIntersect(y, roots);
407}
AI float cubic(float precision, const SkPoint pts[], const VectorXform &vectorXform=VectorXform())
Definition: WangsFormula.h:195

◆ cubic_intercept_v()

static int cubic_intercept_v ( const SkPoint  a[3],
SkScalar  ,
SkScalar  x,
double *  roots 
)
static

Definition at line 409 of file SkPathOpsCurve.h.

409 {
411 return cubic.set(a).verticalIntersect(x, roots);
412}

◆ cubic_intersect_ray()

static void cubic_intersect_ray ( const SkPoint  a[4],
SkScalar  ,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 326 of file SkPathOpsCurve.h.

327 {
329 cubic.set(a);
330 i->intersectRay(cubic, ray);
331}

◆ cubic_is_vertical()

static bool cubic_is_vertical ( const SkPoint  a[4],
SkScalar  ,
double  startT,
double  endT 
)
static

Definition at line 289 of file SkPathOpsCurve.h.

289 {
291 cubic.set(a);
292 SkDCubic dst = cubic.subDivide(startT, endT);
293 return AlmostEqualUlps(dst[0].fX, dst[1].fX) && AlmostEqualUlps(dst[1].fX, dst[2].fX)
294 && AlmostEqualUlps(dst[2].fX, dst[3].fX);
295}

◆ dconic_dxdy_at_t()

static SkDVector dconic_dxdy_at_t ( const SkPoint  a[3],
SkScalar  weight,
double  t 
)
static

Definition at line 200 of file SkPathOpsCurve.h.

200 {
202 conic.set(a, weight);
203 return conic.dxdyAtT(t);
204}

◆ dconic_intersect_ray()

static void dconic_intersect_ray ( const SkDCurve c,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 350 of file SkPathOpsCurve.h.

350 {
351 i->intersectRay(c.fConic, ray);
352}
SkDConic fConic

◆ dconic_xy_at_t()

static SkDPoint dconic_xy_at_t ( const SkPoint  a[3],
SkScalar  weight,
double  t 
)
static

Definition at line 120 of file SkPathOpsCurve.h.

120 {
122 conic.set(a, weight);
123 return conic.ptAtT(t);
124}

◆ dcubic_dxdy_at_t()

static SkDVector dcubic_dxdy_at_t ( const SkPoint  a[4],
SkScalar  ,
double  t 
)
static

Definition at line 206 of file SkPathOpsCurve.h.

206 {
208 cubic.set(a);
209 return cubic.dxdyAtT(t);
210}

◆ dcubic_intersect_ray()

static void dcubic_intersect_ray ( const SkDCurve c,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 354 of file SkPathOpsCurve.h.

354 {
355 i->intersectRay(c.fCubic, ray);
356}
SkDCubic fCubic

◆ dcubic_xy_at_t()

static SkDPoint dcubic_xy_at_t ( const SkPoint  a[4],
SkScalar  ,
double  t 
)
static

Definition at line 126 of file SkPathOpsCurve.h.

126 {
128 cubic.set(a);
129 return cubic.ptAtT(t);
130}

◆ ddconic_dxdy_at_t()

static SkDVector ddconic_dxdy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 228 of file SkPathOpsCurve.h.

228 {
229 return c.fConic.dxdyAtT(t);
230}
SkDVector dxdyAtT(double t) const

◆ ddconic_xy_at_t()

static SkDPoint ddconic_xy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 148 of file SkPathOpsCurve.h.

148 {
149 return c.fConic.ptAtT(t);
150}
SkDPoint ptAtT(double t) const

◆ ddcubic_dxdy_at_t()

static SkDVector ddcubic_dxdy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 232 of file SkPathOpsCurve.h.

232 {
233 return c.fCubic.dxdyAtT(t);
234}
SkDVector dxdyAtT(double t) const

◆ ddcubic_xy_at_t()

static SkDPoint ddcubic_xy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 152 of file SkPathOpsCurve.h.

152 {
153 return c.fCubic.ptAtT(t);
154}
SkDPoint ptAtT(double t) const

◆ ddline_dxdy_at_t()

static SkDVector ddline_dxdy_at_t ( const SkDCurve c,
double   
)
static

Definition at line 220 of file SkPathOpsCurve.h.

220 {
221 return c.fLine.fPts[1] - c.fLine.fPts[0];
222}
SkDLine fLine
SkDPoint fPts[2]
Definition: SkPathOpsLine.h:15

◆ ddline_xy_at_t()

static SkDPoint ddline_xy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 140 of file SkPathOpsCurve.h.

140 {
141 return c.fLine.ptAtT(t);
142}
SkDPoint ptAtT(double t) const

◆ ddquad_dxdy_at_t()

static SkDVector ddquad_dxdy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 224 of file SkPathOpsCurve.h.

224 {
225 return c.fQuad.dxdyAtT(t);
226}
SkDQuad fQuad
SkDVector dxdyAtT(double t) const

◆ ddquad_xy_at_t()

static SkDPoint ddquad_xy_at_t ( const SkDCurve c,
double  t 
)
static

Definition at line 144 of file SkPathOpsCurve.h.

144 {
145 return c.fQuad.ptAtT(t);
146}
SkDPoint ptAtT(double t) const

◆ dline_dxdy_at_t()

static SkDVector dline_dxdy_at_t ( const SkPoint  a[2],
SkScalar  ,
double   
)
static

Definition at line 188 of file SkPathOpsCurve.h.

188 {
190 line.set(a);
191 return line[1] - line[0];
192}

◆ dline_intersect_ray()

static void dline_intersect_ray ( const SkDCurve c,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 342 of file SkPathOpsCurve.h.

342 {
343 i->intersectRay(c.fLine, ray);
344}

◆ dline_xy_at_t()

static SkDPoint dline_xy_at_t ( const SkPoint  a[2],
SkScalar  ,
double  t 
)
static

Definition at line 108 of file SkPathOpsCurve.h.

108 {
110 line.set(a);
111 return line.ptAtT(t);
112}

◆ dquad_dxdy_at_t()

static SkDVector dquad_dxdy_at_t ( const SkPoint  a[3],
SkScalar  ,
double  t 
)
static

Definition at line 194 of file SkPathOpsCurve.h.

194 {
195 SkDQuad quad;
196 quad.set(a);
197 return quad.dxdyAtT(t);
198}
const SkDQuad & set(const SkPoint pts[kPointCount] SkDEBUGPARAMS(SkOpGlobalState *state=nullptr))
Definition: SkPathOpsQuad.h:65

◆ dquad_intersect_ray()

static void dquad_intersect_ray ( const SkDCurve c,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 346 of file SkPathOpsCurve.h.

346 {
347 i->intersectRay(c.fQuad, ray);
348}

◆ dquad_xy_at_t()

static SkDPoint dquad_xy_at_t ( const SkPoint  a[3],
SkScalar  ,
double  t 
)
static

Definition at line 114 of file SkPathOpsCurve.h.

114 {
115 SkDQuad quad;
116 quad.set(a);
117 return quad.ptAtT(t);
118}

◆ fconic_dxdy_at_t()

static SkVector fconic_dxdy_at_t ( const SkPoint  a[3],
SkScalar  weight,
double  t 
)
static

Definition at line 252 of file SkPathOpsCurve.h.

252 {
253 return dconic_dxdy_at_t(a, weight, t).asSkVector();
254}
static SkDVector dconic_dxdy_at_t(const SkPoint a[3], SkScalar weight, double t)
SkVector asSkVector() const

◆ fconic_xy_at_t()

static SkPoint fconic_xy_at_t ( const SkPoint  a[3],
SkScalar  weight,
double  t 
)
static

Definition at line 172 of file SkPathOpsCurve.h.

172 {
173 return dconic_xy_at_t(a, weight, t).asSkPoint();
174}
static SkDPoint dconic_xy_at_t(const SkPoint a[3], SkScalar weight, double t)
SkPoint asSkPoint() const

◆ fcubic_dxdy_at_t()

static SkVector fcubic_dxdy_at_t ( const SkPoint  a[4],
SkScalar  weight,
double  t 
)
static

Definition at line 256 of file SkPathOpsCurve.h.

256 {
257 return dcubic_dxdy_at_t(a, weight, t).asSkVector();
258}
static SkDVector dcubic_dxdy_at_t(const SkPoint a[4], SkScalar, double t)

◆ fcubic_xy_at_t()

static SkPoint fcubic_xy_at_t ( const SkPoint  a[4],
SkScalar  weight,
double  t 
)
static

Definition at line 176 of file SkPathOpsCurve.h.

176 {
177 return dcubic_xy_at_t(a, weight, t).asSkPoint();
178}
static SkDPoint dcubic_xy_at_t(const SkPoint a[4], SkScalar, double t)

◆ fline_dxdy_at_t()

static SkVector fline_dxdy_at_t ( const SkPoint  a[2],
SkScalar  ,
double   
)
static

Definition at line 244 of file SkPathOpsCurve.h.

244 {
245 return a[1] - a[0];
246}

◆ fline_xy_at_t()

static SkPoint fline_xy_at_t ( const SkPoint  a[2],
SkScalar  weight,
double  t 
)
static

Definition at line 164 of file SkPathOpsCurve.h.

164 {
165 return dline_xy_at_t(a, weight, t).asSkPoint();
166}
static SkDPoint dline_xy_at_t(const SkPoint a[2], SkScalar, double t)

◆ fquad_dxdy_at_t()

static SkVector fquad_dxdy_at_t ( const SkPoint  a[3],
SkScalar  weight,
double  t 
)
static

Definition at line 248 of file SkPathOpsCurve.h.

248 {
249 return dquad_dxdy_at_t(a, weight, t).asSkVector();
250}
static SkDVector dquad_dxdy_at_t(const SkPoint a[3], SkScalar, double t)

◆ fquad_xy_at_t()

static SkPoint fquad_xy_at_t ( const SkPoint  a[3],
SkScalar  weight,
double  t 
)
static

Definition at line 168 of file SkPathOpsCurve.h.

168 {
169 return dquad_xy_at_t(a, weight, t).asSkPoint();
170}
static SkDPoint dquad_xy_at_t(const SkPoint a[3], SkScalar, double t)

◆ line_intercept_h()

static int line_intercept_h ( const SkPoint  a[2],
SkScalar  ,
SkScalar  y,
double *  roots 
)
static

Definition at line 366 of file SkPathOpsCurve.h.

366 {
367 if (a[0].fY == a[1].fY) {
368 return false;
369 }
372 return between(0, roots[0], 1);
373}
bool between(double a, double b, double c)

◆ line_intercept_v()

static int line_intercept_v ( const SkPoint  a[2],
SkScalar  ,
SkScalar  x,
double *  roots 
)
static

Definition at line 375 of file SkPathOpsCurve.h.

375 {
376 if (a[0].fX == a[1].fX) {
377 return false;
378 }
381 return between(0, roots[0], 1);
382}

◆ line_intersect_ray()

static void line_intersect_ray ( const SkPoint  a[2],
SkScalar  ,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 305 of file SkPathOpsCurve.h.

306 {
308 line.set(a);
309 i->intersectRay(line, ray);
310}

◆ line_is_vertical()

static bool line_is_vertical ( const SkPoint  a[2],
SkScalar  ,
double  startT,
double  endT 
)
static

Definition at line 268 of file SkPathOpsCurve.h.

268 {
270 line.set(a);
271 SkDPoint dst[2] = { line.ptAtT(startT), line.ptAtT(endT) };
272 return AlmostEqualUlps(dst[0].fX, dst[1].fX);
273}

◆ quad_intercept_h()

static int quad_intercept_h ( const SkPoint  a[2],
SkScalar  ,
SkScalar  y,
double *  roots 
)
static

Definition at line 384 of file SkPathOpsCurve.h.

384 {
385 SkDQuad quad;
387}

◆ quad_intercept_v()

static int quad_intercept_v ( const SkPoint  a[2],
SkScalar  ,
SkScalar  x,
double *  roots 
)
static

Definition at line 389 of file SkPathOpsCurve.h.

389 {
390 SkDQuad quad;
392}

◆ quad_intersect_ray()

static void quad_intersect_ray ( const SkPoint  a[3],
SkScalar  ,
const SkDLine ray,
SkIntersections i 
)
static

Definition at line 312 of file SkPathOpsCurve.h.

313 {
314 SkDQuad quad;
315 quad.set(a);
316 i->intersectRay(quad, ray);
317}

◆ quad_is_vertical()

static bool quad_is_vertical ( const SkPoint  a[3],
SkScalar  ,
double  startT,
double  endT 
)
static

Definition at line 275 of file SkPathOpsCurve.h.

275 {
276 SkDQuad quad;
277 quad.set(a);
278 SkDQuad dst = quad.subDivide(startT, endT);
279 return AlmostEqualUlps(dst[0].fX, dst[1].fX) && AlmostEqualUlps(dst[1].fX, dst[2].fX);
280}
SkDQuad subDivide(double t1, double t2) const

Variable Documentation

◆ CurveDDPointAtT

SkDPoint(*const CurveDDPointAtT[])(const SkDCurve &, double) ( const SkDCurve ,
double   
)
static
Initial value:
= {
nullptr,
}
static SkDPoint ddconic_xy_at_t(const SkDCurve &c, double t)
static SkDPoint ddline_xy_at_t(const SkDCurve &c, double t)
static SkDPoint ddcubic_xy_at_t(const SkDCurve &c, double t)
static SkDPoint ddquad_xy_at_t(const SkDCurve &c, double t)

Definition at line 156 of file SkPathOpsCurve.h.

◆ CurveDDSlopeAtT

SkDVector(*const CurveDDSlopeAtT[])(const SkDCurve &, double) ( const SkDCurve ,
double   
)
static
Initial value:
= {
nullptr,
}
static SkDVector ddconic_dxdy_at_t(const SkDCurve &c, double t)
static SkDVector ddquad_dxdy_at_t(const SkDCurve &c, double t)
static SkDVector ddcubic_dxdy_at_t(const SkDCurve &c, double t)
static SkDVector ddline_dxdy_at_t(const SkDCurve &c, double)

Definition at line 236 of file SkPathOpsCurve.h.

◆ CurveDIntersectRay

void(*const CurveDIntersectRay[])(const SkDCurve &, const SkDLine &, SkIntersections *) ( const SkDCurve ,
const SkDLine ,
SkIntersections  
)
static
Initial value:
= {
nullptr,
}
static void dcubic_intersect_ray(const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
static void dline_intersect_ray(const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
static void dconic_intersect_ray(const SkDCurve &c, const SkDLine &ray, SkIntersections *i)
static void dquad_intersect_ray(const SkDCurve &c, const SkDLine &ray, SkIntersections *i)

Definition at line 358 of file SkPathOpsCurve.h.

◆ CurveDPointAtT

SkDPoint(*const CurveDPointAtT[])(const SkPoint[], SkScalar, double) ( const  SkPoint[],
SkScalar  ,
double   
)
static
Initial value:

Definition at line 132 of file SkPathOpsCurve.h.

◆ CurveDSlopeAtT

SkDVector(*const CurveDSlopeAtT[])(const SkPoint[], SkScalar, double) ( const  SkPoint[],
SkScalar  ,
double   
)
static
Initial value:
= {
nullptr,
}
static SkDVector dline_dxdy_at_t(const SkPoint a[2], SkScalar, double)

Definition at line 212 of file SkPathOpsCurve.h.

◆ CurveIntercept

int(*const CurveIntercept[])(const SkPoint[], SkScalar, SkScalar, double *) ( const  SkPoint[],
SkScalar  ,
SkScalar  ,
double *   
)
static
Initial value:
= {
nullptr,
nullptr,
}
static int conic_intercept_v(const SkPoint a[2], SkScalar w, SkScalar x, double *roots)
static int quad_intercept_h(const SkPoint a[2], SkScalar, SkScalar y, double *roots)
static int quad_intercept_v(const SkPoint a[2], SkScalar, SkScalar x, double *roots)
static int line_intercept_h(const SkPoint a[2], SkScalar, SkScalar y, double *roots)
static int cubic_intercept_h(const SkPoint a[3], SkScalar, SkScalar y, double *roots)
static int conic_intercept_h(const SkPoint a[2], SkScalar w, SkScalar y, double *roots)
static int line_intercept_v(const SkPoint a[2], SkScalar, SkScalar x, double *roots)
static int cubic_intercept_v(const SkPoint a[3], SkScalar, SkScalar x, double *roots)

Definition at line 414 of file SkPathOpsCurve.h.

◆ CurveIntersectRay

void(*const CurveIntersectRay[])(const SkPoint[], SkScalar, const SkDLine &, SkIntersections *) ( const  SkPoint[],
SkScalar  ,
const SkDLine ,
SkIntersections  
)
static
Initial value:
= {
nullptr,
}
static void quad_intersect_ray(const SkPoint a[3], SkScalar, const SkDLine &ray, SkIntersections *i)
static void conic_intersect_ray(const SkPoint a[3], SkScalar weight, const SkDLine &ray, SkIntersections *i)
static void line_intersect_ray(const SkPoint a[2], SkScalar, const SkDLine &ray, SkIntersections *i)
static void cubic_intersect_ray(const SkPoint a[4], SkScalar, const SkDLine &ray, SkIntersections *i)

Definition at line 333 of file SkPathOpsCurve.h.

◆ CurveIsVertical

bool(*const CurveIsVertical[])(const SkPoint[], SkScalar, double, double) ( const  SkPoint[],
SkScalar  ,
double  ,
double   
)
static
Initial value:
= {
nullptr,
}
static bool conic_is_vertical(const SkPoint a[3], SkScalar weight, double startT, double endT)
static bool quad_is_vertical(const SkPoint a[3], SkScalar, double startT, double endT)
static bool cubic_is_vertical(const SkPoint a[4], SkScalar, double startT, double endT)
static bool line_is_vertical(const SkPoint a[2], SkScalar, double startT, double endT)

Definition at line 297 of file SkPathOpsCurve.h.

◆ CurvePointAtT

SkPoint(*const CurvePointAtT[])(const SkPoint[], SkScalar, double) ( const  SkPoint[],
SkScalar  ,
double   
)
static
Initial value:
= {
nullptr,
}
static SkPoint fline_xy_at_t(const SkPoint a[2], SkScalar weight, double t)
static SkPoint fconic_xy_at_t(const SkPoint a[3], SkScalar weight, double t)
static SkPoint fcubic_xy_at_t(const SkPoint a[4], SkScalar weight, double t)
static SkPoint fquad_xy_at_t(const SkPoint a[3], SkScalar weight, double t)

Definition at line 180 of file SkPathOpsCurve.h.

◆ CurveSlopeAtT

SkVector(*const CurveSlopeAtT[])(const SkPoint[], SkScalar, double) ( const  SkPoint[],
SkScalar  ,
double   
)
static
Initial value:
= {
nullptr,
}
static SkVector fconic_dxdy_at_t(const SkPoint a[3], SkScalar weight, double t)
static SkVector fcubic_dxdy_at_t(const SkPoint a[4], SkScalar weight, double t)
static SkVector fquad_dxdy_at_t(const SkPoint a[3], SkScalar weight, double t)
static SkVector fline_dxdy_at_t(const SkPoint a[2], SkScalar, double)

Definition at line 260 of file SkPathOpsCurve.h.

◆ Top

SkDPoint(SkDCurve::*const Top[])(const SkPoint curve[], SkScalar cWeight, double tStart, double tEnd, double *topT) ( const SkPoint  curve[],
SkScalar  cWeight,
double  tStart,
double  tEnd,
double *  topT 
)
extern