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 */ 7cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com#include "EdgeWalker_Test.h" 8cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com#include "Intersection_Tests.h" 9198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com#include "SkBitmap.h" 10198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com 11198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.comstatic SkBitmap bitmap; 12cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 13cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle() { 14cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 15cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.setFillType(SkPath::kWinding_FillType); 16cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(10,10); // triangle |\ . 17cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(10,30); // |_\ . 18cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,30); 19cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 20cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(20,10); // triangle /| 21cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(10,30); // /_| 22cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,30); 23cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 24198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); // expect |\/| 25d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com // |__| 26cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 27cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 28cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle3() { 29cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 30cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 31cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 32cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 33cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 34cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 35cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 36cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(3, 1); 37cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 38198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 39cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 40cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 41cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle4() { 42cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 43cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 44cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 45cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 46cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 47cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 48cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 49cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 1); 50cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 51198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 52cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 53cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 54cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle5() { 55cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 56cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 57cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 58cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 59cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 60cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 61cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 62cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 1); 63cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 64198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 65cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 66cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 67cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle6() { 68cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 69cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 70cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 71cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 72cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 73cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 74cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 75cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 76cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(3, 1); 77cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 78cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 79198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 80cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 81cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 82cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle7() { 83cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 84cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 85cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 86cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 87cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 88cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 89cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 90cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 91cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 2); 92cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 93cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 94198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 95cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 96cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 97cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle8() { 98cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 99cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 100cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 101cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 102cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 103cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 104cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 1); 105cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 2); 106cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 3); 107cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 108cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 109198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 110cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 111cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 112cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle9() { 113cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 114cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 115cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 116cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 117cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 118cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 119cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 120cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 121cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 1); 122cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 123cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 124198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 125cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 126cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 127cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle10() { 128cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 129cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 130cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 131cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 132cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 133cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 134cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 135cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 0); 136cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 137cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 138cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 139198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 140cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 141cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 142cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle11() { 143cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 144cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 145cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 146cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 2); 147cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 148cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 149cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 150cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 1); 151cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 2); 152cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 153cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 154198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 155cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 156cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 157cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle12() { 158cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 159cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 160cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 161cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 2); 162cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 163cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 164cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(2, 0); 165cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 3); 166cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 167cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 0); 168cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 169198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 170cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 171cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 172cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle13() { 173cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 174cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 175cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 176cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 3); 177cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 178cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 179cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(3, 0); 180cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 3); 181cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 1); 182cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(3, 0); 183cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 184198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 185cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 186cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 187cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle14() { 188cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 189cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 190cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 191cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 192cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 193cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 194cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 195cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 0); 196cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 197cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 0); 198cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 199198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 200cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 201cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 202cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle15() { 203cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 204cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.setFillType(SkPath::kEvenOdd_FillType); 205cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 206cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 207cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 2); 208cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 209cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 210cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 211cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(2, 2); 212cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 213198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 214cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 215cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 216cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle16() { 217cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 218cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 219cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 220cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 2); 221cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 222cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 223cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 224cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 3); 225cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 226198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 227cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 228cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 229cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle17() { 230cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 231cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 232cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 233cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 2); 234cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 235cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(0, 0); 236cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(1, 3); 237cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(0, 1); 238cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 239198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 240cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 241d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 2424917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyTriangle18() { 2434917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 2444917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 2454917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 1); 2464917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 2); 2474917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 2484917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(1, 0); 2494917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 1); 2504917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 3); 2514917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 252198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 2534917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 2544917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 2554917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyTriangle19() { 2564917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 2574917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.setFillType(SkPath::kEvenOdd_FillType); 2584917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 2594917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 1); 2604917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(3, 2); 2614917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 2624917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 2634917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 1); 2644917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(2, 1); 2654917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 266198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 2674917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 2684917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 2694917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyTriangle20() { 2704917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 2714917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 2724917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(2, 1); 2734917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 3); 2744917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 2754917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(2, 0); 2764917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(3, 2); 2774917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 3); 2784917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 279198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 2804917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 2814917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 2824917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyTriangle21() { 2834917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 2844917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 2854917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 0); 2864917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 2); 2874917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 2884917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(2, 0); 2894917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(2, 1); 2904917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 3); 2914917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 292198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 2934917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 2944917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 2954917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyDegenerateTriangle1() { 2964917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 2974917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 2984917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 0); 2994917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 0); 3004917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 3014917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 3024917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 0); 3034917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(0, 0); 3044917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 305198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 3064917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 3074917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 3084917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.comstatic void testSimplifyDegenerateTriangle2() { 3094917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com SkPath path, out; 3104917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(0, 0); 3114917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(1, 1); 3124917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(2, 2); 3134917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 3144917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.moveTo(1, 0); 3154917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(2, 2); 3164917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.lineTo(3, 3); 3174917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com path.close(); 318198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 3194917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com} 3204917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com 321cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyWindingParallelogram() { 322cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 323cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.setFillType(SkPath::kWinding_FillType); 324d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com path.moveTo(20,10); // parallelogram _ 325cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(30,30); // \ \ . 326cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(40,30); // \_\ . 327cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(30,10); 328cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 329cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(20,10); // parallelogram _ 330cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(10,30); // / / 331cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,30); // /_/ 332cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(30,10); 333cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 334198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); // expect _ 335d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com // / \ . 3362e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} // /___\ . 337cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 338cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyXorParallelogram() { 339cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 340cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.setFillType(SkPath::kEvenOdd_FillType); 341d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com path.moveTo(20,10); // parallelogram _ 342cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(30,30); // \ \ . 343cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(40,30); // \_\ . 344cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(30,10); 345cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 346cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(20,10); // parallelogram _ 347cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(10,30); // / / 348cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,30); // /_/ 349cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(30,10); 350cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 351198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); // expect _ 3522e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} // \ / 353cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 354cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testSimplifyTriangle2() { 355cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath path, out; 356cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.setFillType(SkPath::kWinding_FillType); 357cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.moveTo(10,10); // triangle |\ . 358cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(10,30); // |_\ . 359cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,30); 360cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.close(); 361d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com path.moveTo(10,10); // triangle _ 362cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,10); // \ | 363cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com path.lineTo(20,30); // \| 3642e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); // _ 365198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); // expect | | 3662e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} // |_| 367cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 368198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com#if 0 369cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void testPathTriangleRendering() { 370cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkPath one, two; 371cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com one.moveTo(0, 0); 372cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com one.lineTo(3, 3); 373cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com one.lineTo(0, 3); 374cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com one.lineTo(1, 2); 375cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com one.close(); 376b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com for (float x = .1f; x <= 2.9ff; x += .1f) { 377cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com SkDebugf("%s x=%g\n", __FUNCTION__, x); 378cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.moveTo(0, 0); 379cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.lineTo(x, x); 380cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.lineTo(3, 3); 381cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.lineTo(0, 3); 382cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.lineTo(1, 2); 383cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.close(); 384cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com comparePaths(one, two); 385cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com two.reset(); 386cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com } 387cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 388198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com#endif 389cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 390752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.comstatic void simplify(const char* functionName, const SkPath& path, 391752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com bool fill, SkPath& out) { 392198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com if (false) SkDebugf("%s\n", functionName); 393752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(path, fill, out); 394752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com} 395752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com 3962e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifySkinnyTriangle1() { 3972e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com for (int x = 1; x < 255; ++x) { 3982e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 3992e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo((x * 101) % 10, 0); 4002e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 91) % 10, 1000); 4012e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 71) % 10, 2000); 4022e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 51) % 10, 3000); 4032e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 4042e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo((x * 101) % 20, 0); 4052e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 91) % 20, 1000); 4062e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 71) % 20, 2000); 4072e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 51) % 20, 3000); 4082e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 4092e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo((x * 101) % 30, 0); 4102e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 91) % 30, 1000); 4112e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 71) % 30, 2000); 4122e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo((x * 51) % 30, 3000); 4132e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 414752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(path, true, out); 4152e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com } 4162e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 4172e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 4182e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifySkinnyTriangle2() { 4192e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 4202e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com#if 01 421b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(591.091064f, 627.534851f); 422b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(541.088135f, 560.707642f); 423b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(491.085175f, 493.880310f); 424b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(441.082214f, 427.053101f); 425b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com//path.lineTo(591.091064f, 627.534851f); 4262e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.compath.close(); 4272e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com#endif 428b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(317.093445f, 592.013306f); 429b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(366.316162f, 542.986572f); 430b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(416.051514f, 486.978577f); 431b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(465.786865f, 430.970581f); 432b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com//path.lineTo(317.093445f, 592.013306f); 4332e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.compath.close(); 4342e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com#if 0 435b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(289.392517f, 517.138489f); 436b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(249.886078f, 508.598022f); 437b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(217.110916f, 450.916443f); 438b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(196.621033f, 394.917633f); 439b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com//path.lineTo(289.392517f, 517.138489f); 4402e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.compath.close(); 4412e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com#endif 442752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 4432e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 4442e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 4452e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifySkinnyTriangle3() { 4462e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 447b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.moveTo(591, 627.534851f); 448b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.lineTo(541, 560.707642f); 449b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.lineTo(491, 493.880310f); 450b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.lineTo(441, 427.053101f); 4512e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 452b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.moveTo(317, 592.013306f); 453b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.lineTo(366, 542.986572f); 454b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.lineTo(416, 486.978577f); 455b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.com path.lineTo(465, 430.970581f); 4562e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 457752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 4582e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 4592e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 4602e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifySkinnyTriangle4() { 4612e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 462b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(572.655212f, 614.959961f); 463b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(524.618896f, 549.339600f); 464b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(476.582581f, 483.719269f); 465b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(428.546265f, 418.098938f); 466b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(572.655212f, 614.959961f); 467b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 468b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(312.166382f, 583.723083f); 469b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(361.047791f, 529.824219f); 470b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(409.929230f, 475.925354f); 471b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(458.810669f, 422.026520f); 472b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(312.166382f, 583.723083f); 473b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 474b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(278.742737f, 508.065643f); 475b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(241.475800f, 493.465118f); 476b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(210.344177f, 437.315125f); 477b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(197.019455f, 383.794556f); 478b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(278.742737f, 508.065643f); 4792e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.compath.close(); 480752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 4812e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 4822e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 4832e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifySkinnyTriangle5() { 4842e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 485b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(554.690613f, 602.286072f); 486b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(508.590057f, 537.906250f); 487b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(462.489441f, 473.526520f); 488b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(416.388855f, 409.146729f); 489b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(554.690613f, 602.286072f); 490b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 491b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(307.216949f, 575.189270f); 492b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(355.826965f, 516.804688f); 493b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(403.815918f, 464.990753f); 494b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(451.804871f, 413.176819f); 495b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(307.216949f, 575.189270f); 496b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 497b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(271.998901f, 521.301025f); 498b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(234.619705f, 499.687683f); 499b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(203.059692f, 441.332336f); 500b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(195.994370f, 386.856506f); 501b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(271.998901f, 521.301025f); 5022e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.compath.close(); 503752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 5042e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 5052e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 506752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.comstatic void testSimplifySkinnyTriangle6() { 507752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com SkPath path, out; 508b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(591.091064f, 627.534851f); 509b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(541.088135f, 560.707642f); 510b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(491.085175f, 493.880310f); 511b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(441.082214f, 427.053101f); 512b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(591.091064f, 627.534851f); 513b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 514b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(317.093445f, 592.013306f); 515b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(366.316162f, 542.986572f); 516b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(416.051514f, 486.978577f); 517b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(465.786865f, 430.970581f); 518b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(317.093445f, 592.013306f); 519b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 520b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(289.392517f, 517.138489f); 521b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(249.886078f, 508.598022f); 522b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(217.110916f, 450.916443f); 523b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(196.621033f, 394.917633f); 524b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(289.392517f, 517.138489f); 525752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 526752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 527752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com} 5282e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 5292e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyTriangle22() { 5302e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 5312e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 5322e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 0); 5332e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 2); 5342e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 5352e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(1, 0); 5362e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 2); 5372e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 1); 5382e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 539198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 5402e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 5412e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 5422e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyTriangle23() { 5432e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 5442e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 5452e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 5462e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 5472e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 5482e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 5492e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 1); 5502e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 2); 5512e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 552198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 5532e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 5542e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 5552e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.comstatic void testSimplifyTriangle24() { 5562e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com SkPath path, out; 5572e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 5582e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 0); 5592e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 1); 5602e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 5612e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.moveTo(0, 0); 5622e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(1, 0); 5632e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.lineTo(0, 1); 5642e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com path.close(); 565198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com testSimplify(path, true, out, bitmap); 5662e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com} 5672e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com 568752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.comstatic void testSimplifySkinnyTriangle7() { 569752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com SkPath path, out; 570b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(487.502319f, 550.811279f); 571b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(448.826050f, 491.720123f); 572b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(410.149780f, 432.628967f); 573b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(371.473572f, 373.537781f); 574b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(487.502319f, 550.811279f); 575b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 576b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(295.817108f, 532.655579f); 577b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(342.896271f, 485.912292f); 578b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(389.975433f, 439.169006f); 579b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(437.054596f, 392.425781f); 580b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(295.817108f, 532.655579f); 581b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 582b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(239.726822f, 575.025269f); 583b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(204.117569f, 521.429688f); 584b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(171.275452f, 454.110382f); 585b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(193.328583f, 397.859497f); 586b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(239.726822f, 575.025269f); 587752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 588752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 589752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com} 590752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com 591752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.comstatic void testSimplifySkinnyTriangle8() { 592752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com SkPath path, out; 593b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(441.943115f, 511.678040f); 594b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(408.487549f, 456.880920f); 595b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(375.031952f, 402.083801f); 596b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(341.576385f, 347.286682f); 597b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(441.943115f, 511.678040f); 598b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 599b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(297.548492f, 557.246704f); 600b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(350.768494f, 507.627014f); 601b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(403.988525f, 458.007385f); 602b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(457.208527f, 408.387695f); 603b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(297.548492f, 557.246704f); 604b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 605b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(209.857895f, 615.802979f); 606b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(178.249481f, 534.230347f); 607b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(144.905640f, 460.056824f); 608b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(192.953125f, 404.972900f); 609b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(209.857895f, 615.802979f); 610752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 611752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 612752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com} 613752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com 614752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.comstatic void testSimplifySkinnyTriangle9() { 615752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com SkPath path, out; 616b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(439.867065f, 528.291931f); 617b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(405.413025f, 469.107178f); 618b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(370.958954f, 409.922363f); 619b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(336.504883f, 350.737610f); 620b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(439.867065f, 528.291931f); 621752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 622b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(298.922455f, 573.251953f); 623b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(356.360962f, 521.905090f); 624b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(413.799438f, 470.558228f); 625b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(471.237915f, 419.211365f); 626b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(298.922455f, 573.251953f); 627752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 628b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(187.200775f, 643.035156f); 629b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(159.713165f, 540.993774f); 630b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(126.257164f, 462.198517f); 631b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(193.534012f, 409.266235f); 632b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(187.200775f, 643.035156f); 633752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 634752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 635752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 636752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com} 637752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com 638752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.comstatic void testSimplifySkinnyTriangle10() { 639752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com SkPath path, out; 640752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com#if 0 641b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(99.270325f, 239.365234f); 642b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(105.967056f, 173.361206f); 643b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(148.821381f, 141.309891f); 644b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(159.101013f, 189.235138f); 645b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(99.270325f, 239.365234f); 646752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 647752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com#endif 648b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(213.673737f, 413.292938f); 649b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(225.200134f, 343.616821f); 650b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(236.726532f, 273.940704f); 651b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(219.386414f, 231.373322f); 652b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(213.673737f, 413.292938f); 653b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 654b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(43.485352f, 308.984497f); 655b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(122.610657f, 305.950134f); 656b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(201.735962f, 302.915802f); 657b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(280.861267f, 299.881470f); 658b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(43.485352f, 308.984497f); 659752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.compath.close(); 660752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com simplify(__FUNCTION__, path, true, out); 661752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com} 662752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com 663d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.comstatic void testSimplifySkinnyTriangle11() { 664d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com SkPath path, out; 665b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(-177.878387f, 265.368988f); 666b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-254.415771f, 303.709961f); 667b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-317.465363f, 271.325562f); 668b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-374.520386f, 207.507660f); 669b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-177.878387f, 265.368988f); 670b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 671b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(-63.582489f, -3.679123f); 672b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-134.496841f, 26.434566f); 673b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-205.411209f, 56.548256f); 674b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-276.325562f, 86.661942f); 675b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-63.582489f, -3.679123f); 676b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 677b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(-57.078423f, 162.633453f); 678b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-95.963928f, 106.261139f); 679b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-134.849457f, 49.888824f); 680b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-173.734955f, -6.483480f); 681b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-57.078423f, 162.633453f); 682d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.compath.close(); 683d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com simplify(__FUNCTION__, path, true, out); 684d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com} 685d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com 686d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.comstatic void testSimplifySkinnyTriangle12() { 687d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com SkPath path, out; 688b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(98.666489f, -94.295059f); 689b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(156.584320f, -61.939133f); 690b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(174.672974f, -12.343765f); 691b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(158.622345f, 52.028267f); 692b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(98.666489f, -94.295059f); 693b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 694b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(-133.225616f, -48.622055f); 695b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-73.855499f, -10.375397f); 696b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-14.485367f, 27.871277f); 697b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(44.884750f, 66.117935f); 698b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-133.225616f, -48.622055f); 699b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 700b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo( 9.030045f, -163.413132f); 701b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-19.605331f, -89.588760f); 702b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-48.240707f, -15.764404f); 703b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(-76.876053f, 58.059944f); 704b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo( 9.030045f, -163.413132f); 705d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.compath.close(); 706d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com simplify(__FUNCTION__, path, true, out); 707d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com} 708d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com 709d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.comstatic void testSimplifySkinnyTriangle13() { 710d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com SkPath path, out; 711b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(340.41568f, -170.97171f); 712b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(418.846893f, -142.428329f); 713b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(497.278107f, -113.884933f); 714b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(449.18222f, -45.6723022f); 715b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(340.41568f, -170.97171f); 716b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.close(); 717b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.moveTo(326.610535f, 34.0393639f); 718b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(371.334595f, -14.9620667f); 719b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(416.058624f, -63.9634857f); 720b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(460.782654f, -112.96492f); 721b45a1b46ee25e9b19800b028bb1ca925212ac7b4caryclark@google.compath.lineTo(326.610535f, 34.0393639f); 722d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.compath.close(); 723d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com simplify(__FUNCTION__, path, true, out); 724d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com} 725d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com 726cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic void (*simplifyTests[])() = { 727d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com testSimplifySkinnyTriangle13, 728d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com testSimplifySkinnyTriangle12, 729d88e0894d0156f4d427b812fec69bfba3eec7a8dcaryclark@google.com testSimplifySkinnyTriangle11, 730752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com testSimplifySkinnyTriangle10, 731752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com testSimplifySkinnyTriangle9, 732752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com testSimplifySkinnyTriangle8, 733752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com testSimplifySkinnyTriangle7, 734752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com testSimplifySkinnyTriangle6, 7352e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifySkinnyTriangle5, 7362e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifySkinnyTriangle4, 7372e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifySkinnyTriangle3, 7382e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifySkinnyTriangle2, 7392e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifySkinnyTriangle1, 7402e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyTriangle24, 7412e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyTriangle23, 7422e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com testSimplifyTriangle22, 7434917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyDegenerateTriangle2, 7444917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyDegenerateTriangle1, 7454917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyTriangle21, 7464917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyTriangle20, 7474917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyTriangle19, 7484917f17bf6bd8bff7f4b03717dcb02561cf227c9caryclark@google.com testSimplifyTriangle18, 749cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle17, 750cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle16, 751cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle15, 752cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle14, 753cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle13, 754cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle12, 755cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle11, 756cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle10, 757cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle7, 758cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle9, 759cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle8, 760cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle6, 761cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle5, 762cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle4, 763cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle3, 764cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle, 765cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyTriangle2, 766cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyWindingParallelogram, 767cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com testSimplifyXorParallelogram, 768198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com// testPathTriangleRendering, 769cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com}; 770cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 771cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comstatic size_t simplifyTestsCount = sizeof(simplifyTests) / sizeof(simplifyTests[0]); 772cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 773a5764233aa6b207c4169fff7fccae567a160a0fdcaryclark@google.comstatic void (*firstTest)() = testSimplifySkinnyTriangle12; 774cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com 775cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.comvoid SimplifyPolygonPaths_Test() { 776cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com size_t index = 0; 777cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com if (firstTest) { 778cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com while (index < simplifyTestsCount && simplifyTests[index] != firstTest) { 779cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com ++index; 780cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com } 781cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com } 7822e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com bool firstTestComplete = false; 783cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com for ( ; index < simplifyTestsCount; ++index) { 784cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com (*simplifyTests[index])(); 785752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com if (simplifyTests[index] == testSimplifySkinnyTriangle2) { 786198e054b33051a6cd5f606ccbc8d539cefc5631fcaryclark@google.com if (false) SkDebugf("%s last fast skinny test\n", __FUNCTION__); 787752b60e633a349c5b9f7bcc6a28b8064fc77bb41caryclark@google.com } 7882e7f4c810dc717383df42d27bdba862514ab6d51caryclark@google.com firstTestComplete = true; 789cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com } 790cd4421df5012b75c792c6c8bf2c5ee0410921c15caryclark@google.com} 791