blob: ca86439a9c2b8f52edeb519e0b288e2ef481adfe [file] [log] [blame]
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7#include "PathOpsExtendedTest.h"
8
9#define TEST(name) { name, #name }
10
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000011static void skpcheeseandburger_com225(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +000012 SkPath path;
13 path.setFillType(SkPath::kEvenOdd_FillType);
14 path.moveTo(555, 468);
15 path.lineTo(555, 362);
16 path.lineTo(872, 362);
17 path.lineTo(872, 468);
18 path.lineTo(555, 468);
19 path.close();
20 SkPath pathB;
21 pathB.setFillType(SkPath::kWinding_FillType);
22 pathB.moveTo(859.11792f, 397.320343f);
23 pathB.cubicTo(855.523071f, 399.691284f, 853.721191f, 402.40863f, 853.721191f, 405.552216f);
24 pathB.cubicTo(853.721191f, 407.911163f, 854.727478f, 410.115387f, 857.043518f, 412.252716f);
25 pathB.cubicTo(859.920532f, 414.916138f, 862.704773f, 417.086426f, 864.679382f, 418.852386f);
26 pathB.cubicTo(866.382446f, 420.371765f, 867.19104f, 422.108795f, 867.19104f, 423.506378f);
27 pathB.cubicTo(867.19104f, 424.551605f, 866.741821f, 425.539886f, 865.935242f, 426.281616f);
28 pathB.cubicTo(865.250366f, 426.910553f, 864.662415f, 427.339813f, 864.139282f, 427.4646f);
29 pathB.cubicTo(863.536377f, 427.605347f, 862.259521f, 426.491272f, 860.366821f, 424.208191f);
30 pathB.cubicTo(858.345276f, 421.770355f, 857.317017f, 419.733856f, 857.317017f, 417.98587f);
31 pathB.cubicTo(857.317017f, 417.198212f, 857.942993f, 415.930389f, 857.942993f, 415.930389f);
32 pathB.cubicTo(857.942993f, 415.930389f, 852.106018f, 421.296173f, 852.279663f, 422.549042f);
33 pathB.cubicTo(852.462402f, 423.890747f, 853.669312f, 425.703613f, 855.876465f, 428.252258f);
34 pathB.cubicTo(858.038818f, 430.754944f, 859.4953f, 431.840088f, 860.190125f, 431.594513f);
35 pathB.cubicTo(862.571045f, 430.754944f, 865.48999f, 429.237549f, 868.44397f, 427.018372f);
36 pathB.cubicTo(870.505371f, 425.470032f, 871.582581f, 423.534332f, 871.582581f, 421.001678f);
37 pathB.cubicTo(871.582581f, 417.945923f, 870.056213f, 415.171692f, 867.015381f, 412.640045f);
38 pathB.cubicTo(863.683105f, 409.872803f, 861.445923f, 408.027954f, 860.551514f, 407.140503f);
39 pathB.cubicTo(858.660767f, 405.264709f, 857.765259f, 403.50174f, 857.765259f, 402.187988f);
40 pathB.cubicTo(857.765259f, 401.141785f, 858.339355f, 400.394073f, 859.476318f, 399.925873f);
41 pathB.cubicTo(860.004395f, 399.704254f, 861.270264f, 400.515869f, 863.156006f, 402.36969f);
42 pathB.cubicTo(865.094727f, 404.28241f, 866.203796f, 405.565186f, 866.383484f, 406.130219f);
43 pathB.cubicTo(868.250244f, 404.305359f, 869.179688f, 403.397919f, 871.046509f, 401.58902f);
44 pathB.cubicTo(868.26825f, 399.296967f, 864.431824f, 394.705841f, 863.156006f, 394.600037f);
45 pathB.cubicTo(863.145996f, 394.600037f, 863.136108f, 394.59903f, 863.126099f, 394.59903f);
46 pathB.cubicTo(862.352417f, 394.598022f, 859.909607f, 396.79425f, 859.11792f, 397.320343f);
47 pathB.moveTo(832.164246f, 394.307526f);
48 pathB.cubicTo(832.451721f, 394.425323f, 832.598511f, 394.486206f, 832.886963f, 394.605011f);
49 pathB.cubicTo(834.078979f, 395.474518f, 834.674927f, 395.90979f, 835.867859f, 396.781281f);
50 pathB.cubicTo(836.502808f, 397.325348f, 836.863159f, 398.000183f, 836.863159f, 398.964539f);
51 pathB.lineTo(836.863159f, 419.740845f);
52 pathB.cubicTo(836.863159f, 420.876923f, 836.319092f, 422.17868f, 835.055298f, 423.617188f);
53 pathB.cubicTo(836.39502f, 424.512665f, 837.063843f, 424.961884f, 838.39856f, 425.864349f);
54 pathB.cubicTo(839.477661f, 426.578125f, 841.37439f, 427.27594f, 842.275879f, 427.443634f);
55 pathB.cubicTo(842.999634f, 427.574402f, 843.82019f, 427.513519f, 844.354309f, 427.216034f);
56 pathB.cubicTo(846.956787f, 425.765503f, 848.689819f, 423.588257f, 848.58606f, 423.483429f);
57 pathB.cubicTo(848.58606f, 423.483429f, 846.877991f, 423.327698f, 845.971558f, 422.807587f);
58 pathB.cubicTo(845.253784f, 422.284485f, 844.892395f, 422.022949f, 844.171631f, 421.502838f);
59 pathB.cubicTo(843.361023f, 420.915833f, 842.907837f, 420.308899f, 842.907837f, 419.350525f);
60 pathB.lineTo(842.907837f, 399.445709f);
61 pathB.cubicTo(842.907837f, 398.053101f, 843.272217f, 397.417175f, 843.812256f, 397.518005f);
62 pathB.cubicTo(844.170654f, 397.583893f, 844.711731f, 398.122986f, 845.432495f, 398.782837f);
63 pathB.cubicTo(846.116333f, 399.402771f, 846.459717f, 399.709259f, 847.14856f, 400.3302f);
64 pathB.cubicTo(844.986206f, 402.099152f, 843.988892f, 403.926025f, 843.988892f, 405.932556f);
65 pathB.cubicTo(843.988892f, 410.209229f, 848.272583f, 410.951935f, 849.576355f, 408.394348f);
66 pathB.cubicTo(849.871826f, 407.816345f, 850.421875f, 406.214081f, 850.387939f, 406.196106f);
67 pathB.cubicTo(850.387939f, 406.196106f, 849.305786f, 406.771118f, 848.495239f, 406.615387f);
68 pathB.cubicTo(846.96582f, 406.316895f, 846.153198f, 405.46637f, 846.153198f, 403.89505f);
69 pathB.cubicTo(846.153198f, 401.796661f, 848.50116f, 399.09729f, 852.279663f, 396.270142f);
70 pathB.cubicTo(851.014893f, 395.315796f, 847.723511f, 391.546265f, 846.875f, 391.546265f);
71 pathB.cubicTo(846.330933f, 391.546265f, 843.988892f, 394.403351f, 843.273193f, 394.972382f);
72 pathB.cubicTo(840.889282f, 392.886963f, 839.700317f, 391.850739f, 837.312378f, 389.786285f);
73 pathB.cubicTo(835.257935f, 391.589203f, 834.225708f, 392.491638f, 832.164246f, 394.307526f);
74 pathB.moveTo(818.860107f, 392.707275f);
75 pathB.cubicTo(819.857361f, 393.382111f, 822.302124f, 395.764038f, 824.387573f, 397.051819f);
76 pathB.cubicTo(822.57666f, 398.249756f, 820.582092f, 399.687286f, 818.860107f, 400.827332f);
77 pathB.lineTo(818.860107f, 392.707275f);
78 pathB.close();
79 pathB.moveTo(810.69812f, 391.096039f);
80 pathB.cubicTo(810.69812f, 391.096039f, 812.786499f, 394.093903f, 812.786499f, 394.965393f);
81 pathB.lineTo(812.786499f, 415.743713f);
82 pathB.cubicTo(812.786499f, 417.753265f, 811.881042f, 418.497986f, 810.974609f, 419.769806f);
83 pathB.cubicTo(813.948486f, 421.160431f, 815.437988f, 421.864197f, 818.404846f, 423.283783f);
84 pathB.cubicTo(819.948181f, 423.95462f, 822.417969f, 424.592529f, 823.937317f, 423.782928f);
85 pathB.cubicTo(827.905518f, 421.663544f, 831.53125f, 417.600525f, 832.255005f, 415.191681f);
86 pathB.cubicTo(833.882263f, 409.877808f, 823.095825f, 411.495026f, 823.119751f, 411.518982f);
87 pathB.cubicTo(823.119751f, 411.518982f, 832.000488f, 411.874359f, 830.537964f, 416.29776f);
88 pathB.cubicTo(829.888123f, 418.253418f, 827.278564f, 420.292908f, 825.385864f, 419.55719f);
89 pathB.cubicTo(821.14209f, 417.915985f, 818.861023f, 417.414856f, 818.861023f, 414.970032f);
90 pathB.lineTo(818.861023f, 403.096436f);
91 pathB.cubicTo(822.126404f, 399.132233f, 831.289673f, 395.897797f, 831.356567f, 395.657227f);
92 pathB.cubicTo(831.356567f, 395.657227f, 823.022888f, 387.594055f, 821.763062f, 387.476257f);
93 pathB.cubicTo(821.755066f, 387.47525f, 821.746094f, 387.47525f, 821.737061f, 387.47525f);
94 pathB.cubicTo(820.793701f, 387.47525f, 810.72406f, 390.967255f, 810.69812f, 391.096039f);
95 pathB.moveTo(624.254211f, 390.498077f);
96 pathB.cubicTo(625.252502f, 390.893402f, 627.708252f, 392.592468f, 629.796692f, 393.307251f);
97 pathB.cubicTo(627.978821f, 395.006317f, 625.980225f, 397.000916f, 624.254211f, 398.618134f);
98 pathB.lineTo(624.254211f, 390.498077f);
99 pathB.close();
100 pathB.moveTo(627.160217f, 384.460449f);
101 pathB.cubicTo(626.286743f, 384.51535f, 616.076233f, 390.993225f, 616.086243f, 391.141968f);
102 pathB.cubicTo(616.086243f, 391.141968f, 618.173645f, 393.561798f, 618.173645f, 394.437317f);
103 pathB.lineTo(618.173645f, 415.216614f);
104 pathB.cubicTo(618.173645f, 417.222168f, 617.265198f, 418.219482f, 616.355774f, 419.742859f);
105 pathB.cubicTo(619.331665f, 420.307892f, 620.824097f, 420.599396f, 623.802979f, 421.198364f);
106 pathB.cubicTo(625.346313f, 421.437958f, 627.818115f, 421.39801f, 629.342468f, 420.166138f);
107 pathB.cubicTo(633.340576f, 416.939667f, 636.982361f, 411.871368f, 637.714111f, 409.263855f);
108 pathB.cubicTo(639.348267f, 403.500732f, 628.508911f, 408.111816f, 628.52887f, 408.126801f);
109 pathB.cubicTo(628.52887f, 408.126801f, 637.468506f, 405.998444f, 635.985046f, 410.844147f);
110 pathB.cubicTo(635.332153f, 412.984467f, 632.705688f, 415.748718f, 630.801941f, 415.541077f);
111 pathB.cubicTo(626.537292f, 415.072876f, 624.257202f, 415.202667f, 624.257202f, 412.755859f);
112 pathB.cubicTo(624.257202f, 408.007019f, 624.255188f, 405.636078f, 624.255188f, 400.884247f);
113 pathB.cubicTo(627.525574f, 396.016602f, 636.801636f, 390.283447f, 636.801636f, 389.97995f);
114 pathB.cubicTo(636.801636f, 389.97995f, 628.360168f, 384.458435f, 627.18219f, 384.458435f);
115 pathB.cubicTo(627.174194f, 384.460449f, 627.167236f, 384.460449f, 627.160217f, 384.460449f);
116 pathB.moveTo(796.530396f, 416.438538f);
117 pathB.cubicTo(795.892517f, 416.365662f, 794.527832f, 415.589996f, 792.348572f, 414.036652f);
118 pathB.lineTo(792.348572f, 391.425476f);
119 pathB.cubicTo(792.348572f, 390.465118f, 792.530273f, 390.047852f, 792.89563f, 390.088776f);
120 pathB.cubicTo(793.075317f, 390.109741f, 793.3479f, 390.317383f, 793.804077f, 390.629852f);
121 pathB.cubicTo(795.113831f, 391.585205f, 795.768738f, 392.059387f, 797.077515f, 393.018738f);
122 pathB.cubicTo(797.983948f, 393.648651f, 798.348267f, 394.219666f, 798.348267f, 394.742767f);
123 pathB.lineTo(798.348267f, 413.253998f);
124 pathB.cubicTo(798.348267f, 415.391327f, 797.783264f, 416.451508f, 796.728088f, 416.451508f);
125 pathB.cubicTo(796.664185f, 416.4505f, 796.598267f, 416.446533f, 796.530396f, 416.438538f);
126 pathB.moveTo(795.165771f, 383.714722f);
127 pathB.cubicTo(794.022705f, 383.851471f, 783.959961f, 388.652252f, 783.880127f, 388.873871f);
128 pathB.cubicTo(783.880127f, 388.873871f, 785.054077f, 389.871155f, 785.522339f, 390.606873f);
129 pathB.cubicTo(786.000488f, 391.361603f, 786.246094f, 391.9935f, 786.246094f, 392.427765f);
130 pathB.lineTo(786.246094f, 411.987183f);
131 pathB.cubicTo(786.246094f, 413.733185f, 784.160645f, 416.428558f, 784.246521f, 416.759979f);
132 pathB.cubicTo(784.258484f, 416.79892f, 785.432495f, 417.14032f, 785.793823f, 417.350952f);
133 pathB.cubicTo(786.739258f, 417.937958f, 787.213379f, 418.228455f, 788.161804f, 418.821442f);
134 pathB.cubicTo(789.342773f, 419.554199f, 790.619568f, 419.956482f, 791.892395f, 420.098236f);
135 pathB.cubicTo(794.533813f, 420.390747f, 796.717102f, 419.337555f, 798.349304f, 416.999573f);
136 pathB.lineTo(798.349304f, 425.212463f);
137 pathB.cubicTo(797.94696f, 425.47702f, 797.750305f, 425.609772f, 797.356018f, 425.874329f);
138 pathB.cubicTo(795.259583f, 423.619202f, 792.806824f, 422.286499f, 789.985657f, 421.984009f);
139 pathB.cubicTo(785.157959f, 421.463898f, 780.409119f, 428.344086f, 780.423096f, 428.346069f);
140 pathB.cubicTo(780.423096f, 428.346069f, 783.340088f, 424.960907f, 785.889709f, 425.218445f);
141 pathB.cubicTo(789.25592f, 425.565857f, 793.166199f, 430.745972f, 793.805115f, 430.790894f);
142 pathB.cubicTo(793.940857f, 430.798889f, 795.918457f, 429.091797f, 798.454102f, 427.383728f);
143 pathB.cubicTo(801.049683f, 425.635742f, 804.230225f, 423.886749f, 806.619141f, 423.980591f);
144 pathB.cubicTo(805.621826f, 423.586243f, 805.048828f, 423.074127f, 804.804199f, 422.609924f);
145 pathB.cubicTo(804.616577f, 422.25354f, 804.616577f, 421.539764f, 804.616577f, 420.31488f);
146 pathB.cubicTo(804.623535f, 411.732605f, 804.623535f, 403.147339f, 804.623535f, 394.562073f);
147 pathB.cubicTo(804.623535f, 392.464691f, 805.970215f, 391.000183f, 805.984192f, 390.896362f);
148 pathB.cubicTo(805.984192f, 390.896362f, 796.785034f, 383.7117f, 795.219666f, 383.7117f);
149 pathB.cubicTo(795.19873f, 383.712708f, 795.181763f, 383.712708f, 795.165771f, 383.714722f);
150 pathB.moveTo(648.092285f, 387.883545f);
151 pathB.cubicTo(649.095581f, 388.312805f, 651.55835f, 390.099762f, 653.655701f, 390.884399f);
152 pathB.cubicTo(651.831848f, 392.522583f, 649.82428f, 394.447296f, 648.092285f, 396.003601f);
153 pathB.lineTo(648.092285f, 387.883545f);
154 pathB.close();
155 pathB.moveTo(651.009277f, 381.943756f);
156 pathB.cubicTo(650.147766f, 381.983704f, 639.893372f, 388.105164f, 639.899353f, 388.254913f);
157 pathB.cubicTo(639.899353f, 388.254913f, 641.987793f, 390.744659f, 641.987793f, 391.617157f);
158 pathB.lineTo(641.987793f, 412.399475f);
159 pathB.cubicTo(641.987793f, 414.409027f, 641.082336f, 415.369354f, 640.169861f, 416.864807f);
160 pathB.cubicTo(643.155762f, 417.53064f, 644.650208f, 417.87207f, 647.638062f, 418.573853f);
161 pathB.cubicTo(649.188416f, 418.865356f, 651.666138f, 418.908295f, 653.19751f, 417.725311f);
162 pathB.cubicTo(657.204651f, 414.633636f, 660.859375f, 409.690125f, 661.590088f, 407.106567f);
163 pathB.cubicTo(663.231262f, 401.397339f, 652.356934f, 405.644073f, 652.375916f, 405.663025f);
164 pathB.cubicTo(652.375916f, 405.663025f, 661.338562f, 403.835175f, 659.857056f, 408.632935f);
165 pathB.cubicTo(659.199219f, 410.748291f, 656.568726f, 413.424713f, 654.656982f, 413.151184f);
166 pathB.cubicTo(650.381348f, 412.536224f, 648.092285f, 412.591125f, 648.092285f, 410.146332f);
167 pathB.lineTo(648.092285f, 398.270721f);
168 pathB.cubicTo(651.374634f, 393.5159f, 660.66571f, 388.09021f, 660.674683f, 387.791718f);
169 pathB.cubicTo(660.674683f, 387.791718f, 652.188232f, 381.941772f, 651.022278f, 381.942749f);
170 pathB.cubicTo(651.01825f, 381.942749f, 651.013245f, 381.942749f, 651.009277f, 381.943756f);
171 pathB.moveTo(761.636353f, 385.965851f);
172 pathB.cubicTo(761.927856f, 386.056702f, 762.071594f, 386.098633f, 762.363098f, 386.189453f);
173 pathB.cubicTo(763.570007f, 386.938171f, 764.175964f, 387.311554f, 765.376892f, 388.066254f);
174 pathB.cubicTo(766.019775f, 388.546417f, 766.384155f, 389.184326f, 766.384155f, 390.147675f);
175 pathB.lineTo(766.384155f, 410.924011f);
176 pathB.cubicTo(766.384155f, 412.057037f, 765.836121f, 413.410736f, 764.559326f, 414.979034f);
177 pathB.cubicTo(765.911987f, 415.738739f, 766.579834f, 416.12207f, 767.934509f, 416.887756f);
178 pathB.cubicTo(769.029602f, 417.495728f, 770.944336f, 418.000854f, 771.85675f, 418.075714f);
179 pathB.cubicTo(772.58551f, 418.134613f, 773.413086f, 417.987854f, 773.950195f, 417.638458f);
180 pathB.cubicTo(776.583618f, 415.917419f, 778.332642f, 413.564453f, 778.237793f, 413.473633f);
181 pathB.cubicTo(778.237793f, 413.473633f, 776.507812f, 413.497559f, 775.596313f, 413.066315f);
182 pathB.cubicTo(774.866577f, 412.61908f, 774.497253f, 412.39447f, 773.771484f, 411.951233f);
183 pathB.cubicTo(772.947876f, 411.444092f, 772.493652f, 410.877075f, 772.493652f, 409.919708f);
184 pathB.lineTo(772.493652f, 390.013885f);
185 pathB.cubicTo(772.493652f, 388.618286f, 772.860046f, 387.949432f, 773.407104f, 387.995361f);
186 pathB.cubicTo(773.771484f, 388.026306f, 774.318542f, 388.509491f, 775.049316f, 389.09848f);
187 pathB.cubicTo(775.742065f, 389.646515f, 776.088501f, 389.923065f, 776.77533f, 390.470123f);
188 pathB.cubicTo(774.590088f, 392.45871f, 773.589783f, 394.385376f, 773.589783f, 396.395935f);
189 pathB.cubicTo(773.589783f, 400.673584f, 777.907349f, 401.008026f, 779.237122f, 398.292694f);
190 pathB.cubicTo(779.539551f, 397.684723f, 780.089661f, 396.027557f, 780.058716f, 396.01358f);
191 pathB.cubicTo(780.058716f, 396.01358f, 778.970581f, 396.694427f, 778.149963f, 396.618561f);
192 pathB.cubicTo(776.598633f, 396.4758f, 775.775024f, 395.709106f, 775.775024f, 394.13681f);
193 pathB.cubicTo(775.775024f, 392.042419f, 778.149963f, 389.103455f, 781.973389f, 385.892975f);
194 pathB.cubicTo(780.697571f, 385.06839f, 777.326416f, 381.676208f, 776.506775f, 381.719147f);
195 pathB.cubicTo(775.908813f, 381.747101f, 773.588806f, 384.868744f, 772.860046f, 385.506622f);
196 pathB.cubicTo(770.451172f, 383.664795f, 769.248291f, 382.749359f, 766.843384f, 380.929504f);
197 pathB.cubicTo(764.758972f, 382.934052f, 763.716736f, 383.940338f, 761.636353f, 385.965851f);
198 pathB.moveTo(672.996521f, 379.821411f);
199 pathB.cubicTo(672.123047f, 379.891266f, 669.7052f, 382.898132f, 668.887573f, 383.64682f);
200 pathB.cubicTo(665.239868f, 386.999084f, 663.41095f, 390.213562f, 663.41095f, 393.356171f);
201 pathB.cubicTo(663.41095f, 395.715118f, 664.439209f, 397.642792f, 666.785156f, 399.150208f);
202 pathB.cubicTo(669.702148f, 401.02002f, 672.547302f, 402.439575f, 674.545837f, 403.655487f);
203 pathB.cubicTo(676.261902f, 404.697693f, 677.105469f, 406.231049f, 677.105469f, 407.625671f);
204 pathB.cubicTo(677.105469f, 408.671875f, 676.651245f, 409.777954f, 675.825684f, 410.7453f);
205 pathB.cubicTo(675.12384f, 411.569885f, 674.538879f, 412.145905f, 673.997803f, 412.417419f);
206 pathB.cubicTo(673.38385f, 412.724915f, 672.080078f, 411.958221f, 670.166382f, 410.198242f);
207 pathB.cubicTo(668.113892f, 408.319458f, 667.062683f, 406.55249f, 667.062683f, 404.808502f);
208 pathB.cubicTo(667.062683f, 404.020844f, 667.701599f, 402.580322f, 667.701599f, 402.580322f);
209 pathB.cubicTo(667.701599f, 402.580322f, 661.773804f, 409.542358f, 661.951477f, 410.7453f);
210 pathB.cubicTo(662.13916f, 412.037079f, 663.368042f, 413.524536f, 665.60321f, 415.469208f);
211 pathB.cubicTo(667.791443f, 417.368927f, 669.261963f, 418.074738f, 669.983704f, 417.630493f);
212 pathB.cubicTo(672.412537f, 416.138062f, 675.369446f, 413.822021f, 678.385254f, 410.790222f);
213 pathB.cubicTo(680.485657f, 408.677856f, 681.587769f, 406.446686f, 681.587769f, 403.917023f);
214 pathB.cubicTo(681.587769f, 400.859283f, 680.007446f, 398.490356f, 676.923767f, 396.806244f);
215 pathB.cubicTo(673.540588f, 394.957428f, 671.257507f, 393.71756f, 670.351074f, 393.075653f);
216 pathB.cubicTo(668.434326f, 391.71698f, 667.518921f, 390.193604f, 667.518921f, 388.88385f);
217 pathB.cubicTo(667.518921f, 387.837646f, 668.101929f, 386.934204f, 669.25592f, 386.156525f);
218 pathB.cubicTo(669.796997f, 385.788147f, 671.085815f, 386.257355f, 672.997498f, 387.592072f);
219 pathB.cubicTo(674.966125f, 388.968689f, 676.104187f, 389.951019f, 676.284851f, 390.465118f);
220 pathB.cubicTo(678.186584f, 388.130127f, 679.136963f, 386.966125f, 681.035706f, 384.646118f);
221 pathB.cubicTo(678.244507f, 383.133728f, 674.247375f, 379.819397f, 673.044434f, 379.819397f);
222 pathB.cubicTo(673.027466f, 379.819397f, 673.011475f, 379.820404f, 672.996521f, 379.821411f);
223 pathB.moveTo(732.95459f, 384.60318f);
224 pathB.cubicTo(733.246094f, 384.680054f, 733.391846f, 384.720001f, 733.689331f, 384.794861f);
225 pathB.cubicTo(735.072937f, 385.500641f, 735.769714f, 385.856049f, 737.162354f, 386.563812f);
226 pathB.cubicTo(737.891113f, 386.938171f, 738.164612f, 387.642975f, 738.164612f, 388.6073f);
227 pathB.lineTo(738.164612f, 408.510132f);
228 pathB.cubicTo(738.164612f, 410.257141f, 737.709412f, 411.893341f, 736.064209f, 413.416718f);
229 pathB.cubicTo(737.635498f, 414.235321f, 738.419189f, 414.651611f, 739.991455f, 415.475189f);
230 pathB.cubicTo(740.997742f, 416.034241f, 742.186707f, 416.344696f, 743.098145f, 416.379639f);
231 pathB.cubicTo(743.830872f, 416.410583f, 744.476807f, 416.175964f, 745.019836f, 415.851532f);
232 pathB.cubicTo(746.476318f, 414.977051f, 748.58075f, 413.571442f, 749.225647f, 413.079285f);
233 pathB.cubicTo(751.012573f, 414.253296f, 751.907043f, 414.845276f, 753.69696f, 416.028229f);
234 pathB.cubicTo(754.703247f, 416.610229f, 755.706543f, 416.84082f, 756.528076f, 416.892761f);
235 pathB.cubicTo(757.259827f, 416.93866f, 757.996582f, 416.807892f, 758.537659f, 416.494446f);
236 pathB.cubicTo(760.814758f, 415.174713f, 762.185425f, 413.509552f, 762.552734f, 412.830719f);
237 pathB.cubicTo(761.637329f, 412.681976f, 759.633789f, 411.58786f, 759.263428f, 411.387207f);
238 pathB.cubicTo(758.607544f, 410.994873f, 758.279114f, 410.803223f, 757.621216f, 410.413879f);
239 pathB.cubicTo(756.983276f, 410.020538f, 756.616943f, 409.301788f, 756.616943f, 408.343445f);
240 pathB.lineTo(756.616943f, 388.351746f);
241 pathB.cubicTo(756.616943f, 387.387421f, 757.164978f, 386.548859f, 758.627502f, 385.067383f);
242 pathB.cubicTo(755.523804f, 383.05484f, 753.97052f, 382.057556f, 750.862854f, 380.078949f);
243 pathB.cubicTo(749.001038f, 382.112457f, 748.069641f, 383.130707f, 746.207825f, 385.174194f);
244 pathB.cubicTo(746.501343f, 385.292999f, 746.647095f, 385.353912f, 746.939575f, 385.472687f);
245 pathB.cubicTo(747.996765f, 386.183472f, 748.525879f, 386.538879f, 749.587036f, 387.257629f);
246 pathB.cubicTo(750.224915f, 387.724823f, 750.498474f, 388.351746f, 750.498474f, 389.223267f);
247 pathB.lineTo(750.498474f, 407.822327f);
248 pathB.cubicTo(750.498474f, 408.694824f, 750.339722f, 409.955658f, 749.951416f, 410.847137f);
249 pathB.cubicTo(749.550049f, 411.761566f, 749.039978f, 411.585876f, 748.487915f, 411.560913f);
250 pathB.cubicTo(747.393799f, 411.503998f, 746.385498f, 410.53067f, 745.473083f, 410.022552f);
251 pathB.cubicTo(744.760254f, 409.627228f, 744.380981f, 409.013275f, 744.380981f, 407.965088f);
252 pathB.lineTo(744.380981f, 386.840363f);
253 pathB.cubicTo(744.380981f, 385.791138f, 744.833191f, 384.763916f, 745.657776f, 383.839508f);
254 pathB.cubicTo(742.656921f, 382.101501f, 741.161499f, 381.234985f, 738.162659f, 379.525909f);
255 pathB.cubicTo(736.083191f, 381.548431f, 735.039978f, 382.562683f, 732.95459f, 384.60318f);
256 pathB.moveTo(692.546936f, 385.171204f);
257 pathB.cubicTo(693.552246f, 385.667358f, 696.018005f, 387.607025f, 698.122375f, 388.521454f);
258 pathB.cubicTo(696.293518f, 390.043854f, 694.281982f, 391.844757f, 692.546936f, 393.294281f);
259 pathB.lineTo(692.546936f, 385.171204f);
260 pathB.close();
261 pathB.moveTo(695.4729f, 379.417084f);
262 pathB.cubicTo(694.635376f, 379.426086f, 684.32605f, 384.880707f, 684.322083f, 385.025452f);
263 pathB.cubicTo(684.322083f, 385.025452f, 686.422485f, 387.645966f, 686.422485f, 388.521454f);
264 pathB.lineTo(686.422485f, 409.300781f);
265 pathB.cubicTo(686.422485f, 411.312347f, 685.51001f, 412.21579f, 684.595581f, 413.65033f);
266 pathB.cubicTo(687.592468f, 414.504852f, 689.089905f, 414.945099f, 692.088745f, 415.833557f);
267 pathB.cubicTo(693.645081f, 416.221893f, 696.128784f, 416.420563f, 697.667114f, 415.334412f);
268 pathB.cubicTo(701.67926f, 412.494293f, 705.344971f, 407.783386f, 706.077698f, 405.240753f);
269 pathB.cubicTo(707.721924f, 399.638367f, 696.822632f, 403.198273f, 696.845581f, 403.216248f);
270 pathB.cubicTo(696.845581f, 403.216248f, 705.825134f, 401.960388f, 704.337708f, 406.658325f);
271 pathB.cubicTo(703.683838f, 408.733765f, 701.044373f, 411.241455f, 699.129639f, 410.847137f);
272 pathB.cubicTo(694.843018f, 409.968628f, 692.545959f, 409.876801f, 692.545959f, 407.432983f);
273 pathB.lineTo(692.545959f, 395.563354f);
274 pathB.cubicTo(695.838318f, 391.012177f, 705.134338f, 386.160522f, 705.162292f, 385.873993f);
275 pathB.cubicTo(705.162292f, 385.873993f, 696.635925f, 379.416107f, 695.473938f, 379.417084f);
276 pathB.cubicTo(695.474915f, 379.417084f, 695.473938f, 379.417084f, 695.4729f, 379.417084f);
277 pathB.moveTo(570.463562f, 420.81601f);
278 pathB.lineTo(570.463562f, 402.922729f);
279 pathB.cubicTo(571.039551f, 402.800934f, 571.327087f, 402.743042f, 571.901123f, 402.625244f);
280 pathB.lineTo(571.901123f, 423.142029f);
281 pathB.cubicTo(570.911804f, 422.823578f, 570.463562f, 422.123779f, 570.463562f, 420.81601f);
282 pathB.moveTo(570.463562f, 384.062134f);
283 pathB.cubicTo(571.039551f, 384.149963f, 571.327087f, 384.198883f, 571.901123f, 384.290741f);
284 pathB.lineTo(571.901123f, 401.580048f);
285 pathB.cubicTo(571.327087f, 401.695862f, 571.039551f, 401.756744f, 570.463562f, 401.874542f);
286 pathB.lineTo(570.463562f, 384.062134f);
287 pathB.close();
288 pathB.moveTo(573.880676f, 376.556f);
289 pathB.cubicTo(572.483093f, 376.996246f, 561.476013f, 385.624451f, 561.482971f, 385.70929f);
290 pathB.cubicTo(561.482971f, 385.70929f, 563.637268f, 388.554413f, 563.637268f, 389.688446f);
291 pathB.lineTo(563.637268f, 398.423462f);
292 pathB.cubicTo(556.411682f, 399.838043f, 555.429382f, 404.307373f, 555.418396f, 405.679993f);
293 pathB.lineTo(555.418396f, 405.724915f);
294 pathB.cubicTo(555.42041f, 405.94455f, 555.448364f, 406.073334f, 555.477295f, 406.083313f);
295 pathB.cubicTo(555.477295f, 406.083313f, 558.070862f, 404.250458f, 563.637268f, 403.222229f);
296 pathB.lineTo(563.637268f, 404.797516f);
297 pathB.cubicTo(556.993713f, 406.233063f, 555.191772f, 412.494293f, 555.569153f, 412.614105f);
298 pathB.cubicTo(555.569153f, 412.614105f, 561.572815f, 410.21521f, 563.637268f, 409.598267f);
299 pathB.lineTo(563.637268f, 424.00354f);
300 pathB.cubicTo(563.637268f, 426.357483f, 563.36676f, 427.901855f, 562.291565f, 429.70874f);
301 pathB.cubicTo(565.448181f, 430.067139f, 567.028442f, 430.256805f, 570.192017f, 430.653137f);
302 pathB.cubicTo(571.99292f, 430.893707f, 574.782166f, 430.669098f, 576.403381f, 429.136719f);
303 pathB.cubicTo(580.960571f, 424.828125f, 586.135681f, 419.346527f, 586.135681f, 416.115082f);
304 pathB.lineTo(586.135681f, 406.511566f);
305 pathB.cubicTo(586.135681f, 405.377533f, 586.047791f, 404.608856f, 586.678711f, 403.271149f);
306 pathB.cubicTo(584.151062f, 404.98819f, 582.888245f, 405.851715f, 580.362549f, 407.587738f);
307 pathB.cubicTo(579.281433f, 408.320465f, 579.192566f, 409.2948f, 579.192566f, 410.955933f);
308 pathB.lineTo(579.192566f, 421.869202f);
309 pathB.cubicTo(579.192566f, 423.180969f, 577.746033f, 423.273804f, 577.392639f, 423.266815f);
310 pathB.cubicTo(575.636658f, 423.228882f, 574.153259f, 423.295776f, 573.071106f, 423.077148f);
311 pathB.lineTo(573.071106f, 384.663086f);
312 pathB.cubicTo(575.230408f, 385.379852f, 576.309509f, 385.742249f, 578.473816f, 386.473999f);
313 pathB.cubicTo(579.373291f, 386.996094f, 579.553955f, 387.490234f, 579.553955f, 388.013336f);
314 pathB.cubicTo(581.861023f, 384.848785f, 583.015991f, 383.267487f, 585.325073f, 380.114899f);
315 pathB.cubicTo(581.680298f, 379.229431f, 575.865295f, 376.520081f, 574.157227f, 376.521057f);
316 pathB.cubicTo(574.047424f, 376.522064f, 573.955566f, 376.533051f, 573.880676f, 376.556f);
317 pathB.moveTo(593.447083f, 375.096527f);
318 pathB.cubicTo(592.363953f, 375.804291f, 591.821899f, 376.772644f, 591.821899f, 377.908691f);
319 pathB.lineTo(591.821899f, 419.46933f);
320 pathB.cubicTo(591.821899f, 420.517517f, 591.187012f, 422.018951f, 589.921143f, 423.991577f);
321 pathB.cubicTo(591.2948f, 424.412842f, 591.982605f, 424.622467f, 593.354248f, 425.050751f);
322 pathB.cubicTo(594.53125f, 425.462036f, 595.525513f, 425.555878f, 596.427979f, 425.404144f);
323 pathB.cubicTo(597.150757f, 425.279358f, 597.785645f, 424.914978f, 598.326721f, 424.475739f);
324 pathB.cubicTo(600.935242f, 422.385315f, 602.846985f, 419.809753f, 602.759094f, 419.749847f);
325 pathB.cubicTo(602.759094f, 419.749847f, 601.582153f, 419.935516f, 600.59082f, 419.831696f);
326 pathB.cubicTo(600.0448f, 419.74585f, 599.774231f, 419.700928f, 599.233154f, 419.615082f);
327 pathB.cubicTo(598.416565f, 419.484314f, 597.965332f, 418.860382f, 597.965332f, 417.988861f);
328 pathB.lineTo(597.965332f, 396.857147f);
329 pathB.cubicTo(597.965332f, 395.376678f, 598.326721f, 394.617004f, 598.867798f, 394.528137f);
330 pathB.cubicTo(599.232178f, 394.466248f, 599.773254f, 394.731812f, 600.59082f, 395.124115f);
331 pathB.cubicTo(601.601074f, 395.589325f, 602.111206f, 395.819946f, 603.123474f, 396.288116f);
332 pathB.cubicTo(603.93811f, 396.686432f, 603.93512f, 397.38324f, 603.93512f, 398.169891f);
333 pathB.cubicTo(603.93512f, 405.971497f, 603.93512f, 413.768127f, 603.93811f, 421.569702f);
334 pathB.cubicTo(603.93811f, 425.325256f, 601.109924f, 430.634155f, 601.133911f, 430.656128f);
335 pathB.cubicTo(601.133911f, 430.656128f, 605.184937f, 427.222015f, 607.017822f, 424.414825f);
336 pathB.cubicTo(609.118164f, 421.201355f, 610.280212f, 417.987854f, 610.280212f, 415.109802f);
337 pathB.lineTo(610.280212f, 394.593048f);
338 pathB.cubicTo(610.280212f, 393.890228f, 610.823242f, 393.112579f, 611.728699f, 392.020447f);
339 pathB.cubicTo(608.827698f, 390.960266f, 604.000977f, 387.703857f, 602.759094f, 387.967407f);
340 pathB.cubicTo(602.120239f, 388.104187f, 599.957947f, 391.29071f, 597.965332f, 393.27829f);
341 pathB.lineTo(597.965332f, 374.422668f);
342 pathB.cubicTo(597.965332f, 373.461334f, 598.326721f, 372.440063f, 598.867798f, 371.567566f);
343 pathB.cubicTo(596.701538f, 372.96817f, 595.616394f, 373.677948f, 593.447083f, 375.096527f);
344 pathB.moveTo(718.054138f, 409.318756f);
345 pathB.cubicTo(717.461182f, 408.789673f, 716.867188f, 408.178711f, 716.867188f, 407.218353f);
346 pathB.lineTo(716.867188f, 387.053986f);
347 pathB.cubicTo(716.867188f, 385.305969f, 717.323425f, 385.566528f, 718.328674f, 386.013763f);
348 pathB.cubicTo(719.645386f, 386.859314f, 720.307251f, 387.284576f, 721.622009f, 388.135132f);
349 pathB.cubicTo(722.266907f, 388.4935f, 722.903809f, 388.934753f, 722.903809f, 389.721405f);
350 pathB.lineTo(722.903809f, 407.794373f);
351 pathB.cubicTo(722.903809f, 408.66687f, 722.746094f, 410.490753f, 722.259888f, 410.758301f);
352 pathB.cubicTo(722.125122f, 410.83017f, 721.950439f, 410.862122f, 721.746826f, 410.862122f);
353 pathB.cubicTo(720.655701f, 410.864105f, 718.747925f, 409.936707f, 718.054138f, 409.318756f);
354 pathB.moveTo(711.928711f, 364.782227f);
355 pathB.cubicTo(711.195923f, 365.134613f, 710.648865f, 365.834412f, 710.648865f, 366.794769f);
356 pathB.lineTo(710.648865f, 407.392059f);
357 pathB.cubicTo(710.648865f, 409.397614f, 708.519531f, 411.37323f, 708.547485f, 411.684692f);
358 pathB.cubicTo(708.550476f, 411.745605f, 711.838867f, 413.067322f, 713.849365f, 414.368073f);
359 pathB.cubicTo(717.766663f, 416.906738f, 720.162537f, 415.845551f, 722.354797f, 414.073608f);
360 pathB.cubicTo(724.059875f, 412.69397f, 726.55957f, 410.981903f, 730.675537f, 410.124359f);
361 pathB.cubicTo(729.75708f, 409.143066f, 729.213013f, 407.993042f, 729.213013f, 406.683289f);
362 pathB.cubicTo(729.213013f, 399.630402f, 729.209045f, 396.103455f, 729.209045f, 389.047546f);
363 pathB.cubicTo(729.209045f, 387.648956f, 730.577698f, 385.292023f, 730.583679f, 385.149261f);
364 pathB.cubicTo(730.583679f, 385.149261f, 720.888306f, 378.762207f, 719.609497f, 378.947906f);
365 pathB.cubicTo(719.275085f, 378.996826f, 717.872498f, 381.118164f, 716.868225f, 381.896851f);
366 pathB.lineTo(716.868225f, 365.046783f);
367 pathB.cubicTo(716.868225f, 363.740021f, 716.960083f, 363.043213f, 717.597961f, 362);
368 pathB.cubicTo(715.331848f, 363.104095f, 714.19873f, 363.657166f, 711.928711f, 364.782227f);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000369 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000370}
371
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000372static void skpeverytechpro_blogspot_com100(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000373 SkPath path;
374 path.setFillType(SkPath::kEvenOdd_FillType);
375 path.moveTo(1074.29285f, 627.292786f);
376 path.quadTo(1074.58582f, 627, 1075, 627);
377 path.lineTo(1117, 627);
378 path.quadTo(1124.04163f, 627, 1129.02246f, 631.9776f);
379 path.quadTo(1134, 636.958374f, 1134, 644);
380 path.lineTo(1134, 645);
381 path.quadTo(1134, 652.041626f, 1129.02246f, 657.0224f);
382 path.quadTo(1124.04163f, 662, 1117, 662);
383 path.lineTo(1075, 662);
384 path.quadTo(1074.58582f, 662, 1074.29285f, 661.707214f);
385 path.quadTo(1074, 661.414185f, 1074, 661);
386 path.lineTo(1074, 628);
387 path.quadTo(1074, 627.585815f, 1074.29285f, 627.292786f);
388 path.close();
389 path.moveTo(1076, 629);
390 path.lineTo(1117, 629);
391 path.cubicTo(1125.2843f, 629, 1132, 635.715698f, 1132, 644);
392 path.lineTo(1132, 645);
393 path.cubicTo(1132, 653.284302f, 1125.2843f, 660, 1117, 660);
394 path.lineTo(1076, 660);
395 path.lineTo(1076, 629);
396 path.close();
397 SkPath pathB;
398 pathB.setFillType(SkPath::kWinding_FillType);
399 pathB.moveTo(1074, 627);
400 pathB.lineTo(1075, 628);
401 pathB.lineTo(1116.5f, 644.5f);
402 pathB.lineTo(1134, 627);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000403 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000404}
405
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000406static void skpflite_com41(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000407 SkPath path;
408 path.setFillType(SkPath::kEvenOdd_FillType);
409 path.moveTo(301.464081f, 424);
410 path.lineTo(296, 433.46405f);
411 path.lineTo(296, 433.810822f);
412 path.lineTo(303.25589f, 438);
413 path.lineTo(304.729736f, 438);
414 path.lineTo(311, 427.139557f);
415 path.lineTo(311, 426.305237f);
416 path.lineTo(307.007202f, 424);
417 path.lineTo(301.464081f, 424);
418 path.close();
419 SkPath pathB;
420 pathB.setFillType(SkPath::kWinding_FillType);
421 pathB.moveTo(302.849854f, 421.599762f);
422 pathB.lineTo(311.510101f, 426.599762f);
423 pathB.lineTo(304.510101f, 438.724121f);
424 pathB.lineTo(295.849854f, 433.724121f);
425 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000426 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000427}
428
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000429static void skpilkoora_com37(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000430 SkPath path;
431 path.setFillType(SkPath::kEvenOdd_FillType);
432 path.moveTo(818, 157);
433 path.cubicTo(818, 148.715729f, 824.715698f, 142, 833, 142);
434 path.lineTo(909, 142);
435 path.lineTo(909, 143);
436 path.lineTo(833, 143);
437 path.cubicTo(825.268005f, 143, 819, 149.268005f, 819, 157);
438 path.lineTo(819, 926);
439 path.lineTo(818, 926);
440 path.lineTo(818, 157);
441 path.close();
442 path.moveTo(1184, 926);
443 path.lineTo(1185, 926);
444 path.lineTo(1185, 157);
445 path.cubicTo(1185, 148.715729f, 1178.2843f, 142, 1170, 142);
446 path.lineTo(1093, 142);
447 path.lineTo(1093, 143);
448 path.lineTo(1170, 143);
449 path.cubicTo(1177.73193f, 143, 1184, 149.268005f, 1184, 157);
450 path.lineTo(1184, 926);
451 path.close();
452 SkPath pathB;
453 pathB.setFillType(SkPath::kWinding_FillType);
454 pathB.moveTo(1185, 142);
455 pathB.lineTo(1001.5f, 325.5f);
456 pathB.lineTo(1001.5f, 782.5f);
457 pathB.lineTo(1185, 966);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000458 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000459}
460
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000461static void skpmm4everfriends_com43(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000462 SkPath path;
463 path.setFillType(SkPath::kEvenOdd_FillType);
464 path.moveTo(540.74231f, 215.922546f);
465 path.cubicTo(540.893127f, 215.391159f, 541.443909f, 215.090134f, 541.972473f, 215.250168f);
466 path.lineTo(581.213318f, 227.131104f);
467 path.cubicTo(581.741882f, 227.291153f, 582.048157f, 227.851654f, 581.897339f, 228.383041f);
468 path.lineTo(576.708923f, 246.663925f);
469 path.cubicTo(576.558167f, 247.195297f, 576.007324f, 247.496338f, 575.47876f, 247.336288f);
470 path.lineTo(536.237915f, 235.455353f);
471 path.cubicTo(535.709351f, 235.295319f, 535.403137f, 234.734802f, 535.553894f, 234.20343f);
472 path.lineTo(540.74231f, 215.922546f);
473 path.close();
474 SkPath pathB;
475 pathB.setFillType(SkPath::kWinding_FillType);
476 pathB.moveTo(541.015381f, 214.960388f);
477 pathB.lineTo(582.17041f, 227.420883f);
478 pathB.lineTo(576.435852f, 247.626068f);
479 pathB.lineTo(535.280823f, 235.165573f);
480 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000481 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000482}
483
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000484static void skpmtrk_uz27(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000485 SkPath path;
486 path.setFillType(SkPath::kEvenOdd_FillType);
487 path.moveTo(33, 787);
488 path.lineTo(33, 412);
489 path.lineTo(1233, 412);
490 path.lineTo(1233, 787);
491 path.quadTo(1233, 793.213196f, 1228.60803f, 797.607971f);
492 path.quadTo(1224.21326f, 802, 1218, 802);
493 path.lineTo(48, 802);
494 path.quadTo(41.7867966f, 802, 37.3919983f, 797.607971f);
495 path.quadTo(33, 793.213196f, 33, 787);
496 path.close();
497 SkPath pathB;
498 pathB.setFillType(SkPath::kWinding_FillType);
499 pathB.moveTo(33, 412);
500 pathB.lineTo(1233, 412);
501 pathB.lineTo(1233, 787);
502 pathB.quadTo(1233, 793.213196f, 1228.60791f, 797.608032f);
503 pathB.quadTo(1224.21313f, 802, 1218, 802);
504 pathB.lineTo(48, 802);
505 pathB.quadTo(41.7867432f, 802, 37.3919678f, 797.608032f);
506 pathB.quadTo(33, 793.213196f, 33, 787);
507 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000508 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000509}
510
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000511static void skpfrauen_magazin_com83(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000512 SkPath path;
513 path.setFillType(SkPath::kEvenOdd_FillType);
514 path.moveTo(808, 886);
515 path.cubicTo(805.581055f, 886, 803.563293f, 887.717773f, 803.100037f, 890);
516 path.lineTo(1122.90002f, 890);
517 path.cubicTo(1122.43677f, 887.717773f, 1120.41895f, 886, 1118, 886);
518 path.lineTo(808, 886);
519 path.close();
520 SkPath pathB;
521 pathB.setFillType(SkPath::kInverseWinding_FillType);
522 pathB.moveTo(808, 886);
523 pathB.lineTo(1118, 886);
524 pathB.cubicTo(1120.76147f, 886, 1123, 888.238586f, 1123, 891);
525 pathB.lineTo(1123, 1521);
526 pathB.cubicTo(1123, 1523.20911f, 1120.76147f, 1525, 1118, 1525);
527 pathB.lineTo(808, 1525);
528 pathB.cubicTo(805.238586f, 1525, 803, 1523.20911f, 803, 1521);
529 pathB.lineTo(803, 891);
530 pathB.cubicTo(803, 888.238586f, 805.238586f, 886, 808, 886);
531 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000532 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000533}
534
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000535static void skpi_gino_com16(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000536 SkPath path;
537 path.setFillType(SkPath::kEvenOdd_FillType);
538 path.moveTo(184, 734);
539 path.quadTo(133.051727f, 734, 97.0258636f, 770.025879f);
540 path.quadTo(61, 806.051758f, 61, 857);
541 path.quadTo(61, 895.835083f, 81.9317017f, 926);
542 path.lineTo(286.068298f, 926);
543 path.quadTo(307, 895.835083f, 307, 857);
544 path.quadTo(307, 806.051758f, 270.974121f, 770.025879f);
545 path.quadTo(234.948273f, 734, 184, 734);
546 path.close();
547 SkPath pathB;
548 pathB.setFillType(SkPath::kWinding_FillType);
549 pathB.moveTo(185, 734);
550 pathB.cubicTo(252.93103f, 734, 308, 789.06897f, 308, 857);
551 pathB.cubicTo(308, 924.93103f, 252.93103f, 980, 185, 980);
552 pathB.lineTo(184, 980);
553 pathB.cubicTo(116.068977f, 980, 61, 924.93103f, 61, 857);
554 pathB.cubicTo(61, 789.06897f, 116.068977f, 734, 184, 734);
555 pathB.lineTo(185, 734);
556 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000557 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000558}
559
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000560static void skppchappy_com_au102(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000561 SkPath path;
562 path.setFillType(SkPath::kEvenOdd_FillType);
563 path.moveTo(363, 493);
564 path.cubicTo(360.790863f, 493, 359, 494.790863f, 359, 497);
565 path.lineTo(359, 656);
566 path.cubicTo(359, 658.209106f, 360.790863f, 660, 363, 660);
567 path.lineTo(623.001709f, 660);
568 path.cubicTo(624.657776f, 659.999023f, 626, 658.65625f, 626, 657);
569 path.lineTo(626, 496);
570 path.cubicTo(626, 494.343872f, 624.657959f, 493.00116f, 623.002075f, 493);
571 path.lineTo(363, 493);
572 path.close();
573 SkPath pathB;
574 pathB.setFillType(SkPath::kInverseWinding_FillType);
575 pathB.moveTo(362, 494);
576 pathB.lineTo(623, 494);
577 pathB.cubicTo(624.65686f, 494, 626, 494.895416f, 626, 496);
578 pathB.lineTo(626, 657);
579 pathB.cubicTo(626, 658.65686f, 624.65686f, 660, 623, 660);
580 pathB.lineTo(362, 660);
581 pathB.cubicTo(360.34314f, 660, 359, 658.65686f, 359, 657);
582 pathB.lineTo(359, 496);
583 pathB.cubicTo(359, 494.895416f, 360.34314f, 494, 362, 494);
584 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000585 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000586}
587
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000588static void skpsciality_com161(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000589 SkPath path;
590 path.setFillType(SkPath::kEvenOdd_FillType);
591 path.moveTo(656, 728);
592 path.cubicTo(653.790833f, 728, 652, 729.790833f, 652, 732);
593 path.lineTo(652, 789);
594 path.cubicTo(652, 791.209106f, 653.790833f, 793, 656, 793);
595 path.lineTo(769.001282f, 793);
596 path.cubicTo(770.657532f, 792.999268f, 772, 791.656433f, 772, 790);
597 path.lineTo(772, 731);
598 path.cubicTo(772, 729.34314f, 770.65686f, 728, 769, 728);
599 path.lineTo(656, 728);
600 path.close();
601 SkPath pathB;
602 pathB.setFillType(SkPath::kInverseWinding_FillType);
603 pathB.moveTo(655, 729);
604 pathB.lineTo(769, 729);
605 pathB.cubicTo(770.65686f, 729, 772, 729.895447f, 772, 731);
606 pathB.lineTo(772, 790);
607 pathB.cubicTo(772, 791.65686f, 770.65686f, 793, 769, 793);
608 pathB.lineTo(655, 793);
609 pathB.cubicTo(653.34314f, 793, 652, 791.65686f, 652, 790);
610 pathB.lineTo(652, 731);
611 pathB.cubicTo(652, 729.895447f, 653.34314f, 729, 655, 729);
612 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000613 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000614}
615
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000616static void skpsudoestenegocios_com186(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000617 SkPath path;
618 path.setFillType(SkPath::kEvenOdd_FillType);
619 path.moveTo(0, 495);
620 path.lineTo(1.23685242e-14f, 293);
621 path.lineTo(44, 293);
622 path.quadTo(45.6568527f, 293, 46.8288002f, 294.171204f);
623 path.quadTo(48, 295.34314f, 48, 297);
624 path.lineTo(48, 491);
625 path.quadTo(48, 492.65686f, 46.8288002f, 493.828796f);
626 path.quadTo(45.6568527f, 495, 44, 495);
627 path.lineTo(0, 495);
628 path.close();
629 path.moveTo(1, 294);
630 path.lineTo(44, 294);
631 path.cubicTo(45.6568565f, 294, 47, 295.34314f, 47, 297);
632 path.lineTo(47, 491);
633 path.cubicTo(47, 492.65686f, 45.6568565f, 494, 44, 494);
634 path.lineTo(1, 494);
635 path.lineTo(1, 294);
636 path.close();
637 SkPath pathB;
638 pathB.setFillType(SkPath::kWinding_FillType);
639 pathB.moveTo(48, 495);
640 pathB.lineTo(24, 471);
641 pathB.lineTo(24, 317);
642 pathB.lineTo(48, 293);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000643 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000644}
645
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000646static void skpthesuburbanite_com213(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000647 SkPath path;
648 path.setFillType(SkPath::kEvenOdd_FillType);
649 path.moveTo(863.439026f, 692);
650 path.lineTo(863.283264f, 692);
651 path.lineTo(802, 708.420837f);
652 path.lineTo(802, 718.773621f);
653 path.lineTo(866, 701.624817f);
654 path.lineTo(866, 701.557922f);
655 path.lineTo(863.439026f, 692);
656 path.close();
657 SkPath pathB;
658 pathB.setFillType(SkPath::kWinding_FillType);
659 pathB.moveTo(783.256775f, 713.443054f);
660 pathB.lineTo(863.428589f, 691.96106f);
661 pathB.lineTo(866.016724f, 701.620361f);
662 pathB.lineTo(785.84491f, 723.102356f);
663 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000664 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +0000665}
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000666
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000667static void skphostloco_com11(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000668 SkPath path;
669 path.setFillType(SkPath::kEvenOdd_FillType);
670 path.moveTo(6.66133815e-16f, 648);
671 path.lineTo(25.8522835f, 648);
672 path.quadTo(27.5087376f, 647.999634f, 28.6807098f, 646.82843f);
673 path.quadTo(29.8518829f, 645.656433f, 29.8522835f, 644);
674 path.lineTo(29.8522835f, 467);
675 path.quadTo(29.8518829f, 465.343536f, 28.6807098f, 464.17157f);
676 path.quadTo(27.5087376f, 463.000397f, 25.8522835f, 463);
677 path.lineTo(2.22044605e-16f, 463);
678 path.lineTo(6.66133815e-16f, 648);
679 path.close();
680 SkPath pathB;
681 pathB.setFillType(SkPath::kWinding_FillType);
682 pathB.moveTo(0, 463);
683 pathB.lineTo(30, 463);
684 pathB.lineTo(30, 648);
685 pathB.lineTo(0, 648);
686 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000687 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000688}
689
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000690static void skpsergeychunkevich_com8(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000691 SkPath path;
692 path.setFillType(SkPath::kEvenOdd_FillType);
693 path.moveTo(0, 926);
694 path.lineTo(0, 0);
695 path.lineTo(1265, 0);
696 path.lineTo(1265, 926);
697 path.lineTo(0, 926);
698 path.close();
699 SkPath pathB;
700 pathB.setFillType(SkPath::kInverseWinding_FillType);
701 pathB.moveTo(37, 374);
702 pathB.lineTo(37, 535);
703 pathB.cubicTo(37, 536.65686f, 35.6568565f, 538, 34, 538);
704 pathB.lineTo(1.02866934e-14f, 538);
705 pathB.lineTo(6.12303177e-17f, 371);
706 pathB.lineTo(34, 371);
707 pathB.cubicTo(35.6568565f, 371, 37, 372.34314f, 37, 374);
708 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000709 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000710}
711
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000712static void skptracksflow_com9(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000713 SkPath path;
714 path.setFillType(SkPath::kEvenOdd_FillType);
715 path.moveTo(16, 56);
716 path.lineTo(32, 56);
717 path.lineTo(32, 72);
718 path.lineTo(16, 72);
719 path.lineTo(16, 56);
720 path.close();
721 SkPath pathB;
722 pathB.setFillType(SkPath::kEvenOdd_FillType);
723 pathB.moveTo(31.65625f, 70.0555649f);
724 pathB.lineTo(31.65625f, 70.0554962f);
725 pathB.lineTo(26.9727192f, 65.3615341f);
726 pathB.cubicTo(27.6210003f, 64.4029694f, 28.0048752f, 63.2470932f, 28.0048752f, 62.0027809f);
727 pathB.cubicTo(28.0048752f, 58.6875305f, 25.3199062f, 56, 22.0046558f, 56);
728 pathB.cubicTo(18.6894073f, 56, 16.0031872f, 58.6875305f, 16.0031872f, 62.0027809f);
729 pathB.cubicTo(16.0031872f, 65.3180008f, 18.6913433f, 68.0055618f, 22.0066261f, 68.0055618f);
730 pathB.cubicTo(23.2509995f, 68.0055618f, 24.4072189f, 67.6187515f, 25.3657818f, 66.9704056f);
731 pathB.lineTo(30.0599365f, 71.65625f);
732 pathB.lineTo(30.0600014f, 71.65625f);
733 pathB.cubicTo(30.2668133f, 71.875f, 30.5524693f, 71.9992828f, 30.868f, 71.9992828f);
734 pathB.cubicTo(31.4994049f, 71.9992828f, 32.0014687f, 71.4909363f, 32.0014687f, 70.8595276f);
735 pathB.cubicTo(32.0015335f, 70.5439072f, 31.875f, 70.2623444f, 31.65625f, 70.0555649f);
736 pathB.close();
737 pathB.moveTo(18.0054054f, 62.0027809f);
738 pathB.cubicTo(18.0054054f, 59.7925949f, 19.7970943f, 58.0009079f, 22.0072823f, 58.0009079f);
739 pathB.cubicTo(24.2174377f, 58.0009079f, 26.0091248f, 59.7925949f, 26.0091248f, 62.0027809f);
740 pathB.cubicTo(26.0091248f, 64.2129364f, 24.2174377f, 66.0046234f, 22.0072803f, 66.0046234f);
741 pathB.cubicTo(19.7970943f, 66.0045929f, 18.0054054f, 64.2129059f, 18.0054054f, 62.0027809f);
742 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000743 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000744}
745
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000746static void skpautobutler_dk29(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000747 SkPath path;
748 path.setFillType(SkPath::kEvenOdd_FillType);
749 path.moveTo(0, 926);
750 path.lineTo(0, 0);
751 path.lineTo(1265, 0);
752 path.lineTo(1265, 926);
753 path.lineTo(0, 926);
754 path.close();
755 SkPath pathB;
756 pathB.setFillType(SkPath::kWinding_FillType);
757 pathB.moveTo(21, 162);
758 pathB.lineTo(21, 301);
759 pathB.lineTo(8.57224448e-15f, 301);
760 pathB.lineTo(6.12303177e-17f, 162);
761 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000762 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000763}
764
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000765static void skponlinecollege_org144(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000766 SkPath path;
767 path.setFillType(SkPath::kEvenOdd_FillType);
768 path.moveTo(179, 407);
769 path.cubicTo(177.34314f, 407, 176, 408.34314f, 176, 410);
770 path.lineTo(176, 436);
771 path.cubicTo(176, 437.65686f, 177.34314f, 439, 179, 439);
772 path.lineTo(337.002289f, 439);
773 path.cubicTo(338.105835f, 438.998779f, 339, 438.103821f, 339, 437);
774 path.lineTo(339, 409);
775 path.cubicTo(339, 407.896362f, 338.10611f, 407.001526f, 337.002838f, 407);
776 path.lineTo(179, 407);
777 path.close();
778 SkPath pathB;
779 pathB.setFillType(SkPath::kInverseWinding_FillType);
780 pathB.moveTo(179, 408);
781 pathB.lineTo(337, 408);
782 pathB.cubicTo(338.65686f, 408, 340, 408.895416f, 340, 410);
783 pathB.lineTo(340, 436);
784 pathB.cubicTo(340, 437.65686f, 338.65686f, 439, 337, 439);
785 pathB.lineTo(179, 439);
786 pathB.cubicTo(177.895432f, 439, 177, 437.65686f, 177, 436);
787 pathB.lineTo(177, 410);
788 pathB.cubicTo(177, 408.895416f, 177.895432f, 408, 179, 408);
789 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000790 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000791}
792
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000793static void skpnational_com_au81(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000794 SkPath path;
795 path.setFillType(SkPath::kEvenOdd_FillType);
796 path.moveTo(807, 817);
797 path.quadTo(806.585876f, 817.000122f, 806.292908f, 817.292908f);
798 path.quadTo(806.000122f, 817.585876f, 806, 818);
799 path.lineTo(806, 881);
800 path.lineTo(1111, 881);
801 path.lineTo(1111, 818);
802 path.quadTo(1110.99988f, 817.585876f, 1110.70715f, 817.292908f);
803 path.quadTo(1110.41406f, 817.000122f, 1110, 817);
804 path.lineTo(807, 817);
805 path.close();
806 SkPath pathB;
807 pathB.setFillType(SkPath::kInverseWinding_FillType);
808 pathB.moveTo(807, 817);
809 pathB.lineTo(1110, 817);
810 pathB.cubicTo(1110.55225f, 817, 1111, 817.447693f, 1111, 818);
811 pathB.lineTo(1111, 880);
812 pathB.lineTo(806, 880);
813 pathB.lineTo(806, 818);
814 pathB.cubicTo(806, 817.447693f, 806.447693f, 817, 807, 817);
815 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000816 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000817}
818
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000819static void skprentacheat_com30(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000820 SkPath path;
821 path.setFillType(SkPath::kEvenOdd_FillType);
822 path.moveTo(967, 263);
823 path.quadTo(966.585876f, 263.000092f, 966.292908f, 263.292908f);
824 path.quadTo(966.000122f, 263.585876f, 966, 264);
825 path.lineTo(966, 301);
826 path.lineTo(1214, 301);
827 path.lineTo(1214, 264);
828 path.quadTo(1213.99988f, 263.585876f, 1213.70715f, 263.292908f);
829 path.quadTo(1213.41406f, 263.000092f, 1213, 263);
830 path.lineTo(967, 263);
831 path.close();
832 SkPath pathB;
833 pathB.setFillType(SkPath::kInverseWinding_FillType);
834 pathB.moveTo(967, 263);
835 pathB.lineTo(1213, 263);
836 pathB.cubicTo(1213.55225f, 263, 1214, 263.447723f, 1214, 264);
837 pathB.lineTo(1214, 300);
838 pathB.lineTo(966, 300);
839 pathB.lineTo(966, 264);
840 pathB.cubicTo(966, 263.447723f, 966.447693f, 263, 967, 263);
841 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000842 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000843}
844
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000845static void skpbreakmystyle_com10(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000846 SkPath path;
847 path.setFillType(SkPath::kEvenOdd_FillType);
848 path.moveTo(271.032867f, -5.32907052e-15f);
849 path.lineTo(56.9671326f, -5.16253706e-15f);
850 path.quadTo(52.7835083f, 3.69968891f, 48.7416f, 7.74160004f);
851 path.quadTo(1, 55.4831848f, 1, 123);
852 path.quadTo(1, 190.516815f, 48.7416f, 238.258392f);
853 path.quadTo(96.4831848f, 286, 164, 286);
854 path.quadTo(231.516815f, 286, 279.258392f, 238.258392f);
855 path.quadTo(327, 190.516815f, 327, 123);
856 path.quadTo(327, 55.4831848f, 279.258392f, 7.74160004f);
857 path.quadTo(275.216431f, 3.69964004f, 271.032867f, -5.32907052e-15f);
858 path.close();
859 SkPath pathB;
860 pathB.setFillType(SkPath::kWinding_FillType);
861 pathB.moveTo(327, 123);
862 pathB.quadTo(327, 190.516815f, 279.258392f, 238.258392f);
863 pathB.quadTo(231.516815f, 286, 164, 286);
864 pathB.quadTo(96.4831848f, 286, 48.7416f, 238.258392f);
865 pathB.quadTo(1, 190.516815f, 1, 123);
866 pathB.quadTo(1, 55.4831848f, 48.7416f, 7.74160004f);
867 pathB.quadTo(96.4831848f, -40, 164, -40);
868 pathB.quadTo(231.516815f, -40, 279.258392f, 7.74160004f);
869 pathB.quadTo(327, 55.4831848f, 327, 123);
870 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000871 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000872}
873
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000874static void skpsd_graphic_net104(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000875 SkPath path;
876 path.setFillType(SkPath::kEvenOdd_FillType);
877 path.moveTo(475.421448f, 836.985962f);
878 path.lineTo(461.280975f, 841.990662f);
879 path.cubicTo(466.80899f, 857.609802f, 458.62854f, 874.752991f, 443.009399f, 880.281006f);
880 path.cubicTo(435.199829f, 883.044983f, 427.009247f, 882.381897f, 420.080048f, 879.075378f);
881 path.lineTo(413.620056f, 892.613037f);
882 path.quadTo(430.419983f, 900.629761f, 447.96701f, 894.43811f);
883 path.quadTo(448.00708f, 894.42395f, 448.014038f, 894.421509f);
884 path.quadTo(448.043976f, 894.410889f, 448.061066f, 894.404846f);
885 path.quadTo(465.596313f, 888.179932f, 473.613037f, 871.379944f);
886 path.quadTo(477.351227f, 863.546143f, 478, 855.549866f);
887 path.lineTo(478, 848.804321f);
888 path.quadTo(477.528076f, 842.93811f, 475.421448f, 836.985962f);
889 path.close();
890 SkPath pathB;
891 pathB.setFillType(SkPath::kWinding_FillType);
892 pathB.moveTo(405.592621f, 909.435547f);
893 pathB.lineTo(390.578583f, 867.014099f);
894 pathB.lineTo(433, 852.000061f);
895 pathB.lineTo(490.435486f, 879.40741f);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000896 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000897}
898
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000899/* this cubic/quad pair
900 c = 430,280 430,278.895416 473.876068,278 528,278
901 q = 430,280 430.009796,277.101196 458.703552,275.050262
902 only intersect at the shared point (430,280)
903 they sort backwards because the tangent from pt[0] to control pt[1]
904 c' = (0.00000000000000000, -1.1045837402343750)
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +0000905 q' = (0.0097961425781250000, -2.8988037109375000)
906 suggests that the quad is counterclockwise of the cubic, when the reverse is true
907 the angle code is fooled because the control pt[1] of both the quad and cubic
908 is far away from cubic cntl [2] and quad pt [2].
909 Maybe in angle setup, this instability can be detected to suppress sorting on the initial tangent
910 Or the error term can be passed to NearRay that is magnified by the distance from the next ctrl?
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000911 */
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000912static void skpnaoxrane_ru23(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000913 SkPath path;
914 path.setFillType(SkPath::kEvenOdd_FillType);
915 path.moveTo(458.703552f, 275.050262f);
916 path.quadTo(487.41687f, 273.000702f, 528, 273);
917 path.lineTo(529, 273);
918 path.quadTo(530.242371f, 273.000305f, 531.121338f, 273.878693f);
919 path.quadTo(531.999695f, 274.75766f, 532, 276);
920 path.lineTo(532, 378);
921 path.quadTo(531.990173f, 380.898804f, 503.296448f, 382.949738f);
922 path.quadTo(474.58313f, 384.999298f, 434, 385);
923 path.lineTo(433, 385);
924 path.quadTo(431.75766f, 384.999695f, 430.878693f, 384.121307f);
925 path.quadTo(430.000305f, 383.24234f, 430, 382);
926 path.lineTo(430, 280);
927 path.quadTo(430.009796f, 277.101196f, 458.703552f, 275.050262f);
928 path.close();
929 SkPath pathB;
930 pathB.setFillType(SkPath::kInverseWinding_FillType);
931 pathB.moveTo(528, 278);
932 pathB.lineTo(529, 278);
933 pathB.cubicTo(530.65686f, 278, 532, 278, 532, 278);
934 pathB.lineTo(532, 378);
935 pathB.cubicTo(532, 379.104584f, 488.123932f, 380, 434, 380);
936 pathB.lineTo(433, 380);
937 pathB.cubicTo(431.34314f, 380, 430, 380, 430, 380);
938 pathB.lineTo(430, 280);
939 pathB.cubicTo(430, 278.895416f, 473.876068f, 278, 528, 278);
940 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000941 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000942}
943
944/* didn't investigate thoroughly, but looks to be missorting quad and cubic
945 {{468.507751,560.724426}, {467.275146,552.856262}, {465.84668,547.288391}}
946 {{463.779907,542.671143}, {464.829529,542.672974}, {466.946289,550.755676}, {468.507751,560.724426}}
947 decision maker is case 14 leftLessThanRight
948 */
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000949static void skptcmevents_org23(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000950 SkPath path;
951 path.setFillType(SkPath::kEvenOdd_FillType);
952 path.moveTo(465.503998f, 546);
953 path.lineTo(347, 546);
954 path.lineTo(347, 632);
955 path.lineTo(469.104248f, 632);
956 path.quadTo(470.79007f, 627.638672f, 471.833496f, 621.036255f);
957 path.quadTo(474.902588f, 601.562866f, 470.591064f, 574.024353f);
958 path.lineTo(468.507751f, 560.724426f);
959 path.quadTo(467.275146f, 552.856262f, 465.84668f, 547.288391f);
960 path.quadTo(465.670349f, 546.601501f, 465.503998f, 546);
961 path.close();
962 SkPath pathB;
963 pathB.setFillType(SkPath::kInverseWinding_FillType);
964 pathB.moveTo(363.052246f, 542.495361f);
965 pathB.lineTo(463.779907f, 542.671143f);
966 pathB.cubicTo(464.829529f, 542.672974f, 466.946289f, 550.755676f, 468.507751f, 560.724426f);
967 pathB.lineTo(470.591064f, 574.024353f);
968 pathB.cubicTo(476.26178f, 610.226624f, 471.498932f, 639.557922f, 459.953003f, 639.537781f);
969 pathB.lineTo(368.727936f, 639.378601f);
970 pathB.cubicTo(351.933868f, 639.349304f, 337.053741f, 631.244324f, 335.492249f, 621.275574f);
971 pathB.lineTo(325.968597f, 560.475708f);
972 pathB.cubicTo(324.407104f, 550.506958f, 341.01001f, 542.456909f, 363.052246f, 542.495361f);
973 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000974 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000975}
976
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000977static void skpredbullskatearcade_es16(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +0000978 SkPath path;
979 path.setFillType(SkPath::kEvenOdd_FillType);
980 path.moveTo(936.765625f, 458.965302f);
981 path.cubicTo(937.028442f, 453.863251f, 933.145813f, 449.864502f, 928.093445f, 450.033905f);
982 path.lineTo(661.882263f, 458.958862f);
983 path.lineTo(661.875366f, 458.959106f);
984 path.cubicTo(656.828369f, 459.13205f, 652.525085f, 463.399719f, 652.258545f, 468.496124f);
985 path.lineTo(652.258179f, 468.503662f);
986 path.lineTo(649.021729f, 531.322754f);
987 path.cubicTo(648.75885f, 536.424805f, 652.641479f, 540.423523f, 657.693848f, 540.25415f);
988 path.lineTo(923.905029f, 531.329163f);
989 path.cubicTo(928.955017f, 531.159851f, 933.262268f, 526.890442f, 933.528809f, 521.791565f);
990 path.lineTo(933.529175f, 521.784363f);
991 path.lineTo(936.765625f, 458.965302f);
992 path.close();
993 SkPath pathB;
994 pathB.setFillType(SkPath::kInverseWinding_FillType);
995 pathB.moveTo(661.882263f, 458.958862f);
996 pathB.lineTo(928.093445f, 450.033905f);
997 pathB.cubicTo(929.103882f, 450, 929.709961f, 454.108612f, 929.447144f, 459.210663f);
998 pathB.lineTo(926.210693f, 522.029724f);
999 pathB.cubicTo(926.079224f, 524.58075f, 925.153442f, 526.676208f, 924.143066f, 526.710083f);
1000 pathB.lineTo(657.931885f, 535.635071f);
1001 pathB.cubicTo(652.879456f, 535.804443f, 648.890259f, 533.873779f, 649.021729f, 531.322754f);
1002 pathB.lineTo(652.258179f, 468.503662f);
1003 pathB.cubicTo(652.520996f, 463.401611f, 656.829834f, 459.128235f, 661.882263f, 458.958862f);
1004 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001005 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001006}
1007
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001008static void skpfinanzasdigital_com9(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001009 SkPath path;
1010 path.setFillType(SkPath::kEvenOdd_FillType);
1011 path.moveTo(156, 126);
1012 path.quadTo(154.343552f, 126.000397f, 153.17157f, 127.17157f);
1013 path.quadTo(152.000397f, 128.343552f, 152, 130);
1014 path.lineTo(152, 174);
1015 path.lineTo(1114, 174);
1016 path.lineTo(1114, 130);
1017 path.quadTo(1113.99963f, 128.343552f, 1112.82837f, 127.17157f);
1018 path.quadTo(1111.65649f, 126.000397f, 1110, 126);
1019 path.lineTo(156, 126);
1020 path.close();
1021 SkPath pathB;
1022 pathB.setFillType(SkPath::kInverseWinding_FillType);
1023 pathB.moveTo(156, 126);
1024 pathB.lineTo(1110, 126);
1025 pathB.cubicTo(1111.65686f, 126, 1113, 127.790863f, 1113, 130);
1026 pathB.lineTo(1113, 174);
1027 pathB.lineTo(153, 174);
1028 pathB.lineTo(153, 130);
1029 pathB.cubicTo(153, 127.790863f, 154.34314f, 126, 156, 126);
1030 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001031 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001032}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001033
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001034static void skppartainasdemo250_org56(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001035 SkPath path;
1036 path.setFillType(SkPath::kEvenOdd_FillType);
1037 path.moveTo(182.000015f, 645);
1038 path.lineTo(182, 640);
1039 path.cubicTo(174.322327f, 640, 166.644669f, 637.071045f, 160.786804f, 631.213196f);
1040 path.cubicTo(149.071075f, 619.497437f, 149.071075f, 600.502563f, 160.786804f, 588.786804f);
1041 path.lineTo(157.251266f, 585.251221f);
1042 path.quadTo(147, 595.502502f, 147.000015f, 610);
1043 path.quadTo(147, 624.482605f, 157.230255f, 634.727722f);
1044 path.quadTo(157.251251f, 634.748779f, 157.251282f, 634.748779f);
1045 path.quadTo(157.282852f, 634.780334f, 157.272263f, 634.769775f);
1046 path.quadTo(167.517334f, 645, 182.000015f, 645);
1047 path.close();
1048 SkPath pathB;
1049 pathB.setFillType(SkPath::kWinding_FillType);
1050 pathB.moveTo(182, 659.497498f);
1051 pathB.lineTo(206.748749f, 634.748718f);
1052 pathB.lineTo(182.000015f, 610);
1053 pathB.lineTo(132.502533f, 610);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001054 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001055}
1056
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001057static void skpmlk_com326(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001058 SkPath path;
1059 path.setFillType(SkPath::kEvenOdd_FillType);
1060 path.moveTo(154, 670);
1061 path.cubicTo(151.238571f, 670, 149, 672.238586f, 149, 675);
1062 path.lineTo(149, 710.001465f);
1063 path.cubicTo(149.000809f, 712.209961f, 150.791367f, 714, 153, 714);
1064 path.lineTo(189, 714);
1065 path.cubicTo(191.209137f, 714, 193, 712.209167f, 193, 710);
1066 path.lineTo(193, 675);
1067 path.cubicTo(193, 672.238586f, 190.761429f, 670, 188, 670);
1068 path.lineTo(154, 670);
1069 path.close();
1070 SkPath pathB;
1071 pathB.setFillType(SkPath::kInverseWinding_FillType);
1072 pathB.moveTo(154, 671);
1073 pathB.lineTo(188, 671);
1074 pathB.cubicTo(190.761429f, 671, 193, 672.790833f, 193, 675);
1075 pathB.lineTo(193, 710);
1076 pathB.cubicTo(193, 712.761414f, 190.761429f, 715, 188, 715);
1077 pathB.lineTo(154, 715);
1078 pathB.cubicTo(151.238571f, 715, 149, 712.761414f, 149, 710);
1079 pathB.lineTo(149, 675);
1080 pathB.cubicTo(149, 672.790833f, 151.238571f, 671, 154, 671);
1081 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001082 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001083}
1084
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001085static void skpcyclist_friends_gr52(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001086 SkPath path;
1087 path.setFillType(SkPath::kEvenOdd_FillType);
1088 path.moveTo(50, 182);
1089 path.lineTo(1215, 182);
1090 path.lineTo(1215, 202);
1091 path.quadTo(1214.99951f, 204.070572f, 1213.53552f, 205.535538f);
1092 path.quadTo(1212.07056f, 206.999496f, 1210, 207);
1093 path.lineTo(55, 207);
1094 path.quadTo(52.9294319f, 206.999496f, 51.4644661f, 205.535538f);
1095 path.quadTo(50.0004997f, 204.070572f, 50, 202);
1096 path.lineTo(50, 182);
1097 path.close();
1098 SkPath pathB;
1099 pathB.setFillType(SkPath::kInverseWinding_FillType);
1100 pathB.moveTo(50, 183);
1101 pathB.lineTo(1215, 183);
1102 pathB.lineTo(1215, 202);
1103 pathB.cubicTo(1215, 204.761429f, 1212.76147f, 207, 1210, 207);
1104 pathB.lineTo(55, 207);
1105 pathB.cubicTo(52.238575f, 207, 50, 204.761429f, 50, 202);
1106 pathB.lineTo(50, 183);
1107 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001108 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001109}
1110
1111/* cubic ends just above opp line */
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001112static void skpwww_fj_p_com_22(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001113 SkPath path;
1114 path.setFillType(SkPath::kEvenOdd_FillType);
1115 path.moveTo(172, 201);
1116 path.lineTo(172, 202);
1117 path.lineTo(220, 202);
1118 path.cubicTo(221.65686f, 202, 223, 200.65686f, 223, 199);
1119 path.cubicTo(223, 200.104568f, 221.65686f, 201, 220, 201);
1120 path.lineTo(172, 201);
1121 path.close();
1122 SkPath pathB;
1123 pathB.setFillType(SkPath::kWinding_FillType);
1124 pathB.moveTo(161, 202);
1125 pathB.lineTo(161, 199);
1126 pathB.lineTo(223, 199.000015f);
1127 pathB.lineTo(223, 202);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001128 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001129}
1130
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001131// pair of lines are not quite coincident, so sorting line/cubic fails (i think)
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001132static void skpwww_lavoixdunord_fr_11(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001133 SkPath path;
1134 path.setFillType(SkPath::kEvenOdd_FillType);
1135 path.moveTo(806, 57);
1136 path.cubicTo(806, 55.3431473f, 807.34314f, 54, 809, 54);
1137 path.lineTo(930, 54);
1138 path.cubicTo(931.65686f, 54, 933, 55.3431473f, 933, 57);
1139 path.lineTo(933, 91);
1140 path.cubicTo(933, 92.6568527f, 931.65686f, 94, 930, 94);
1141 path.lineTo(809, 94);
1142 path.cubicTo(807.34314f, 94, 806, 92.6568527f, 806, 91);
1143 path.lineTo(806, 57);
1144 path.close();
1145 path.moveTo(808, 58);
1146 path.cubicTo(808, 56.8954315f, 808.895447f, 56, 810, 56);
1147 path.lineTo(929, 56);
1148 path.cubicTo(930.104553f, 56, 931, 56.8954315f, 931, 58);
1149 path.lineTo(931, 90);
1150 path.cubicTo(931, 91.1045685f, 930.104553f, 92, 929, 92);
1151 path.lineTo(810, 92);
1152 path.cubicTo(808.895447f, 92, 808, 91.1045685f, 808, 90);
1153 path.lineTo(808, 58);
1154 path.close();
1155 SkPath pathB;
1156 pathB.setFillType(SkPath::kWinding_FillType);
1157 pathB.moveTo(806, 54);
1158 pathB.lineTo(808, 56);
1159 pathB.lineTo(935.02002f, 56.0200005f);
1160 pathB.lineTo(933, 54);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001161 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001162}
1163
1164// pair of curves have nearly the same initial tangent but are sorting by
1165// that alone sorts them incorrectly. Need to detect that tangents are nearly
1166// identical and not reliable by themselves
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001167static void skppptv_com_62(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001168 SkPath path;
1169 path.setFillType(SkPath::kEvenOdd_FillType);
1170 path.moveTo(173, 5342);
1171 path.quadTo(171.343536f, 5342.00049f, 170.17157f, 5343.17139f);
1172 path.quadTo(169.000397f, 5344.34375f, 169, 5346);
1173 path.lineTo(169, 5372);
1174 path.lineTo(234, 5372);
1175 path.lineTo(234, 5346);
1176 path.quadTo(233.999603f, 5344.34375f, 232.82843f, 5343.17139f);
1177 path.quadTo(231.656464f, 5342.00049f, 230, 5342);
1178 path.lineTo(173, 5342);
1179 path.close();
1180 SkPath pathB;
1181 pathB.setFillType(SkPath::kInverseWinding_FillType);
1182 pathB.moveTo(173, 5342);
1183 pathB.lineTo(230, 5342);
1184 pathB.cubicTo(231.65686f, 5342, 233, 5343.79102f, 233, 5346);
1185 pathB.lineTo(233, 5372);
1186 pathB.lineTo(169, 5372);
1187 pathB.lineTo(169, 5346);
1188 pathB.cubicTo(169, 5343.79102f, 170.790863f, 5342, 173, 5342);
1189 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001190 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001191}
1192
1193// nearly identical to lavoixdunord -- to not-quite-coincident lines
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001194static void skpwww_booking_com_68(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001195 SkPath path;
1196 path.setFillType(SkPath::kEvenOdd_FillType);
1197 path.moveTo(90, 187);
1198 path.cubicTo(90, 185.34314f, 91.3431473f, 184, 93, 184);
1199 path.lineTo(588, 184);
1200 path.cubicTo(589.65686f, 184, 591, 185.34314f, 591, 187);
1201 path.lineTo(591, 218);
1202 path.cubicTo(591, 219.65686f, 589.65686f, 221, 588, 221);
1203 path.lineTo(93, 221);
1204 path.cubicTo(91.3431473f, 221, 90, 219.65686f, 90, 218);
1205 path.lineTo(90, 187);
1206 path.close();
1207 path.moveTo(92, 188);
1208 path.cubicTo(92, 186.895432f, 92.8954315f, 186, 94, 186);
1209 path.lineTo(587, 186);
1210 path.cubicTo(588.104553f, 186, 589, 186.895432f, 589, 188);
1211 path.lineTo(589, 217);
1212 path.cubicTo(589, 218.104568f, 588.104553f, 219, 587, 219);
1213 path.lineTo(94, 219);
1214 path.cubicTo(92.8954315f, 219, 92, 218.104568f, 92, 217);
1215 path.lineTo(92, 188);
1216 path.close();
1217 SkPath pathB;
1218 pathB.setFillType(SkPath::kWinding_FillType);
1219 pathB.moveTo(90, 184);
1220 pathB.lineTo(92, 186);
1221 pathB.lineTo(593.02002f, 186.020004f);
1222 pathB.lineTo(591, 184);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001223 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001224}
1225
1226// visually looks like lavoixdunord and www_booking_com
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001227static void skpwww_despegar_com_mx_272(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001228 SkPath path;
1229 path.setFillType(SkPath::kEvenOdd_FillType);
1230 path.moveTo(635, 1788);
1231 path.cubicTo(635, 1786.34314f, 636.34314f, 1785, 638, 1785);
1232 path.lineTo(832, 1785);
1233 path.cubicTo(833.65686f, 1785, 835, 1786.34314f, 835, 1788);
1234 path.lineTo(835, 1812);
1235 path.cubicTo(835, 1813.65686f, 833.65686f, 1815, 832, 1815);
1236 path.lineTo(638, 1815);
1237 path.cubicTo(636.34314f, 1815, 635, 1813.65686f, 635, 1812);
1238 path.lineTo(635, 1788);
1239 path.close();
1240 path.moveTo(637, 1789);
1241 path.cubicTo(637, 1787.89539f, 637.895447f, 1787, 639, 1787);
1242 path.lineTo(831, 1787);
1243 path.cubicTo(832.104553f, 1787, 833, 1787.89539f, 833, 1789);
1244 path.lineTo(833, 1811);
1245 path.cubicTo(833, 1812.10461f, 832.104553f, 1813, 831, 1813);
1246 path.lineTo(639, 1813);
1247 path.cubicTo(637.895447f, 1813, 637, 1812.10461f, 637, 1811);
1248 path.lineTo(637, 1789);
1249 path.close();
1250 SkPath pathB;
1251 pathB.setFillType(SkPath::kWinding_FillType);
1252 pathB.moveTo(835, 1785);
1253 pathB.lineTo(833, 1787);
1254 pathB.lineTo(832.97998f, 1817.02002f);
1255 pathB.lineTo(835, 1815);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001256 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001257}
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001258
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001259static void skpwww_joomla_org_23(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001260 SkPath path;
1261 path.setFillType(SkPath::kEvenOdd_FillType);
1262 path.moveTo(320, 347);
1263 path.cubicTo(320, 344.238586f, 322.238586f, 342, 325, 342);
1264 path.lineTo(416, 342);
1265 path.cubicTo(418.761414f, 342, 421, 344.238586f, 421, 347);
1266 path.cubicTo(421, 344.790863f, 418.761414f, 343, 416, 343);
1267 path.lineTo(325, 343);
1268 path.cubicTo(322.238586f, 343, 320, 344.790863f, 320, 347);
1269 path.close();
1270 path.moveTo(320, 378);
1271 path.cubicTo(320, 380.761414f, 322.238586f, 383, 325, 383);
1272 path.lineTo(416, 383);
1273 path.cubicTo(418.761414f, 383, 421, 380.761414f, 421, 378);
1274 path.cubicTo(421, 380.209137f, 418.761414f, 382, 416, 382);
1275 path.lineTo(325, 382);
1276 path.cubicTo(322.238586f, 382, 320, 380.209137f, 320, 378);
1277 path.close();
1278 SkPath pathB;
1279 pathB.setFillType(SkPath::kWinding_FillType);
1280 pathB.moveTo(320, 383);
1281 pathB.lineTo(320, 378);
1282 pathB.lineTo(421, 378.000031f);
1283 pathB.lineTo(421, 383);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001284 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001285}
1286
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001287static void skpwww_macrumors_com_131(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001288 SkPath path;
1289 path.setFillType(SkPath::kEvenOdd_FillType);
1290 path.moveTo(136, 14089);
1291 path.lineTo(136, 14056);
1292 path.lineTo(778, 14056);
1293 path.lineTo(778, 14089);
1294 path.quadTo(777.999573f, 14090.6562f, 776.82843f, 14091.8281f);
1295 path.quadTo(775.656433f, 14093, 774, 14093);
1296 path.lineTo(140, 14093);
1297 path.quadTo(138.343552f, 14093, 137.17157f, 14091.8281f);
1298 path.quadTo(136.000397f, 14090.6562f, 136, 14089);
1299 path.close();
1300 SkPath pathB;
1301 pathB.setFillType(SkPath::kInverseWinding_FillType);
1302 pathB.moveTo(136, 14057);
1303 pathB.lineTo(778, 14057);
1304 pathB.lineTo(778, 14089);
1305 pathB.cubicTo(778, 14091.209f, 776.209167f, 14093, 774, 14093);
1306 pathB.lineTo(140, 14093);
1307 pathB.cubicTo(137.790863f, 14093, 136, 14091.209f, 136, 14089);
1308 pathB.lineTo(136, 14057);
1309 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001310 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001311}
1312
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001313static void skpwww_leadpages_net_84(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001314 SkPath path;
1315 path.setFillType(SkPath::kEvenOdd_FillType);
1316 path.moveTo(377.1716f, 5910.17139f);
1317 path.cubicTo(376.447723f, 5910.89551f, 376, 5911.89551f, 376, 5913);
1318 path.lineTo(376, 5972);
1319 path.cubicTo(376, 5974.20898f, 377.790863f, 5976, 380, 5976);
1320 path.cubicTo(378.34314f, 5976, 377, 5974.20898f, 377, 5972);
1321 path.lineTo(377, 5913);
1322 path.cubicTo(377, 5912.17139f, 377.335785f, 5911.42188f, 377.878693f, 5910.87891f);
1323 path.lineTo(377.1716f, 5910.17139f);
1324 path.close();
1325 SkPath pathB;
1326 pathB.setFillType(SkPath::kWinding_FillType);
1327 pathB.moveTo(376, 5909);
1328 pathB.lineTo(378.481873f, 5909);
1329 pathB.lineTo(379.999878f, 5976);
1330 pathB.lineTo(376, 5976);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001331 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001332}
1333
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001334static void skpwww_briian_com_34(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001335 SkPath path;
1336 path.setFillType(SkPath::kEvenOdd_FillType);
1337 path.moveTo(843, 216);
1338 path.cubicTo(843, 213.238571f, 845.238586f, 211, 848, 211);
1339 path.lineTo(1191, 211);
1340 path.cubicTo(1193.76147f, 211, 1196, 213.238571f, 1196, 216);
1341 path.lineTo(1196, 779);
1342 path.cubicTo(1196, 781.761414f, 1193.76147f, 784, 1191, 784);
1343 path.lineTo(848, 784);
1344 path.cubicTo(845.238586f, 784, 843, 781.761414f, 843, 779);
1345 path.lineTo(843, 216);
1346 path.close();
1347 path.moveTo(844, 217);
1348 path.cubicTo(844, 214.238571f, 846.238586f, 212, 849, 212);
1349 path.lineTo(1190, 212);
1350 path.cubicTo(1192.76147f, 212, 1195, 214.238571f, 1195, 217);
1351 path.lineTo(1195, 778);
1352 path.cubicTo(1195, 779.65686f, 1192.76147f, 781, 1190, 781);
1353 path.lineTo(849, 781);
1354 path.cubicTo(846.238586f, 781, 844, 779.65686f, 844, 778);
1355 path.lineTo(844, 217);
1356 path.close();
1357 SkPath pathB;
1358 pathB.setFillType(SkPath::kWinding_FillType);
1359 pathB.moveTo(843, 784);
1360 pathB.lineTo(843, 779);
1361 pathB.lineTo(1196, 779.000061f);
1362 pathB.lineTo(1196, 784);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001363 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001364}
1365
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001366static void skpwww_sciality_com_100(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001367 SkPath path;
1368 path.setFillType(SkPath::kEvenOdd_FillType);
1369 path.moveTo(162, 468);
1370 path.cubicTo(159.790863f, 468, 158, 469.790863f, 158, 472);
1371 path.lineTo(158, 528);
1372 path.cubicTo(158, 530.209106f, 159.790863f, 532, 162, 532);
1373 path.lineTo(275, 532);
1374 path.cubicTo(277.209137f, 532, 279, 530.209106f, 279, 528);
1375 path.lineTo(279, 472);
1376 path.cubicTo(279, 469.790863f, 277.209137f, 468, 275, 468);
1377 path.lineTo(162, 468);
1378 path.close();
1379 SkPath pathB;
1380 pathB.setFillType(SkPath::kWinding_FillType);
1381 pathB.moveTo(275, 468);
1382 pathB.cubicTo(276.65686f, 468, 278, 469.34314f, 278, 471);
1383 pathB.lineTo(278, 529);
1384 pathB.cubicTo(278, 530.65686f, 276.65686f, 532, 275, 532);
1385 pathB.lineTo(161, 532);
1386 pathB.cubicTo(159.34314f, 532, 158, 530.65686f, 158, 529);
1387 pathB.lineTo(158, 471);
1388 pathB.cubicTo(158, 469.34314f, 159.34314f, 468, 161, 468);
1389 pathB.lineTo(275, 468);
1390 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001391 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001392}
1393
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001394static void skpwww_sciality_com_101(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001395 SkPath path;
1396 path.setFillType(SkPath::kEvenOdd_FillType);
1397 path.moveTo(162, 468);
1398 path.cubicTo(159.790863f, 468, 158, 469.790863f, 158, 472);
1399 path.lineTo(158, 528);
1400 path.cubicTo(158, 530.209106f, 159.790863f, 532, 162, 532);
1401 path.lineTo(275.009186f, 532);
1402 path.cubicTo(276.661774f, 531.994995f, 278, 530.653748f, 278, 529);
1403 path.lineTo(278, 471);
1404 path.cubicTo(278, 469.346375f, 276.662079f, 468.005249f, 275.009705f, 468);
1405 path.lineTo(162, 468);
1406 path.close();
1407 SkPath pathB;
1408 pathB.setFillType(SkPath::kInverseWinding_FillType);
1409 pathB.moveTo(161, 469);
1410 pathB.lineTo(275, 469);
1411 pathB.cubicTo(276.65686f, 469, 278, 469.895416f, 278, 471);
1412 pathB.lineTo(278, 529);
1413 pathB.cubicTo(278, 530.65686f, 276.65686f, 532, 275, 532);
1414 pathB.lineTo(161, 532);
1415 pathB.cubicTo(159.34314f, 532, 158, 530.65686f, 158, 529);
1416 pathB.lineTo(158, 471);
1417 pathB.cubicTo(158, 469.895416f, 159.34314f, 469, 161, 469);
1418 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001419 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001420}
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001421
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001422static void skpwww_meb_gov_tr_5(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001423 SkPath path;
1424 path.setFillType(SkPath::kEvenOdd_FillType);
1425 path.moveTo(137.34314f, 145.34314f);
1426 path.quadTo(139.687088f, 143.000793f, 143, 143);
1427 path.lineTo(242, 143);
1428 path.quadTo(245.312912f, 143.000793f, 247.65686f, 145.34314f);
1429 path.quadTo(249.999207f, 147.687088f, 250, 151);
1430 path.lineTo(250, 177);
1431 path.lineTo(135, 177);
1432 path.lineTo(135, 151);
1433 path.quadTo(135.000793f, 147.687088f, 137.34314f, 145.34314f);
1434 path.close();
1435 SkPath pathB;
1436 pathB.setFillType(SkPath::kWinding_FillType);
1437 pathB.moveTo(135, 143);
1438 pathB.lineTo(250, 143);
1439 pathB.lineTo(250, 177);
1440 pathB.lineTo(135, 177);
1441 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001442 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001443}
1444
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001445static void skpwww_meb_gov_tr_6(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001446 SkPath path;
1447 path.setFillType(SkPath::kEvenOdd_FillType);
1448 path.moveTo(143, 143);
1449 path.quadTo(139.687088f, 143.000793f, 137.34314f, 145.34314f);
1450 path.quadTo(135.000793f, 147.687088f, 135, 151);
1451 path.lineTo(135, 177);
1452 path.lineTo(250, 177);
1453 path.lineTo(250, 151);
1454 path.quadTo(249.999207f, 147.687088f, 247.65686f, 145.34314f);
1455 path.quadTo(245.312912f, 143.000793f, 242, 143);
1456 path.lineTo(143, 143);
1457 path.close();
1458 SkPath pathB;
1459 pathB.setFillType(SkPath::kInverseWinding_FillType);
1460 pathB.moveTo(143, 143);
1461 pathB.lineTo(242, 143);
1462 pathB.cubicTo(245.865997f, 143, 249, 146.581726f, 249, 151);
1463 pathB.lineTo(249, 177);
1464 pathB.lineTo(135, 177);
1465 pathB.lineTo(135, 151);
1466 pathB.cubicTo(135, 146.581726f, 138.581726f, 143, 143, 143);
1467 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001468 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001469}
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001470
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001471static void skpgithub_io_25(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001472 SkPath path;
1473 path.setFillType(SkPath::kEvenOdd_FillType);
1474 path.moveTo(1001.87866f, 14.8786793f);
1475 path.quadTo(1002.75745f, 14.0001001f, 1004, 14);
1476 path.lineTo(1105, 14);
1477 path.quadTo(1106.24255f, 14.0001001f, 1107.12134f, 14.8786793f);
1478 path.quadTo(1107.99988f, 15.7574596f, 1108, 17);
1479 path.lineTo(1108, 41);
1480 path.quadTo(1107.99988f, 42.2425423f, 1107.12134f, 43.1213188f);
1481 path.quadTo(1106.24255f, 43.9999008f, 1105, 44);
1482 path.lineTo(1004, 44);
1483 path.quadTo(1002.75745f, 43.9999008f, 1001.87866f, 43.1213188f);
1484 path.quadTo(1001.00012f, 42.2425423f, 1001, 41);
1485 path.lineTo(1001, 17);
1486 path.quadTo(1001.00012f, 15.7574596f, 1001.87866f, 14.8786793f);
1487 path.close();
1488 SkPath pathB;
1489 pathB.setFillType(SkPath::kInverseWinding_FillType);
1490 pathB.moveTo(1005, 16);
1491 pathB.lineTo(1104, 16);
1492 pathB.cubicTo(1105.10461f, 16, 1106, 16.8954296f, 1106, 18);
1493 pathB.lineTo(1106, 40);
1494 pathB.cubicTo(1106, 41.1045685f, 1105.10461f, 42, 1104, 42);
1495 pathB.lineTo(1005, 42);
1496 pathB.cubicTo(1003.89545f, 42, 1003, 41.1045685f, 1003, 40);
1497 pathB.lineTo(1003, 18);
1498 pathB.cubicTo(1003, 16.8954296f, 1003.89545f, 16, 1005, 16);
1499 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001500 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001501}
1502
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001503static void skpgithub_io_26(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001504 SkPath path;
1505 path.setFillType(SkPath::kEvenOdd_FillType);
1506 path.moveTo(1001.87866f, 14.8786793f);
1507 path.quadTo(1002.75745f, 14.0001001f, 1004, 14);
1508 path.lineTo(1105, 14);
1509 path.quadTo(1106.24255f, 14.0001001f, 1107.12134f, 14.8786793f);
1510 path.quadTo(1107.99988f, 15.7574596f, 1108, 17);
1511 path.lineTo(1108, 41);
1512 path.quadTo(1107.99988f, 42.2425423f, 1107.12134f, 43.1213188f);
1513 path.quadTo(1106.24255f, 43.9999008f, 1105, 44);
1514 path.lineTo(1004, 44);
1515 path.quadTo(1002.75745f, 43.9999008f, 1001.87866f, 43.1213188f);
1516 path.quadTo(1001.00012f, 42.2425423f, 1001, 41);
1517 path.lineTo(1001, 17);
1518 path.quadTo(1001.00012f, 15.7574596f, 1001.87866f, 14.8786793f);
1519 path.close();
1520 path.moveTo(1003, 18);
1521 path.cubicTo(1003, 16.8954296f, 1003.89545f, 16, 1005, 16);
1522 path.lineTo(1104, 16);
1523 path.cubicTo(1105.10461f, 16, 1106, 16.8954296f, 1106, 18);
1524 path.lineTo(1106, 40);
1525 path.cubicTo(1106, 41.1045685f, 1105.10461f, 42, 1104, 42);
1526 path.lineTo(1005, 42);
1527 path.cubicTo(1003.89545f, 42, 1003, 41.1045685f, 1003, 40);
1528 path.lineTo(1003, 18);
1529 path.close();
1530 SkPath pathB;
1531 pathB.setFillType(SkPath::kWinding_FillType);
1532 pathB.moveTo(1108, 14);
1533 pathB.lineTo(1106, 16);
1534 pathB.lineTo(1105.97998f, 46.0200005f);
1535 pathB.lineTo(1108, 44);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001536 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00001537}
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001538
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001539static void skpskpicture14(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comed000842013-11-09 07:02:23 +00001540 SkPath path;
1541 path.setFillType(SkPath::kEvenOdd_FillType);
1542 path.moveTo(0, 994);
1543 path.lineTo(0, 0);
1544 path.lineTo(512, 0);
1545 path.lineTo(512, 994);
1546 path.lineTo(0, 994);
1547 path.close();
1548 SkPath pathB;
1549 pathB.setFillType(SkPath::kWinding_FillType);
1550 pathB.moveTo(-317, 168);
1551 pathB.quadTo(-317, 166.757385f, -316.121338f, 165.878662f);
1552 pathB.quadTo(-315.242645f, 165, -314, 165);
1553 pathB.lineTo(320, 165);
1554 pathB.quadTo(321.242615f, 165, 322.121338f, 165.878662f);
1555 pathB.quadTo(323, 166.757385f, 323, 168);
1556 pathB.lineTo(323, 193);
1557 pathB.lineTo(-317, 193);
1558 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001559 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comed000842013-11-09 07:02:23 +00001560}
1561
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001562static void skpskpicture15(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comed000842013-11-09 07:02:23 +00001563 SkPath path;
1564 path.setFillType(SkPath::kEvenOdd_FillType);
1565 path.moveTo(0, 193);
1566 path.lineTo(323, 193);
1567 path.lineTo(323, 168);
1568 path.quadTo(323, 166.757385f, 322.121338f, 165.878662f);
1569 path.quadTo(321.242615f, 165, 320, 165);
1570 path.lineTo(0, 165);
1571 path.lineTo(0, 193);
1572 path.close();
1573 SkPath pathB;
1574 pathB.setFillType(SkPath::kInverseWinding_FillType);
1575 pathB.moveTo(-314, 165);
1576 pathB.lineTo(320, 165);
1577 pathB.cubicTo(321.65686f, 165, 323, 166.34314f, 323, 168);
1578 pathB.lineTo(323, 192);
1579 pathB.lineTo(-317, 192);
1580 pathB.lineTo(-317, 168);
1581 pathB.cubicTo(-317, 166.34314f, -315.65686f, 165, -314, 165);
1582 pathB.close();
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001583 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
skia.committer@gmail.comed000842013-11-09 07:02:23 +00001584}
caryclark@google.com15107262013-11-08 18:00:01 +00001585
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001586/* Three edges are partially coincident. Only one of the three knows about the other two.
1587 Subsequently, when the angle loop is created, it misses one of the edges.
1588 After coincident edges are processed, probably need a check-and-correct that makes sure the
1589 coincidences are all self-consistent.
1590 */
1591static void skpelpais_com_18(skiatest::Reporter* reporter, const char* filename) {
1592 SkPath path;
1593 path.setFillType(SkPath::kEvenOdd_FillType);
1594 path.moveTo(183, 8507);
1595 path.lineTo(552, 8506.99023f);
1596 path.lineTo(552, 8508);
1597 path.lineTo(183, 8508);
1598 path.lineTo(183, 8507);
1599 path.close();
1600 SkPath pathB;
1601 pathB.setFillType(SkPath::kWinding_FillType);
1602 pathB.moveTo(183, 8508);
1603 pathB.lineTo(183, 8506.99023f);
1604 pathB.lineTo(552, 8507);
1605 pathB.lineTo(552, 8508);
1606 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
1607}
1608
1609/* this generates a pair of lines that are essentially coincident; but the next line at a right
1610 angle is not treated as if it intersects at the same point.
1611 There are several of options:
1612 move the intersection of the right angle line to the coincident point (should 'near' do this?
1613 construct another coincident pair from the right angle line to the coincident point
1614 treat the intersection as simple and not coincident
1615 */
1616static void skpnamecheap_com_405(skiatest::Reporter* reporter, const char* filename) {
1617 SkPath path;
1618 path.setFillType(SkPath::kEvenOdd_FillType);
1619 path.moveTo(140, 1000);
1620 path.lineTo(140, 842);
1621 path.lineTo(141, 842);
1622 path.lineTo(141.14502f, 1000);
1623 path.lineTo(140, 1000);
1624 path.close();
1625 SkPath pathB;
1626 pathB.setFillType(SkPath::kWinding_FillType);
1627 pathB.moveTo(140, 842);
1628 pathB.lineTo(141.008835f, 837.9646f);
1629 pathB.lineTo(141.235291f, 1109.05884f);
1630 pathB.lineTo(140, 1114);
1631 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
1632}
1633
1634// fails on angle insert -- haven't investigated yet
1635static void skpwww_alrakoba_net_62(skiatest::Reporter* reporter, const char* filename) {
1636 SkPath path;
1637 path.setFillType(SkPath::kEvenOdd_FillType);
1638 path.moveTo(134.34314f, 9802.34277f);
1639 path.quadTo(132, 9804.68652f, 132, 9808);
1640 path.lineTo(132, 9822);
1641 path.quadTo(132, 9825.31348f, 134.34314f, 9827.65723f);
1642 path.quadTo(136.686295f, 9830, 140, 9830);
1643 path.lineTo(140.028473f, 9830);
1644 path.lineTo(139.877213f, 9828.90723f);
1645 path.quadTo(137.692032f, 9828.5332f, 136.050247f, 9826.65723f);
1646 path.quadTo(134, 9824.31348f, 134, 9821);
1647 path.lineTo(134, 9809);
1648 path.quadTo(134, 9806.10059f, 136.050247f, 9804.0498f);
1649 path.lineTo(134.34314f, 9802.34277f);
1650 path.close();
1651 SkPath pathB;
1652 pathB.setFillType(SkPath::kWinding_FillType);
1653 pathB.moveTo(132, 9800);
1654 pathB.lineTo(135.962357f, 9800);
1655 pathB.lineTo(140, 9830);
1656 pathB.lineTo(132, 9830);
1657 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
1658}
1659
1660/* asserts in alignSpanState looks like a coincident related bug */
1661static void skpwww_cityads_ru_249(skiatest::Reporter* reporter, const char* filename) {
1662 SkPath path;
1663 path.setFillType(SkPath::kEvenOdd_FillType);
1664 path.moveTo(817.464478f, 11.4644661f);
1665 path.quadTo(818.928955f, 10, 821, 10);
1666 path.lineTo(998, 10);
1667 path.quadTo(999.082947f, 10, 1000, 10.4003992f);
1668 path.lineTo(1000, 13.3527431f);
1669 path.quadTo(999.917603f, 13.2607508f, 999.82843f, 13.1715727f);
1670 path.quadTo(998.65686f, 12, 997, 12);
1671 path.lineTo(822, 12);
1672 path.quadTo(820.34314f, 12, 819.17157f, 13.1715727f);
1673 path.quadTo(818, 14.3431454f, 818, 16);
1674 path.lineTo(818, 28);
1675 path.quadTo(818, 29.6568546f, 819.17157f, 30.8284264f);
1676 path.quadTo(820.34314f, 32, 822, 32);
1677 path.lineTo(997, 32);
1678 path.quadTo(998.65686f, 32, 999.82843f, 30.8284264f);
1679 path.quadTo(999.917603f, 30.7392426f, 1000, 30.6472569f);
1680 path.lineTo(1000, 33.5996017f);
1681 path.quadTo(999.082947f, 34, 998, 34);
1682 path.lineTo(821, 34);
1683 path.quadTo(818.928955f, 34, 817.464478f, 32.5355339f);
1684 path.quadTo(816, 31.0710678f, 816, 29);
1685 path.lineTo(816, 15);
1686 path.quadTo(816, 12.9289322f, 817.464478f, 11.4644661f);
1687 path.close();
1688 SkPath pathB;
1689 pathB.setFillType(SkPath::kWinding_FillType);
1690 pathB.moveTo(1003, 10);
1691 pathB.lineTo(1000, 13);
1692 pathB.lineTo(999.969971f, 37.0299988f);
1693 pathB.lineTo(1003, 34);
1694 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
1695}
1696
1697// fails on angle insert
1698static void skpwww_dealnews_com_315(skiatest::Reporter* reporter, const char* filename) {
1699 SkPath path;
1700 path.setFillType(SkPath::kEvenOdd_FillType);
1701 path.moveTo(966.464478f, 4261.46436f);
1702 path.quadTo(965, 4262.92871f, 965, 4265);
1703 path.lineTo(965, 4276);
1704 path.quadTo(965, 4278.07129f, 966.464478f, 4279.53564f);
1705 path.quadTo(967.928955f, 4281, 970, 4281);
1706 path.lineTo(970.020325f, 4281);
1707 path.lineTo(969.887512f, 4279.81641f);
1708 path.quadTo(968.928284f, 4279.48145f, 968.17157f, 4278.53564f);
1709 path.quadTo(967, 4277.07129f, 967, 4275);
1710 path.lineTo(967, 4266);
1711 path.quadTo(967, 4264.44287f, 968.035217f, 4263.31396f);
1712 path.lineTo(968, 4263);
1713 path.lineTo(966.464478f, 4261.46436f);
1714 path.close();
1715 SkPath pathB;
1716 pathB.setFillType(SkPath::kWinding_FillType);
1717 pathB.moveTo(965, 4260);
1718 pathB.lineTo(967.716675f, 4260);
1719 pathB.lineTo(970, 4281);
1720 pathB.lineTo(965, 4281);
1721 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
1722}
1723
1724// fails in intersections insert
1725static void skpwww_inmotionhosting_com_9(skiatest::Reporter* reporter, const char* filename) {
1726 SkPath path;
1727 path.setFillType(SkPath::kEvenOdd_FillType);
1728 path.moveTo(991.633911f, 1839);
1729 path.lineTo(964.265015f, 1839);
1730 path.lineTo(963.734985f, 1893.73242f);
1731 path.lineTo(991.3703f, 1894);
1732 path.lineTo(1018.23492f, 1894);
1733 path.lineTo(1018.76501f, 1839.2627f);
1734 path.lineTo(991.638184f, 1839);
1735 path.lineTo(991.633911f, 1839);
1736 path.close();
1737 SkPath pathB;
1738 pathB.setFillType(SkPath::kWinding_FillType);
1739 pathB.moveTo(964.267578f, 1838.73499f);
1740 pathB.lineTo(1019.26501f, 1839.26758f);
1741 pathB.lineTo(1018.73242f, 1894.26501f);
1742 pathB.lineTo(963.734985f, 1893.73242f);
1743 pathB.close();
1744 testPathOp(reporter, path, pathB, kIntersect_PathOp, filename);
1745}
1746
1747static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001748
1749static struct TestDesc tests[] = {
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001750 TEST(skpnamecheap_com_405),
1751 TEST(skpelpais_com_18),
1752 TEST(skpwww_cityads_ru_249),
1753 TEST(skpwww_alrakoba_net_62),
1754 TEST(skpwww_dealnews_com_315),
1755 TEST(skpwww_inmotionhosting_com_9),
caryclark@google.com15107262013-11-08 18:00:01 +00001756 TEST(skpskpicture14),
caryclark@google.com15107262013-11-08 18:00:01 +00001757 TEST(skpskpicture15),
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001758 TEST(skpwww_meb_gov_tr_6),
1759 TEST(skpwww_sciality_com_101),
1760 TEST(skpwww_booking_com_68), // similar to lavoixdunord
1761 TEST(skpwww_despegar_com_mx_272), // similar to lavoixdunord
1762 TEST(skpwww_lavoixdunord_fr_11), // not quite coincident, sorting line/cubic fails
1763 TEST(skppptv_com_62), // cubic have nearly identical tangents, sort incorrectly
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001764 TEST(skppchappy_com_au102),
1765 TEST(skpsciality_com161),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001766 TEST(skpi_gino_com16),
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001767 TEST(skpnaoxrane_ru23), // see test for failure evaluation
1768 TEST(skptcmevents_org23), // see test for (partial) failure evaluation
1769 TEST(skpredbullskatearcade_es16), // cubic have nearly identical tangents, sort incorrectly
1770 TEST(skpfinanzasdigital_com9), // cubic/quad tangents too close to sort
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00001771 TEST(skpgithub_io_26),
1772 TEST(skpgithub_io_25),
1773 TEST(skpwww_meb_gov_tr_5),
1774 TEST(skpwww_sciality_com_100),
1775 TEST(skpwww_joomla_org_23),
1776 TEST(skpwww_macrumors_com_131),
1777 TEST(skpwww_briian_com_34),
1778 TEST(skpwww_leadpages_net_84),
1779 TEST(skpwww_fj_p_com_22),
1780 TEST(skppartainasdemo250_org56),
1781 TEST(skpsd_graphic_net104),
1782 TEST(skpbreakmystyle_com10),
1783 TEST(skpnational_com_au81),
1784 TEST(skprentacheat_com30),
1785 TEST(skptracksflow_com9),
1786 TEST(skpautobutler_dk29),
1787 TEST(skponlinecollege_org144),
1788 TEST(skphostloco_com11),
1789 TEST(skpsergeychunkevich_com8),
1790 TEST(skpmlk_com326),
1791 TEST(skpcyclist_friends_gr52),
1792 TEST(skpfrauen_magazin_com83),
1793 TEST(skpthesuburbanite_com213),
1794 TEST(skpsudoestenegocios_com186),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001795 TEST(skpmtrk_uz27),
1796 TEST(skpilkoora_com37),
1797 TEST(skpmm4everfriends_com43),
1798 TEST(skpflite_com41),
1799 TEST(skpcheeseandburger_com225),
1800 TEST(skpeverytechpro_blogspot_com100),
1801};
1802
1803static const size_t testCount = SK_ARRAY_COUNT(tests);
1804
1805static bool runReverse = false;
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001806static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001807
tfarina@chromium.org78e7b4e2014-01-02 21:45:03 +00001808DEF_TEST(PathOpsSkp, reporter) {
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00001809#if DEBUG_SHOW_TEST_NAME
1810 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
1811#endif
1812 RunTestSet(reporter, tests, testCount, firstTest, stopTest, runReverse);
1813}