| Index: tests/PathOpsAngleIdeas.cpp
|
| diff --git a/tests/PathOpsAngleIdeas.cpp b/tests/PathOpsAngleIdeas.cpp
|
| index 9d1b5994b2da91dde992ee0ed23108ed9d7a3783..a408a3c3b13d0ab9dc9edc1eef2632b63169b618 100755
|
| --- a/tests/PathOpsAngleIdeas.cpp
|
| +++ b/tests/PathOpsAngleIdeas.cpp
|
| @@ -77,7 +77,7 @@ static void orderQuads(skiatest::Reporter* reporter, const SkDQuad& quad, double
|
| double s = r * SK_ScalarTanPIOver8;
|
| double m = r * SK_ScalarRoot2Over2;
|
| // construct circle from quads
|
| - const SkDQuad circle[8] = {{{{ r, 0}, { r, -s}, { m, -m}}},
|
| + const QuadPts circle[8] = {{{{ r, 0}, { r, -s}, { m, -m}}},
|
| {{{ m, -m}, { s, -r}, { 0, -r}}},
|
| {{{ 0, -r}, {-s, -r}, {-m, -m}}},
|
| {{{-m, -m}, {-r, -s}, {-r, 0}}},
|
| @@ -86,7 +86,9 @@ static void orderQuads(skiatest::Reporter* reporter, const SkDQuad& quad, double
|
| {{{ 0, r}, { s, r}, { m, m}}},
|
| {{{ m, m}, { r, s}, { r, 0}}}};
|
| for (int octant = 0; octant < 8; ++octant) {
|
| - double t = testArc(reporter, quad, circle[octant], octant);
|
| + SkDQuad cQuad;
|
| + cQuad.debugSet(circle[octant].fPts);
|
| + double t = testArc(reporter, quad, cQuad, octant);
|
| if (t < 0) {
|
| continue;
|
| }
|
| @@ -332,6 +334,9 @@ static bool bruteMinT(skiatest::Reporter* reporter, const SkDQuad& quad1, const
|
| rStep /= 2;
|
| } while (rStep > FLT_EPSILON);
|
| if (bestCCW < 0) {
|
| + if (bestR >= maxRadius) {
|
| + SkDebugf("");
|
| + }
|
| REPORTER_ASSERT(reporter, bestR < maxRadius);
|
| return false;
|
| }
|
| @@ -555,12 +560,15 @@ static void testQuadAngles(skiatest::Reporter* reporter, const SkDQuad& quad1, c
|
| DEF_TEST(PathOpsAngleOverlapHullsOne, reporter) {
|
| SkChunkAlloc allocator(4096);
|
| // gPathOpsAngleIdeasVerbose = true;
|
| - const SkDQuad quads[] = {
|
| + const QuadPts quads[] = {
|
| {{{939.4808349609375, 914.355224609375}, {-357.7921142578125, 590.842529296875}, {736.8936767578125, -350.717529296875}}},
|
| {{{939.4808349609375, 914.355224609375}, {-182.85418701171875, 634.4552001953125}, {-509.62615966796875, 576.1182861328125}}}
|
| };
|
| for (int index = 0; index < (int) SK_ARRAY_COUNT(quads); index += 2) {
|
| - testQuadAngles(reporter, quads[index], quads[index + 1], 0, &allocator);
|
| + SkDQuad quad0, quad1;
|
| + quad0.debugSet(quads[index].fPts);
|
| + quad1.debugSet(quads[index + 1].fPts);
|
| + testQuadAngles(reporter, quad0, quad1, 0, &allocator);
|
| }
|
| }
|
|
|
| @@ -573,23 +581,26 @@ DEF_TEST(PathOpsAngleOverlapHulls, reporter) {
|
| for (int index = 0; index < 100000; ++index) {
|
| if (index % 1000 == 999) SkDebugf(".");
|
| SkDPoint origin = {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)};
|
| - SkDQuad quad1 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| + QuadPts quad1 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)}}};
|
| - if (quad1[0] == quad1[2]) {
|
| + if (quad1.fPts[0] == quad1.fPts[2]) {
|
| continue;
|
| }
|
| - SkDQuad quad2 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| + QuadPts quad2 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)}}};
|
| - if (quad2[0] == quad2[2]) {
|
| + if (quad2.fPts[0] == quad2.fPts[2]) {
|
| continue;
|
| }
|
| SkIntersections i;
|
| - i.intersect(quad1, quad2);
|
| + SkDQuad q1, q2;
|
| + q1.debugSet(quad1.fPts);
|
| + q2.debugSet(quad2.fPts);
|
| + i.intersect(q1, q2);
|
| REPORTER_ASSERT(reporter, i.used() >= 1);
|
| if (i.used() > 1) {
|
| continue;
|
| }
|
| - testQuadAngles(reporter, quad1, quad2, index, &allocator);
|
| + testQuadAngles(reporter, q1, q2, index, &allocator);
|
| }
|
| }
|
|
|
| @@ -603,29 +614,32 @@ DEF_TEST(PathOpsAngleBruteT, reporter) {
|
| SkDEBUGCODE(int smallIndex);
|
| for (int index = 0; index < 100000; ++index) {
|
| SkDPoint origin = {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)};
|
| - SkDQuad quad1 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| + QuadPts quad1 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)}}};
|
| - if (quad1[0] == quad1[2]) {
|
| + if (quad1.fPts[0] == quad1.fPts[2]) {
|
| continue;
|
| }
|
| - SkDQuad quad2 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| + QuadPts quad2 = {{origin, {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)},
|
| {ran.nextRangeF(-1000, 1000), ran.nextRangeF(-1000, 1000)}}};
|
| - if (quad2[0] == quad2[2]) {
|
| + if (quad2.fPts[0] == quad2.fPts[2]) {
|
| continue;
|
| }
|
| + SkDQuad q1, q2;
|
| + q1.debugSet(quad1.fPts);
|
| + q2.debugSet(quad2.fPts);
|
| SkIntersections i;
|
| - i.intersect(quad1, quad2);
|
| + i.intersect(q1, q2);
|
| REPORTER_ASSERT(reporter, i.used() >= 1);
|
| if (i.used() > 1) {
|
| continue;
|
| }
|
| TRange lowerRange, upperRange;
|
| - bool result = bruteMinT(reporter, quad1, quad2, &lowerRange, &upperRange);
|
| + bool result = bruteMinT(reporter, q1, q2, &lowerRange, &upperRange);
|
| REPORTER_ASSERT(reporter, result);
|
| double min = SkTMin(upperRange.t1, upperRange.t2);
|
| if (smaller > min) {
|
| - small[0] = quad1;
|
| - small[1] = quad2;
|
| + small[0] = q1;
|
| + small[1] = q2;
|
| SkDEBUGCODE(smallIndex = index);
|
| smaller = min;
|
| }
|
| @@ -637,7 +651,7 @@ DEF_TEST(PathOpsAngleBruteT, reporter) {
|
|
|
| DEF_TEST(PathOpsAngleBruteTOne, reporter) {
|
| // gPathOpsAngleIdeasVerbose = true;
|
| - const SkDQuad quads[] = {
|
| + const QuadPts qPts[] = {
|
| {{{-770.8492431640625, 948.2369384765625}, {-853.37066650390625, 972.0301513671875}, {-200.62042236328125, -26.7174072265625}}},
|
| {{{-770.8492431640625, 948.2369384765625}, {513.602783203125, 578.8681640625}, {960.641357421875, -813.69757080078125}}},
|
| {{{563.8267822265625, -107.4566650390625}, {-44.67724609375, -136.57452392578125}, {492.3856201171875, -268.79644775390625}}},
|
| @@ -646,6 +660,10 @@ DEF_TEST(PathOpsAngleBruteTOne, reporter) {
|
| {{{598.857421875, 846.345458984375}, {715.7142333984375, 955.3599853515625}, {-919.9478759765625, 691.611328125}}},
|
| };
|
| TRange lowerRange, upperRange;
|
| + SkDQuad quads[SK_ARRAY_COUNT(qPts)];
|
| + for (int index = 0; index < (int) SK_ARRAY_COUNT(qPts); ++index) {
|
| + quads[index].debugSet(qPts[index].fPts);
|
| + }
|
| bruteMinT(reporter, quads[0], quads[1], &lowerRange, &upperRange);
|
| bruteMinT(reporter, quads[2], quads[3], &lowerRange, &upperRange);
|
| bruteMinT(reporter, quads[4], quads[5], &lowerRange, &upperRange);
|
| @@ -666,7 +684,7 @@ We need to determine how short is extremely short. Move the control point a set
|
| the largest length to determine how stable the curve is vis-a-vis the initial tangent.
|
| */
|
|
|
| -static const SkDQuad extremeTests[][2] = {
|
| +static const QuadPts extremeTests[][2] = {
|
| {
|
| {{{-708.0077926931004,-154.61669472244046},
|
| {-707.9234268635319,-154.30459999551294},
|
| @@ -793,8 +811,11 @@ DEF_TEST(PathOpsAngleExtreme, reporter) {
|
| }
|
| double maxR = SK_ScalarMax;
|
| for (int index = 0; index < (int) SK_ARRAY_COUNT(extremeTests); ++index) {
|
| - const SkDQuad& quad1 = extremeTests[index][0];
|
| - const SkDQuad& quad2 = extremeTests[index][1];
|
| + const QuadPts& qu1 = extremeTests[index][0];
|
| + const QuadPts& qu2 = extremeTests[index][1];
|
| + SkDQuad quad1, quad2;
|
| + quad1.debugSet(qu1.fPts);
|
| + quad2.debugSet(qu2.fPts);
|
| if (gPathOpsAngleIdeasVerbose) {
|
| SkDebugf("%s %d\n", __FUNCTION__, index);
|
| }
|
|
|