Home | History | Annotate | Download | only in pathops

Lines Matching defs:quad

17 static int coincident_line(const SkDQuad& quad, SkDQuad& reduction) {
18 reduction[0] = reduction[1] = quad[0];
26 static int vertical_line(const SkDQuad& quad, SkDQuad& reduction) {
27 reduction[0] = quad[0];
28 reduction[1] = quad[2];
32 static int horizontal_line(const SkDQuad& quad, SkDQuad& reduction) {
33 reduction[0] = quad[0];
34 reduction[1] = quad[2];
38 static int check_linear(const SkDQuad& quad,
40 if (!quad.isLinear(0, 2)) {
44 reduction[0] = quad[0];
45 reduction[1] = quad[2];
55 int SkReduceOrder::reduce(const SkDQuad& quad) {
61 if (quad[minX].fX > quad[index].fX) {
64 if (quad[minY].fY > quad[index].fY) {
67 if (quad[maxX].fX < quad[index].fX) {
70 if (quad[maxY].fY < quad[index].fY) {
75 if (AlmostEqualUlps(quad[index].fX, quad[minX].fX)) {
78 if (AlmostEqualUlps(quad[index].fY, quad[minY].fY)) {
83 // this quad starts and ends at the same place, so never contributes
85 return coincident_line(quad, fQuad);
88 return vertical_line(quad, fQuad);
91 return horizontal_line(quad, fQuad);
93 int result = check_linear(quad, minX, maxX, minY, maxY, fQuad);
97 fQuad = quad;
246 SkPath::Verb SkReduceOrder::Quad(const SkPoint a[3], SkPoint* reducePts) {
247 SkDQuad quad;
248 quad.set(a);
250 int order = reducer.reduce(quad);
251 if (order == 2) { // quad became line
260 SkPath::Verb verb = SkReduceOrder::Quad(c.fPts, reducePts);
277 if (order == 2 || order == 3) { // cubic became line or quad