31 int index, minX, maxX, minY, maxY;
32 minX = maxX = minY = maxY = 0;
33 for (index = 1; index < 4; ++index) {
53 if (!tiny(cubicPair.
first()) && !controls_inside(cubicPair.
first())) {
59 if (!tiny(cubicPair.
second()) && !controls_inside(cubicPair.
second())) {
75 RunNotPointDegenerates,
87 int firstTestIndex = 0;
89 run = RunComputedLines;
92 int firstPointDegeneratesTest =
run == RunAll ? 0 :
run == RunPointDegenerates
94 int firstNotPointDegeneratesTest =
run == RunAll ? 0 :
run == RunNotPointDegenerates
96 int firstLinesTest =
run == RunAll ? 0 :
run == RunLines ? firstTestIndex :
SK_MaxS32;
97 int firstNotLinesTest =
run == RunAll ? 0 :
run == RunNotLines ? firstTestIndex :
SK_MaxS32;
98 int firstModEpsilonTest =
run == RunAll ? 0 :
run == RunModEpsilonLines
100 int firstLessEpsilonTest =
run == RunAll ? 0 :
run == RunLessEpsilonLines
102 int firstNegEpsilonTest =
run == RunAll ? 0 :
run == RunNegEpsilonLines
104 int firstQuadraticPointTest =
run == RunAll ? 0 :
run == RunQuadraticPoints
106 int firstQuadraticLineTest =
run == RunAll ? 0 :
run == RunQuadraticLines
108 int firstQuadraticModLineTest =
run == RunAll ? 0 :
run == RunQuadraticModLines
111 int firstComputedLinesTest =
run == RunAll ? 0 :
run == RunComputedLines
121 SkDebugf(
"[%d] pointDegenerates order=%d\n",
static_cast<int>(index), order);
132 SkDebugf(
"[%d] notPointDegenerates order=%d\n",
static_cast<int>(index), order);
137 for (index = firstLinesTest; index <
lines_count; ++index) {
144 SkDebugf(
"[%d] lines order=%d\n",
static_cast<int>(index), order);
148 for (index = firstNotLinesTest; index <
notLines_count; ++index) {
155 SkDebugf(
"[%d] notLines order=%d\n",
static_cast<int>(index), order);
166 SkDebugf(
"[%d] line mod by epsilon order=%d\n",
static_cast<int>(index), order);
177 SkDebugf(
"[%d] line less by epsilon/2 order=%d\n",
static_cast<int>(index), order);
189 SkDebugf(
"[%d] line neg by epsilon/2 order=%d\n",
static_cast<int>(index), order);
201 SkDebugf(
"[%d] point quad order=%d\n",
static_cast<int>(index), order);
213 SkDebugf(
"[%d] line quad order=%d\n",
static_cast<int>(index), order);
225 SkDebugf(
"[%d] line mod quad order=%d\n",
static_cast<int>(index), order);
232 for (index = firstComputedLinesTest; index <
lines_count; ++index) {
235 bool controlsInside = controls_inside(
cubic);
237 SkReduceOrder::kStroke_Style);
238 if (order == 2 && reducer.
fLine[0] == reducer.
fLine[1]) {
239 SkDebugf(
"[%d] line computed ends match order=%d\n",
static_cast<int>(index), order);
242 if (controlsInside) {
247 SkDebugf(
"[%d] line computed ends order=%d\n",
static_cast<int>(index), order);
263 SkDebugf(
"[%d] line computed tight bounds order=%d\n",
static_cast<int>(index), order);
DEF_TEST(PathOpsReduceOrderCubic, reporter)
const size_t quadraticLines_count
const QuadPts quadraticModEpsilonLines[]
const size_t quadraticPoints_count
const size_t quadraticModEpsilonLines_count
const QuadPts quadraticPoints[]
const QuadPts quadraticLines[]
bool ValidCubic(const SkDCubic &cubic)
bool ValidQuad(const SkDQuad &quad)
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
static constexpr int32_t SK_MaxS32
bool AlmostEqualUlps(const SkPoint &pt1, const SkPoint &pt2)
bool approximately_equal(double x, double y)
bool between(double a, double b, double c)
#define REPORTER_ASSERT(r, cond,...)
const CubicPts negEpsilonLines[]
const size_t modEpsilonLines_count
const CubicPts lessEpsilonLines[]
const size_t notPointDegenerates_count
const CubicPts notPointDegenerates[]
const size_t lessEpsilonLines_count
const size_t negEpsilonLines_count
const CubicPts pointDegenerates[]
const CubicPts notLines[]
const CubicPts modEpsilonLines[]
const size_t notLines_count
const size_t pointDegenerates_count
Optional< SkRect > bounds
SkDPoint fPts[kPointCount]
SkDPoint fPts[kPointCount]
void debugSet(const SkDPoint *pts)
SkDCubic debugToCubic() const
int reduce(const SkDCubic &cubic, Quadratics)