diff options
Diffstat (limited to 'tests/PathOpsTestCommon.cpp')
-rw-r--r-- | tests/PathOpsTestCommon.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/PathOpsTestCommon.cpp b/tests/PathOpsTestCommon.cpp index 4356b42414..dd9b347618 100644 --- a/tests/PathOpsTestCommon.cpp +++ b/tests/PathOpsTestCommon.cpp @@ -5,7 +5,11 @@ * found in the LICENSE file. */ #include "PathOpsTestCommon.h" +#include "SkPathOpsBounds.h" #include "SkPathOpsCubic.h" +#include "SkPathOpsLine.h" +#include "SkPathOpsQuad.h" +#include "SkPathOpsTriangle.h" void CubicToQuads(const SkDCubic& cubic, double precision, SkTArray<SkDQuad, true>& quads) { SkTArray<double, true> ts; @@ -24,3 +28,82 @@ void CubicToQuads(const SkDCubic& cubic, double precision, SkTArray<SkDQuad, tru tStart = tEnd; } } + +static bool SkDoubleIsNaN(double x) { + return x != x; +} + +bool ValidBounds(const SkPathOpsBounds& bounds) { + if (SkScalarIsNaN(bounds.fLeft)) { + return false; + } + if (SkScalarIsNaN(bounds.fTop)) { + return false; + } + if (SkScalarIsNaN(bounds.fRight)) { + return false; + } + return !SkScalarIsNaN(bounds.fBottom); +} + +bool ValidCubic(const SkDCubic& cubic) { + for (int index = 0; index < 4; ++index) { + if (!ValidPoint(cubic[index])) { + return false; + } + } + return true; +} + +bool ValidLine(const SkDLine& line) { + for (int index = 0; index < 2; ++index) { + if (!ValidPoint(line[index])) { + return false; + } + } + return true; +} + +bool ValidPoint(const SkDPoint& pt) { + if (SkDoubleIsNaN(pt.fX)) { + return false; + } + return !SkDoubleIsNaN(pt.fY); +} + +bool ValidPoints(const SkPoint* pts, int count) { + for (int index = 0; index < count; ++index) { + if (SkScalarIsNaN(pts[index].fX)) { + return false; + } + if (SkScalarIsNaN(pts[index].fY)) { + return false; + } + } + return true; +} + +bool ValidQuad(const SkDQuad& quad) { + for (int index = 0; index < 3; ++index) { + if (!ValidPoint(quad[index])) { + return false; + } + } + return true; +} + +bool ValidTriangle(const SkDTriangle& triangle) { + for (int index = 0; index < 3; ++index) { + if (!ValidPoint(triangle.fPts[index])) { + return false; + } + } + return true; +} + +bool ValidVector(const SkDVector& v) { + if (SkDoubleIsNaN(v.fX)) { + return false; + } + return !SkDoubleIsNaN(v.fY); +} |