19e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com/* 29e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * Copyright 2012 Google Inc. 39e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * 49e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * Use of this source code is governed by a BSD-style license that can be 59e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com * found in the LICENSE file. 69e49fb63d355446b91d20ff78ad78b297e89a50dcaryclark@google.com */ 74917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com#include "EdgeWalker_Test.h" 84917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com#include "Intersection_Tests.h" 9198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com#include "SkBitmap.h" 10198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com 11198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.comstatic SkBitmap bitmap; 124917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 134917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyQuad1() { 144917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 154917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 164917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 0); 174917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(3, 2); 184917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(3, 3); 194917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 204917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(1, 0); 214917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 3); 224917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 3); 234917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 3); 244917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 25198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 262e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 272e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 282e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyQuad2() { 292e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 302e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 312e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 322e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 332e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 2); 342e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 352e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 1); 362e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 1); 372e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 1); 382e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 2); 392e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 40198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 412e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 422e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 432e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyQuad3() { 442e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 452e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 462e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 472e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 0); 482e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 2); 492e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 502e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 1); 512e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 1); 522e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(2, 1); 532e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 2); 542e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 55198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 562e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 572e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 582e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyQuad4() { 592e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 602e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 612e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 622e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 0); 632e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(2, 2); 642e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 652e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 662e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(2, 1); 672e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(3, 1); 682e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(3, 3); 692e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 70198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 712e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 722e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 732e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyQuad5() { 742e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 752e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 762e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 772e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 0); 782e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(3, 2); 792e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 802e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 1); 812e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 1); 822e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(2, 1); 832e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 2); 842e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 85198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 862e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 872e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 882e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyQuad6() { 892e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 902e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 912e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 0); 922e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 1); 932e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(3, 3); 942e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 952e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(1, 1); 962e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 1); 972e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 1); 982e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(2, 2); 992e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 100198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 1014917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 1024917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 1034917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void (*simplifyTests[])() = { 1042e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyQuad6, 1052e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyQuad5, 1062e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyQuad4, 1072e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyQuad3, 1082e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyQuad2, 1094917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyQuad1, 1104917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com}; 1114917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 1124917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]); 1134917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 1144917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void (*firstTest)() = 0; 1154917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 1164917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comvoid SimplifyQuadralateralPaths_Test() { 1174917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com size_t index = 0; 1184917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com if (firstTest) { 1194917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com while (index < simplifyTestsCount && simplifyTests[index] != firstTest) { 1204917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com ++index; 1214917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com } 1224917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com } 1234917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com for ( ; index < simplifyTestsCount; ++index) { 1244917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com (*simplifyTests[index])(); 1254917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com } 1264917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 127