| Index: src/pathops/SkDCubicIntersection.cpp
|
| diff --git a/src/pathops/SkDCubicIntersection.cpp b/src/pathops/SkDCubicIntersection.cpp
|
| index 511879cd70c2254de6bf13d160fb08f9ac241497..6e049708ac1a046e32bc2a02864447b57e0d11af 100644
|
| --- a/src/pathops/SkDCubicIntersection.cpp
|
| +++ b/src/pathops/SkDCubicIntersection.cpp
|
| @@ -15,11 +15,12 @@
|
| #include "SkTSort.h"
|
|
|
| #if ONE_OFF_DEBUG
|
| -static const double tLimits1[2][2] = {{0.36, 0.37}, {0.63, 0.64}};
|
| +static const double tLimits1[2][2] = {{0.388600450, 0.388600452}, {0.245852802, 0.245852804}};
|
| static const double tLimits2[2][2] = {{-0.865211397, -0.865215212}, {-0.865207696, -0.865208078}};
|
| #endif
|
|
|
| -#define DEBUG_QUAD_PART 0
|
| +#define DEBUG_QUAD_PART ONE_OFF_DEBUG && 1
|
| +#define DEBUG_QUAD_PART_SHOW_SIMPLE DEBUG_QUAD_PART && 0
|
| #define SWAP_TOP_DEBUG 0
|
|
|
| static const int kCubicToQuadSubdivisionDepth = 8; // slots reserved for cubic to quads subdivision
|
| @@ -31,25 +32,27 @@ static int quadPart(const SkDCubic& cubic, double tStart, double tEnd, SkReduceO
|
| // extremely shallow quadratic?
|
| int order = reducer->reduce(quad, SkReduceOrder::kFill_Style);
|
| #if DEBUG_QUAD_PART
|
| - SkDebugf("%s cubic=(%1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g)"
|
| - " t=(%1.17g,%1.17g)\n", __FUNCTION__, cubic[0].fX, cubic[0].fY,
|
| + SkDebugf("%s cubic=(%1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g %1.9g,%1.9g)"
|
| + " t=(%1.9g,%1.9g)\n", __FUNCTION__, cubic[0].fX, cubic[0].fY,
|
| cubic[1].fX, cubic[1].fY, cubic[2].fX, cubic[2].fY,
|
| cubic[3].fX, cubic[3].fY, tStart, tEnd);
|
| - SkDebugf("%s part=(%1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g)"
|
| - " quad=(%1.17g,%1.17g %1.17g,%1.17g %1.17g,%1.17g)\n", __FUNCTION__,
|
| + SkDebugf(" {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n"
|
| + " {{%1.9g,%1.9g}, {%1.9g,%1.9g}, {%1.9g,%1.9g}},\n",
|
| part[0].fX, part[0].fY, part[1].fX, part[1].fY, part[2].fX, part[2].fY,
|
| part[3].fX, part[3].fY, quad[0].fX, quad[0].fY,
|
| quad[1].fX, quad[1].fY, quad[2].fX, quad[2].fY);
|
| - SkDebugf("%s simple=(%1.17g,%1.17g", __FUNCTION__, reducer->fQuad[0].fX, reducer->fQuad[0].fY);
|
| +#if DEBUG_QUAD_PART_SHOW_SIMPLE
|
| + SkDebugf("%s simple=(%1.9g,%1.9g", __FUNCTION__, reducer->fQuad[0].fX, reducer->fQuad[0].fY);
|
| if (order > 1) {
|
| - SkDebugf(" %1.17g,%1.17g", reducer->fQuad[1].fX, reducer->fQuad[1].fY);
|
| + SkDebugf(" %1.9g,%1.9g", reducer->fQuad[1].fX, reducer->fQuad[1].fY);
|
| }
|
| if (order > 2) {
|
| - SkDebugf(" %1.17g,%1.17g", reducer->fQuad[2].fX, reducer->fQuad[2].fY);
|
| + SkDebugf(" %1.9g,%1.9g", reducer->fQuad[2].fX, reducer->fQuad[2].fY);
|
| }
|
| SkDebugf(")\n");
|
| SkASSERT(order < 4 && order > 0);
|
| #endif
|
| +#endif
|
| return order;
|
| }
|
|
|
| @@ -240,7 +243,7 @@ static void intersect(const SkDCubic& cubic1, double t1s, double t1e, const SkDC
|
| i.used(), i.used() > 0 ? i[0][i.used() - 1] : -1);
|
| #endif
|
| }
|
| - intersect(cubic1, c1Min, c1Max, cubic2, c2Min, c2Max, offset, i);
|
| + // intersect(cubic1, c1Min, c1Max, cubic2, c2Min, c2Max, offset, i);
|
| // FIXME: if no intersection is found, either quadratics intersected where
|
| // cubics did not, or the intersection was missed. In the former case, expect
|
| // the quadratics to be nearly parallel at the point of intersection, and check
|
|
|