Index: tests/PathOpsTestCommon.cpp |
diff --git a/tests/PathOpsTestCommon.cpp b/tests/PathOpsTestCommon.cpp |
index 4356b42414774c327751f33228072a6883476f9f..dd9b34761826bab12db19a45167ab7d4f358ed79 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); |
+} |