#include "EdgeWalker_Test.h" #include "Intersection_Tests.h" #include "ShapeOps.h" bool gShowOriginal = true; struct curve { SkPath::Verb verb; SkPoint pts[4]; }; struct curve test1[] = { {SkPath::kQuad_Verb, {{366.608826f, 151.196014f}, {378.803101f, 136.674606f}, {398.164948f, 136.674606f}}}, {SkPath::kLine_Verb, {{354.009216f, 208.816208f}, {393.291473f, 102.232819f}}}, {SkPath::kQuad_Verb, {{359.978058f, 136.581512f}, {378.315979f, 136.581512f}, {388.322723f, 149.613556f}}}, {SkPath::kQuad_Verb, {{364.390686f, 157.898193f}, {375.281769f, 136.674606f}, {396.039917f, 136.674606f}}}, {SkPath::kLine_Verb, {{396.039917f, 136.674606f}, {350, 120}}}, {SkPath::kDone_Verb} }; struct curve* testSet[] = { test1 }; size_t testSet_count = sizeof(testSet) / sizeof(testSet[0]); static void construct() { for (size_t idx = 0; idx < testSet_count; ++idx) { const curve* test = testSet[idx]; SkPath path; bool pathComplete = false; bool first = true; do { if (first) { path.moveTo(test->pts[0].fX, test->pts[0].fY); first = false; } else if (test->verb != SkPath::kDone_Verb) { path.lineTo(test->pts[0].fX, test->pts[0].fY); } switch (test->verb) { case SkPath::kDone_Verb: pathComplete = true; break; case SkPath::kLine_Verb: path.lineTo(test->pts[1].fX, test->pts[1].fY); break; case SkPath::kQuad_Verb: path.quadTo(test->pts[1].fX, test->pts[1].fY, test->pts[2].fX, test->pts[2].fY); break; case SkPath::kCubic_Verb: path.cubicTo(test->pts[1].fX, test->pts[1].fY, test->pts[2].fX, test->pts[2].fY, test->pts[3].fX, test->pts[3].fY); break; } test++; } while (!pathComplete); path.close(); if (gShowOriginal) { showPath(path, NULL); SkDebugf("simplified:\n"); } testSimplifyx(path); } } static void (*tests[])() = { construct, }; static const size_t testCount = sizeof(tests) / sizeof(tests[0]); static void (*firstTest)() = 0; static bool skipAll = false; void MiniSimplify_Test() { if (skipAll) { return; } size_t index = 0; if (firstTest) { while (index < testCount && tests[index] != firstTest) { ++index; } } bool firstTestComplete = false; for ( ; index < testCount; ++index) { (*tests[index])(); firstTestComplete = true; } }