58#include <initializer_list>
69#if !defined(SK_ENABLE_OPTIMIZE_SIZE)
83 path.moveTo(229.127044677734375f, 67.34100341796875f);
84 path.lineTo(187.8097381591796875f, -6.7729740142822265625f);
85 path.lineTo(171.411407470703125f, 50.94266510009765625f);
86 path.lineTo(245.5253753662109375f, 9.6253643035888671875f);
87 path.moveTo(208.4683990478515625f, 30.284009933471679688f);
88 path.lineTo(171.411407470703125f, 50.94266510009765625f);
89 path.lineTo(187.8097381591796875f, -6.7729740142822265625f);
97 path.moveTo(314.483551025390625f, 486.246002197265625f);
98 path.lineTo(385.41949462890625f, 532.8087158203125f);
99 path.lineTo(373.232879638671875f, 474.05938720703125f);
100 path.lineTo(326.670166015625f, 544.995361328125f);
101 path.moveTo(349.951507568359375f, 509.52734375f);
102 path.lineTo(373.232879638671875f, 474.05938720703125f);
103 path.lineTo(385.41949462890625f, 532.8087158203125f);
110 path.moveTo(343.107391357421875f, 613.62176513671875f);
111 path.lineTo(426.632415771484375f, 628.5740966796875f);
112 path.lineTo(392.3460693359375f, 579.33544921875f);
113 path.lineTo(377.39373779296875f, 662.86041259765625f);
114 path.moveTo(384.869873046875f, 621.097900390625f);
115 path.lineTo(392.3460693359375f, 579.33544921875f);
116 path.lineTo(426.632415771484375f, 628.5740966796875f);
125 path.moveTo(545.95751953125f, 791.69854736328125f);
126 path.lineTo(612.05816650390625f, 738.494140625f);
127 path.lineTo(552.4056396484375f, 732.0460205078125f);
128 path.lineTo(605.61004638671875f, 798.14666748046875f);
129 path.moveTo(579.00787353515625f, 765.0963134765625f);
130 path.lineTo(552.4056396484375f, 732.0460205078125f);
131 path.lineTo(612.05816650390625f, 738.494140625f);
138 path.moveTo(819.2725830078125f, 751.77447509765625f);
139 path.lineTo(820.70904541015625f, 666.933837890625f);
140 path.lineTo(777.57049560546875f, 708.63592529296875f);
141 path.lineTo(862.4111328125f, 710.0723876953125f);
142 path.moveTo(819.99078369140625f, 709.3541259765625f);
143 path.lineTo(777.57049560546875f, 708.63592529296875f);
144 path.lineTo(820.70904541015625f, 666.933837890625f);
150 path.moveTo(823.33209228515625f, 749.052734375f);
151 path.lineTo(823.494873046875f, 664.20013427734375f);
152 path.lineTo(780.9871826171875f, 706.5450439453125f);
153 path.lineTo(865.8397216796875f, 706.70782470703125f);
154 path.moveTo(823.4134521484375f, 706.6263427734375f);
155 path.lineTo(780.9871826171875f, 706.5450439453125f);
156 path.lineTo(823.494873046875f, 664.20013427734375f);
162 path.moveTo(954.862548828125f, 562.8349609375f);
163 path.lineTo(899.32818603515625f, 498.679443359375f);
164 path.lineTo(895.017578125f, 558.52435302734375f);
165 path.lineTo(959.17315673828125f, 502.990081787109375f);
166 path.moveTo(927.0953369140625f, 530.7572021484375f);
167 path.lineTo(895.017578125f, 558.52435302734375f);
168 path.lineTo(899.32818603515625f, 498.679443359375f);
174 path.moveTo(958.5330810546875f, 547.35516357421875f);
175 path.lineTo(899.93109130859375f, 485.989013671875f);
176 path.lineTo(898.54901123046875f, 545.97308349609375f);
177 path.lineTo(959.9151611328125f, 487.37109375f);
178 path.moveTo(929.2320556640625f, 516.67205810546875f);
179 path.lineTo(898.54901123046875f, 545.97308349609375f);
180 path.lineTo(899.93109130859375f, 485.989013671875f);
186 path.moveTo(389.8609619140625f, 369.326873779296875f);
187 path.lineTo(470.6290283203125f, 395.33697509765625f);
188 path.lineTo(443.250030517578125f, 341.9478759765625f);
189 path.lineTo(417.239959716796875f, 422.7159423828125f);
190 path.moveTo(430.244964599609375f, 382.3319091796875f);
191 path.lineTo(443.250030517578125f, 341.9478759765625f);
192 path.lineTo(470.6290283203125f, 395.33697509765625f);
209 path.moveTo(257.19439697265625f, 320.876617431640625f);
210 path.lineTo(190.113037109375f, 320.58978271484375f);
211 path.lineTo(203.64404296875f, 293.8145751953125f);
212 path.moveTo(203.357177734375f, 360.896026611328125f);
213 path.lineTo(216.88824462890625f, 334.120819091796875f);
214 path.lineTo(230.41925048828125f, 307.345611572265625f);
222 path.moveTo(231.9331207275390625f, 306.2012939453125f);
223 path.lineTo(191.4859161376953125f, 306.04547119140625f);
224 path.lineTo(231.0659332275390625f, 300.2642822265625f);
225 path.moveTo(189.946807861328125f, 302.072265625f);
226 path.lineTo(179.79705810546875f, 294.859771728515625f);
227 path.lineTo(191.0016021728515625f, 296.165679931640625f);
228 path.moveTo(150.8942108154296875f, 304.900146484375f);
229 path.lineTo(179.708892822265625f, 297.849029541015625f);
230 path.lineTo(190.4742279052734375f, 299.11895751953125f);
237 path.moveTo( 0.0f, 400.0f);
238 path.lineTo( 138.0f, 202.0f);
239 path.lineTo( 0.0f, 202.0f);
240 path.moveTo( 12.62693023681640625f, 250.57464599609375f);
241 path.lineTo( 8.13896942138671875f, 254.556884765625f);
242 path.lineTo(-18.15641021728515625f, 220.40203857421875f);
243 path.lineTo(-15.986493110656738281f, 219.6513519287109375f);
244 path.moveTo( 36.931194305419921875f, 282.485504150390625f);
245 path.lineTo( 15.617521286010742188f, 261.2901611328125f);
246 path.lineTo( 10.3829498291015625f, 252.565765380859375f);
247 path.lineTo(-16.165292739868164062f, 222.646026611328125f);
255 path.moveTo(690.62127685546875f, 509.25555419921875f);
256 path.lineTo(99.336181640625f, 511.71405029296875f);
257 path.lineTo(708.362548828125f, 512.4349365234375f);
258 path.lineTo(729.9940185546875f, 516.3114013671875f);
259 path.lineTo(738.708984375f, 518.76995849609375f);
260 path.lineTo(678.3463134765625f, 510.0819091796875f);
261 path.lineTo(681.21795654296875f, 504.81378173828125f);
262 path.moveTo(758.52764892578125f, 521.55963134765625f);
263 path.lineTo(719.1549072265625f, 514.50372314453125f);
264 path.lineTo(689.59063720703125f, 512.0628662109375f);
265 path.lineTo(679.78216552734375f, 507.447845458984375f);
273 path.moveTo(217.326019287109375f, 166.4752960205078125f);
274 path.lineTo(226.279266357421875f, 170.929473876953125f);
275 path.lineTo(234.3973388671875f, 177.0623626708984375f);
276 path.lineTo(262.0921630859375f, 188.746124267578125f);
277 path.moveTo(196.23638916015625f, 174.0722198486328125f);
278 path.lineTo(416.15277099609375f, 180.138214111328125f);
279 path.lineTo(192.651947021484375f, 304.0228271484375f);
285 path.moveTo( 0.0f, 0.0f);
286 path.lineTo(10000.0f, 0.0f);
287 path.lineTo( 0.0f, -1.0f);
288 path.lineTo(10000.0f, 0.000001f);
289 path.lineTo( 0.0f, -30.0f);
297 path.moveTo(170.8199920654296875, 491.86700439453125);
298 path.lineTo(173.7649993896484375, 489.7340087890625);
299 path.lineTo(174.1450958251953125, 498.545989990234375);
300 path.lineTo( 171.998992919921875, 500.88201904296875);
301 path.moveTo(168.2922515869140625, 498.66265869140625);
302 path.lineTo(169.8589935302734375, 497.94500732421875);
303 path.lineTo( 172, 500.88299560546875);
304 path.moveTo( 169.555267333984375, 490.70111083984375);
305 path.lineTo(173.7649993896484375, 489.7340087890625);
306 path.lineTo( 170.82000732421875, 491.86700439453125);
329 path.moveTo( 351.99298095703125, 348.23046875);
330 path.lineTo( 351.91876220703125, 347.33984375);
331 path.lineTo( 351.91876220703125, 346.1953125);
332 path.lineTo( 351.90313720703125, 347.734375);
333 path.lineTo( 351.90313720703125, 346.1328125);
334 path.lineTo( 351.87579345703125, 347.93359375);
335 path.lineTo( 351.87579345703125, 345.484375);
336 path.lineTo( 351.86407470703125, 347.7890625);
337 path.lineTo( 351.86407470703125, 346.2109375);
338 path.lineTo( 351.84844970703125, 347.63763427734375);
339 path.lineTo( 351.84454345703125, 344.19232177734375);
340 path.lineTo( 351.78204345703125, 346.9483642578125);
341 path.lineTo( 351.758636474609375, 347.18310546875);
342 path.lineTo( 351.75469970703125, 346.75);
343 path.lineTo( 351.75469970703125, 345.46875);
344 path.lineTo( 352.5546875, 345.46875);
345 path.lineTo( 352.55078125, 347.01953125);
346 path.lineTo( 351.75079345703125, 347.02313232421875);
347 path.lineTo( 351.74688720703125, 346.15203857421875);
348 path.lineTo( 351.74688720703125, 347.646148681640625);
349 path.lineTo( 352.5390625, 346.94140625);
350 path.lineTo( 351.73907470703125, 346.94268798828125);
351 path.lineTo( 351.73516845703125, 344.48565673828125);
352 path.lineTo( 352.484375, 346.73828125);
353 path.lineTo( 351.68438720703125, 346.7401123046875);
354 path.lineTo( 352.4765625, 346.546875);
355 path.lineTo( 351.67657470703125, 346.54937744140625);
356 path.lineTo( 352.47265625, 346.75390625);
357 path.lineTo( 351.67266845703125, 346.756622314453125);
358 path.lineTo( 351.66876220703125, 345.612091064453125);
365 path.moveTo( 0, 63.39080047607421875);
366 path.lineTo(-0.70804601907730102539, 63.14350128173828125);
367 path.lineTo(-7.8608899287380243391e-17, 64.14080047607421875);
368 path.moveTo( 0, 64.14080047607421875);
369 path.lineTo(44.285900115966796875, 64.14080047607421875);
370 path.lineTo( 0, 62.64080047607421875);
371 path.moveTo(21.434900283813476562, -0.24732701480388641357);
372 path.lineTo(-0.70804601907730102539, 63.14350128173828125);
373 path.lineTo(0.70804601907730102539, 63.6381988525390625);
380 path.moveTo(-2.20883e+37f, -1.02892e+37f);
381 path.conicTo(-2.00958e+38f, -9.36107e+37f, -1.7887e+38f, -8.33215e+37f, 0.707107f);
382 path.conicTo(-1.56782e+38f, -7.30323e+37f, 2.20883e+37f, 1.02892e+37f, 0.707107f);
383 path.conicTo(2.00958e+38f, 9.36107e+37f, 1.7887e+38f, 8.33215e+37f, 0.707107f);
384 path.conicTo(1.56782e+38f, 7.30323e+37f, -2.20883e+37f, -1.02892e+37f, 0.707107f);
394 path.quadTo(10, 0, 0, 8315084722602508288);
403 path.moveTo(0.75001740455627441406, 23.051967620849609375);
404 path.lineTo(5.8471612930297851562, 22.731662750244140625);
405 path.lineTo(10.749670028686523438, 22.253145217895507812);
406 path.lineTo(13.115868568420410156, 22.180681228637695312);
407 path.lineTo(15.418928146362304688, 22.340015411376953125);
408 path.lineTo( 17.654022216796875, 22.82159423828125);
409 path.lineTo(19.81632232666015625, 23.715869903564453125);
411 path.lineTo(5.5635203441547955577e-15, 0);
412 path.lineTo(5.5635203441547955577e-15, 47);
413 path.lineTo(-1.4210854715202003717e-14, 21.713298797607421875);
414 path.lineTo(0.75001740455627441406, 21.694292068481445312);
415 path.lineTo(0.75001740455627441406, 23.051967620849609375);
423 path.moveTo( 0, 1.0927740941146660348e+24);
424 path.lineTo(2.9333931225865729333e+32, 16476101);
425 path.lineTo(1.0927731573659435417e+24, 1.0927740941146660348e+24);
426 path.lineTo(1.0927740941146660348e+24, 3.7616281094287041715e-37);
427 path.lineTo(1.0927740941146660348e+24, 1.0927740941146660348e+24);
428 path.lineTo(1.3061803026169399536e-33, 1.0927740941146660348e+24);
429 path.lineTo(4.7195362919941370727e-16, -8.4247545146051822591e+32);
436 path.moveTo( 316.000579833984375, -4338355948977389568);
437 path.lineTo(1.5069369808623501312e+20, 75180972320904708096.0);
438 path.lineTo(1.5069369808623501312e+20, 75180972320904708096.0);
439 path.lineTo( 771.21014404296875, -4338355948977389568.0);
440 path.lineTo( 316.000579833984375, -4338355948977389568.0);
441 path.moveTo( 354.208984375, -4338355948977389568.0);
442 path.lineTo( 773.00177001953125, -4338355948977389568.0);
443 path.lineTo(1.5069369808623501312e+20, 75180972320904708096.0);
444 path.lineTo(1.5069369808623501312e+20, 75180972320904708096.0);
445 path.lineTo( 354.208984375, -4338355948977389568.0);
452 path.moveTo(10, -1e+20f);
453 path.lineTo(11, 25000);
454 path.lineTo(10, 25000);
455 path.lineTo(11, 25010);
463 path.moveTo( 16.25, 26.495191574096679688);
464 path.lineTo(32.420825958251953125, 37.377376556396484375);
465 path.lineTo(25.176382064819335938, 39.31851959228515625);
466 path.moveTo( 20, 20);
467 path.lineTo(28.847436904907226562, 37.940830230712890625);
468 path.lineTo(25.17638397216796875, 39.31851959228515625);
476 path.moveTo(-2791476679359332352, 2608107002026524672);
477 path.lineTo( 0, 11.95427703857421875);
478 path.lineTo(-2781824066779086848, 2599088532777598976);
479 path.lineTo( -7772.6875, 7274);
487 path.moveTo(-1.0662557646016024569e+23, 9.9621425197286319718e+22);
488 path.lineTo( -121806400, 113805032);
489 path.lineTo( -120098872, 112209680);
490 path.lineTo( 6.2832999862817380468e-36, 2.9885697364807128906);
497 path.moveTo(2072553216, 0);
498 path.lineTo(2072553216, 1);
499 path.lineTo(2072553472, -13.5);
500 path.lineTo(2072553216, 0);
501 path.lineTo(2072553472, -6.5);
508 path.moveTo(2072553216, 0);
509 path.lineTo(2072553216, 1);
510 path.lineTo(2072553472, -13);
511 path.lineTo(2072553216, 0);
512 path.lineTo(2072553472, -6);
513 path.lineTo(2072553472, -13);
521 path.moveTo( 32572426382475264, -3053391034974208);
522 path.lineTo( 521289856, -48865776);
523 path.lineTo( 130322464, -12215873);
524 path.moveTo( 32572426382475264, -3053391034974208);
525 path.lineTo( 521289856, -48865776);
526 path.lineTo( 130322464, -12215873);
527 path.moveTo( 32572426382475264, -3053391034974208);
528 path.lineTo( 32114477642022912, -3010462031544320);
529 path.lineTo( 32111784697528320, -3010209702215680);
534#if defined(SK_GANESH)
537static SkPath create_path_17() {
548static SkPath create_path_20() {
550 path.moveTo( 2822128.5, 235.026336669921875);
551 path.lineTo( 2819349.25, 235.3623504638671875);
552 path.lineTo( -340558688, 23.83478546142578125);
553 path.lineTo( -340558752, 25.510419845581054688);
554 path.lineTo( -340558720, 27.18605804443359375);
559static SkPath create_path_21() {
561 path.moveTo(1.7889142061167663539e+38, 39338463358011572224.0);
562 path.lineTo( 1647.4193115234375, -522.603515625);
563 path.lineTo( 1677.74560546875, -529.0028076171875);
564 path.lineTo( 1678.29541015625, -528.7847900390625);
565 path.lineTo( 1637.5167236328125, -519.79266357421875);
566 path.lineTo( 1647.4193115234375, -522.603515625);
572static SkPath create_path_25() {
574 path.moveTo( 43.44110107421875, 148.15106201171875);
575 path.lineTo( 44.64471435546875, 148.16748046875);
576 path.lineTo( 46.35009765625, 147.403076171875);
577 path.lineTo( 46.45404052734375, 148.34906005859375);
578 path.lineTo( 45.0400390625, 148.54205322265625);
579 path.lineTo( 44.624053955078125, 148.9810791015625);
580 path.lineTo( 44.59405517578125, 149.16107177734375);
581 path.lineTo( 44.877044677734375, 149.62005615234375);
582 path.lineTo(144.373016357421875, 68.8070068359375);
588static SkPath create_path_26() {
590 path.moveTo( 43.44110107421875, 148.15106201171875);
591 path.lineTo( 44.64471435546875, 148.16748046875);
592 path.lineTo( 46.35009765625, 147.403076171875);
593 path.lineTo( 46.45404052734375, 148.34906005859375);
594 path.lineTo( 45.0400390625, 148.54205322265625);
595 path.lineTo( 44.624053955078125, 148.9810791015625);
596 path.lineTo( 44.59405517578125, 149.16107177734375);
597 path.lineTo( 44.877044677734375, 149.62005615234375);
598 path.lineTo(144.373016357421875, 68.8070068359375);
603static SkPath create_path_27() {
605 path.moveTo(8.5027233009104409507e+37, 1.7503381025241130639e+37);
606 path.lineTo(7.0923661737711584874e+37, 1.4600074517285415699e+37);
607 path.lineTo(7.0848733446033294691e+37, 1.4584649744781838604e+37);
608 path.lineTo(-2.0473916115129349496e+37, -4.2146796450364162012e+36);
609 path.lineTo(2.0473912312177548811e+37, 4.2146815465123165435e+36);
615static SkPath create_path_28() {
617 path.moveTo(-7.5952312625177475154e+21, -2.6819185100266674911e+24);
618 path.lineTo( 1260.3787841796875, 1727.7947998046875);
619 path.lineTo( 1260.5567626953125, 1728.0386962890625);
620 path.lineTo(1.1482511310557754163e+21, 4.054538502765980051e+23);
621 path.lineTo(-7.5952312625177475154e+21, -2.6819185100266674911e+24);
626static SkPath create_path_31() {
628 path.moveTo(2.0257809259190991347e+36, -1244080640);
629 path.conicTo(2.0257809259190991347e+36, -1244080640,
630 2.0257809259190991347e+36, 0.10976474732160568237, 0.70710676908493041992);
631 path.lineTo(-10036566016, -1954718402215936);
632 path.conicTo(-1.1375507718551896064e+20, -1954721086570496,
633 10036566016, -1954721086570496, 0.70710676908493041992);
638static SkPath create_path_38() {
640 path.moveTo(14.400531768798828125, 17.711114883422851562);
641 path.lineTo(14.621990203857421875, 171563104293879808);
642 path.lineTo(14.027951240539550781, 872585759381520384);
643 path.lineTo( 14.0216827392578125, 872665817571917824);
644 path.lineTo(7.699314117431640625, -3417320793833472);
645 path.moveTo(11.606547355651855469, 17.40966796875);
646 path.lineTo( 7642114886926860288, 21.08358001708984375);
647 path.lineTo(11.606547355651855469, 21.08358001708984375);
653static SkPath create_path_41() {
655 path.moveTo(72154931603311689728.0, 330.95965576171875);
656 path.lineTo(24053266013925408768.0, 78.11376953125);
657 path.lineTo(1.2031099003292404941e+20, 387.168731689453125);
658 path.lineTo(68859835992355373056.0, 346.55047607421875);
659 path.lineTo(76451708695451009024.0, 337.780029296875);
660 path.moveTo(-20815817797613387776.0, 18065700622522384384.0);
661 path.lineTo(-72144121204987396096.0, 142.855804443359375);
662 path.lineTo(72144121204987396096.0, 325.184783935546875);
663 path.lineTo(1.2347242901040791552e+20, 18065700622522384384.0);
669static SkPath create_path_43() {
671 path.moveTo( 307316821852160, -28808363114496);
672 path.lineTo( 307165222928384, -28794154909696);
673 path.lineTo( 307013691113472, -28779948802048);
674 path.lineTo( 306862159298560, -28765744791552);
675 path.lineTo( 306870313025536, -28766508154880);
676 path.lineTo( 307049695019008, -28783327313920);
677 path.lineTo( 307408660332544, -28816974020608);
682static SkPath create_path_44() {
684 path.moveTo(114.4606170654296875, 186.443878173828125);
685 path.lineTo( 91.5394744873046875, 185.4189453125);
686 path.lineTo(306.45538330078125, 3203.986083984375);
687 path.moveTo(16276206965409972224.0, 815.59393310546875);
688 path.lineTo(-3.541605062372533207e+20, 487.7236328125);
689 path.lineTo(-3.541605062372533207e+20, 168.204071044921875);
690 path.lineTo(16276206965409972224.0, 496.07427978515625);
691 path.moveTo(-3.541605062372533207e+20, 167.00958251953125);
692 path.lineTo(-3.541605062372533207e+20, 488.32086181640625);
693 path.lineTo(16276206965409972224.0, 816.78839111328125);
694 path.lineTo(16276206965409972224.0, 495.47705078125);
699static SkPath create_path_45() {
701 path.moveTo( 706471854080, 379003666432);
702 path.lineTo( 706503180288, 379020443648);
703 path.lineTo( 706595717120, 379070087168);
704 path.lineTo( 706626060288, 379086372864);
705 path.lineTo( 706656141312, 379102527488);
706 path.lineTo( 706774171648, 379165835264);
707 path.lineTo( 706803073024, 379181334528);
708 path.lineTo( 706831712256, 379196702720);
709 path.lineTo( 706860154880, 379211939840);
710 path.lineTo( 706888335360, 379227078656);
711 path.lineTo( 706916253696, 379242053632);
712 path.lineTo( 706956820480, 379263811584);
713 path.lineTo( 706929098752, 379248934912);
714 path.lineTo( 706901114880, 379233927168);
715 path.lineTo( 706872934400, 379218821120);
716 path.lineTo( 706844491776, 379203551232);
717 path.lineTo( 706815787008, 379188183040);
718 path.lineTo( 706786885632, 379172651008);
719 path.lineTo( 706757722112, 379156987904);
720 path.lineTo( 706728296448, 379141226496);
721 path.lineTo( 706698608640, 379125301248);
722 path.lineTo( 706668724224, 379109244928);
723 path.lineTo( 706638577664, 379093090304);
724 path.lineTo( 706608168960, 379076771840);
725 path.lineTo( 706484174848, 379010252800);
732static SkPath create_path_46() {
734 path.moveTo(1.0321827899075254821e+37, -5.1199920965387697886e+37);
735 path.lineTo(-1.0321827899075254821e+37, 5.1199920965387697886e+37);
736 path.lineTo(-1.0425214946728668754e+37, 4.5731834042267216669e+37);
737 path.moveTo(-9.5077331762291841872e+36, 8.1304868292377430302e+37);
738 path.lineTo(9.5077331762291841872e+36, -8.1304868292377430302e+37);
739 path.lineTo(1.0795449417808426232e+37, 1.2246856113744539311e+37);
740 path.moveTo(-165.8018341064453125, -44.859375);
741 path.lineTo(-9.558702871563160835e+36, -7.9814405281448285475e+37);
742 path.lineTo(-9.4147814283168490381e+36, -8.3935116522790983488e+37);
747static SkPath create_path_47() {
825static std::unique_ptr<GrFragmentProcessor>
827 SkPoint pts[2] = { {0, 0}, {1, 1} };
834 shader.
get(), {rContext, &colorInfo, props, GrFPArgs::Scope::kDefault}, ctm);
842 std::unique_ptr<GrFragmentProcessor>
fp =
nullptr) {
844 pr.setMaxVerbCount(100);
849 paint.setColorFragmentProcessor(std::move(
fp));
860 &clipConservativeBounds,
872 auto ctx = ctxInfo.directContext();
888 ctx->flushAndSubmit();
896 std::unique_ptr<GrFragmentProcessor>
fp(create_linear_gradient_processor(ctx,
SkMatrix()));
921 void* lock(
size_t stride,
int eagerCount)
override {
924 fPoints.reset(eagerCount);
927 void unlock(
int actualCount)
override {}
928 SkPoint operator[](
int idx)
const {
return fPoints[idx]; }
934 void* lock(
size_t stride,
int eagerCount)
override {
935 size_t allocSize = eagerCount * stride;
936 if (allocSize > fVertexAllocSize) {
937 fVertexData.reset(allocSize);
942 void unlock(
int)
override {}
945 size_t fVertexAllocSize = 0;
956 if (
a.fP0.fX !=
b.fP0.fX) {
957 return a.fP0.fX <
b.fP0.fX;
959 if (
a.fP0.fY !=
b.fP0.fY) {
960 return a.fP0.fY <
b.fP0.fY;
962 if (
a.fP1.fX !=
b.fP1.fX) {
963 return a.fP1.fX <
b.fP1.fX;
965 if (
a.fP1.fY !=
b.fP1.fY) {
966 return a.fP1.fY <
b.fP1.fY;
976 auto reverseIter = edgeMap.find(edge.reverse());
977 if (reverseIter != edgeMap.end()) {
978 --reverseIter->second;
985 for (
int i = 0;
i < 3; ++
i) {
996 for (
auto [edge,
count] : edges) {
998 SkASSERT(edges.find(edge.reverse()) == edges.end());
1003 simplifiedEdges[edge] =
count;
1004 }
else if (
count < 0) {
1005 simplifiedEdges[edge.reverse()] = -
count;
1008 return simplifiedEdges;
1014 path.setFillType(fillType);
1017 SimpleVertexAllocator vertexAlloc;
1022 vertexCount = triangulator.
pathToTriangles(&vertexAlloc, &breadcrumbs, &isLinear);
1026 EdgeMap trianglePlusBreadcrumbEdges;
1027 for (
int i = 0;
i < vertexCount;
i += 3) {
1028 add_tri_edges(r, trianglePlusBreadcrumbEdges, vertexAlloc.fPoints.data() +
i);
1031 int breadcrumbCount = 0;
1032 for (
const auto* node = breadcrumbs.
head(); node; node = node->
fNext) {
1038 trianglePlusBreadcrumbEdges =
simplify(trianglePlusBreadcrumbEdges,
path.getFillType());
1042 SkPoint startPoint{}, lastPoint{};
1046 if (lastPoint != startPoint) {
1047 add_edge(innerFanEdges, lastPoint, startPoint);
1049 lastPoint = startPoint = pts[0];
1052 lastPoint = startPoint;
1065 if (pts[0] != lastPoint) {
1066 add_edge(innerFanEdges, pts[0], lastPoint);
1069 if (lastPoint != startPoint) {
1070 add_edge(innerFanEdges, lastPoint, startPoint);
1072 innerFanEdges =
simplify(innerFanEdges,
path.getFillType());
1076 for (
auto [edge,
count] : innerFanEdges) {
1077 auto it = trianglePlusBreadcrumbEdges.find(edge);
1078 if (it != trianglePlusBreadcrumbEdges.end()) {
1079 it->second -=
count;
1080 if (it->second == 0) {
1081 trianglePlusBreadcrumbEdges.erase(it);
1085 it = trianglePlusBreadcrumbEdges.find(edge.reverse());
1086 if (it != trianglePlusBreadcrumbEdges.end()) {
1087 it->second +=
count;
1088 if (it->second == 0) {
1089 trianglePlusBreadcrumbEdges.erase(it);
1093 ERRORF(r,
"error: %s: edge [%g,%g]:[%g,%g] not found in triangulation.",
1094 shapeName, edge.fP0.fX, edge.fP0.fY, edge.fP1.fX, edge.fP1.fY);
1104 bool hasSpuriousHorz=
false, hasSpuriousVert=
false;
1105 for (
auto [edge,
count] : trianglePlusBreadcrumbEdges) {
1106 if (
count % 2 == 0) {
1107 if (edge.fP0.fX == edge.fP1.fX && !hasSpuriousVert) {
1108 hasSpuriousHorz =
true;
1111 if (edge.fP0.fY == edge.fP1.fY && !hasSpuriousHorz) {
1112 hasSpuriousVert =
true;
1116 ERRORF(r,
"error: %s: spurious edge [%g,%g]:[%g,%g] found in triangulation.",
1117 shapeName, edge.fP0.fX, edge.fP0.fY, edge.fP1.fX, edge.fP1.fY);
1127 .lineTo(1,0).lineTo(.5f,.5f).lineTo(1,1).lineTo(0,1));
1129 .lineTo(1,0).lineTo(0,1).lineTo(0,0).lineTo(1,0).lineTo(0,1));
1131 .lineTo(1,0).lineTo(0,1).lineTo(1,1));
1133 .lineTo(1,0).lineTo(0,1).lineTo(.1f,-.1f));
1135 .lineTo(1,0).lineTo(0,1).lineTo(1e-6f,-1e-6f));
1137 .lineTo(1,0).lineTo(1,1).lineTo(0,1)
1138 .moveTo(.5f,.5f).lineTo(1.5f,.5f).lineTo(1.5f,1.5f).lineTo(.5f,1.5f).close());
1143 .moveTo(cosf(0), sinf(0))
1153 .moveTo(cosf(0), sinf(0))
1158 .moveTo(0,-100).lineTo(-1e-6f,100).lineTo(1e-6f,100)
1159 .moveTo(-100,0).lineTo(100,1e-6f).lineTo(100,-1e-6f));
1161 .moveTo(0,0).lineTo(0,2).lineTo(1,2).lineTo(1,0)
1162 .moveTo(0,1).lineTo(0,3).lineTo(1,3).lineTo(1,1));
1164 .lineTo(2,0).lineTo(2,1).lineTo(0,1)
1165 .moveTo(1,0).lineTo(3,0).lineTo(3,1).lineTo(1,1).close());
1171 for (
int i = 0;
i < 50; ++
i) {
1173 for (
int j = 0; j <
i; ++j) {
1359 SimplerVertexAllocator alloc;
1466 SimplerVertexAllocator alloc;
@ kTopLeft_GrSurfaceOrigin
@ kPremul_SkAlphaType
pixel components are premultiplied by alpha
constexpr SkColor SK_ColorBLUE
constexpr SkColor SK_ColorGREEN
static float SkBits2Float(uint32_t bits)
@ kClose
SkPath::RawIter returns 0 points.
@ kCubic
SkPath::RawIter returns 4 points.
@ kConic
SkPath::RawIter returns 3 points + 1 weight.
@ kQuad
SkPath::RawIter returns 3 points.
@ kMove
SkPath::RawIter returns 1 point.
@ kLine
SkPath::RawIter returns 2 points.
SK_API SkString SkStringPrintf(const char *format,...) SK_PRINTF_LIKE(1
Creates a new string and writes into it using a printf()-style format.
#define REPORTER_ASSERT(r, cond,...)
#define DEF_GANESH_TEST_FOR_ALL_CONTEXTS(name, reporter, context_info, ctsEnforcement)
static void add_edge(EdgeMap &edgeMap, SkPoint p0, SkPoint p1)
static bool operator<(const Edge &a, const Edge &b)
static EdgeMap simplify(const EdgeMap &edges, SkPathFillType fillType)
CreatePathFn kNonEdgeAAPaths[]
DEF_TEST(GrInnerFanTriangulator, r)
static void verify_simple_inner_polygons(skiatest::Reporter *r, const char *shapeName, SkPath path)
static void add_tri_edges(skiatest::Reporter *r, EdgeMap &edgeMap, const SkPoint pts[3])
std::map< Edge, int > EdgeMap
static int PathToAATriangles(const SkPath &path, SkScalar tolerance, const SkRect &clipBounds, GrEagerVertexAllocator *vertexAllocator)
int pathToTriangles(GrEagerVertexAllocator *vertexAlloc, BreadcrumbTriangleList *breadcrumbList, bool *isLinear)
static const GrXPFactory * Get(SkBlendMode blendMode)
const Node * head() const
static constexpr int kArenaDefaultChunkSize
static sk_sp< SkShader > MakeLinear(const SkPoint pts[2], const SkColor colors[], const SkScalar pos[], int count, SkTileMode mode, uint32_t flags=0, const SkMatrix *localMatrix=nullptr)
static SkMatrix Scale(SkScalar sx, SkScalar sy)
static const SkMatrix & I()
SkPath & moveTo(SkScalar x, SkScalar y)
SkPath & lineTo(SkScalar x, SkScalar y)
bool drawPath(const DrawPathArgs &args)
static std::unique_ptr< SurfaceDrawContext > Make(GrRecordingContext *, GrColorType, sk_sp< GrSurfaceProxy >, sk_sp< SkColorSpace >, GrSurfaceOrigin, const SkSurfaceProps &)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
std::unique_ptr< GrFragmentProcessor > Make(const SkMaskFilter *maskfilter, const GrFPArgs &args, const SkMatrix &ctm)
static const SkScalar kDefaultTolerance
unsigned useCenter Optional< SkMatrix > matrix
PODArray< SkColor > colors
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
SIN Vec< N, float > abs(const Vec< N, float > &x)
static void test_path(SkCanvas *canvas, const SkPath &path)
static const GrUserStencilSettings & kUnused
static constexpr SkIRect MakeWH(int32_t w, int32_t h)
static constexpr SkRect MakeWH(float w, float h)
static constexpr SkRect MakeLTRB(float l, float t, float r, float b)