22 return StrokePathGeometry::GenerateSolidStrokeVertices(
23 tessellator, path, stroke, scale);
57template <
class... Args>
59 auto args_tuple = std::make_tuple(std::move(
args)...);
60 auto path = std::get<flutter::DlPath>(args_tuple);
65 .cap = std::get<Cap>(args_tuple),
66 .join = std::get<Join>(args_tuple),
72 size_t point_count = 0u;
73 size_t single_point_count = 0u;
74 while (state.KeepRunning()) {
76 tessellator, path, stroke, scale);
77 single_point_count = vertices.size();
78 point_count += single_point_count;
80 state.counters[
"SinglePointCount"] = single_point_count;
81 state.counters[
"TotalPointCount"] = point_count;
84template <
class... Args>
86 auto args_tuple = std::make_tuple(std::move(
args)...);
89 size_t point_count = 0u;
90 size_t single_point_count = 0u;
91 auto points = std::make_unique<std::vector<Point>>();
92 auto indices = std::make_unique<std::vector<uint16_t>>();
94 while (state.KeepRunning()) {
98 single_point_count = indices->size();
99 point_count += indices->size();
101 state.counters[
"SinglePointCount"] = single_point_count;
102 state.counters[
"TotalPointCount"] = point_count;
105template <
class... Args>
108 auto args_tuple = std::make_tuple(std::move(
args)...);
109 auto path = std::get<flutter::DlPath>(args_tuple);
110 auto height = std::get<Scalar>(args_tuple);
111 auto matrix = std::get<Matrix>(args_tuple);
115 while (state.KeepRunning()) {
117 tessellator, path,
height, matrix);
122#define MAKE_SHADOW_BENCHMARK_CAPTURE(clockwise, shape, backend) \
123 BENCHMARK_CAPTURE(BM_ShadowPathVertices##backend, \
124 shadow_##clockwise##_##shape##_##backend, \
125 Create##clockwise##shape(), 20.0f, Matrix{})
127#define MAKE_SHADOW_BENCHMARK_SHAPE_CAPTURE(shape, backend) \
128 MAKE_SHADOW_BENCHMARK_CAPTURE(Clockwise, shape, backend); \
129 MAKE_SHADOW_BENCHMARK_CAPTURE(CounterClockwise, shape, backend)
131#define MAKE_SHADOW_BENCHMARK_CAPTURE_ALL_SHAPES(backend) \
132 MAKE_SHADOW_BENCHMARK_SHAPE_CAPTURE(Triangle, backend); \
133 MAKE_SHADOW_BENCHMARK_SHAPE_CAPTURE(Rect, backend); \
134 MAKE_SHADOW_BENCHMARK_SHAPE_CAPTURE(MultiRadiiRoundRect, backend); \
135 MAKE_SHADOW_BENCHMARK_SHAPE_CAPTURE(Polygon, backend)
139#define MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, cap, join, closed) \
140 BENCHMARK_CAPTURE(BM_StrokePath, stroke_##path##_##cap##_##join, \
141 Create##path(closed), Cap::k##cap, Join::k##join)
143#define MAKE_STROKE_BENCHMARK_CAPTURE_ALL_CAPS_JOINS(path, closed) \
144 MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, Butt, Bevel, closed); \
145 MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, Butt, Miter, closed); \
146 MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, Butt, Round, closed); \
147 MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, Square, Bevel, closed); \
148 MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, Round, Bevel, closed)
211 : flip_coordinate_(flip_coordinate) {
212 path.Dispatch(*
this);
218 const Scalar flip_coordinate_;
226 void MoveTo(
const Point& p2,
bool will_be_closed)
override {
227 builder_.
MoveTo(flip(p2));
232 builder_.
LineTo(flip(p2));
236 void QuadTo(
const Point& cp,
const Point& p2)
override {
252 void Close()
override {}
280 return HorizontalPathFlipper(clockwise_path, 200.0f).TakePath();
284 int vertex_count = 40;
285 Scalar direction = clockwise ? 1.0f : -1.0f;
287 auto make_point = [](
Scalar angle) {
289 200 + 100 * std::sin(angle));
293 builder.
MoveTo(make_point(0.0f));
294 for (
int i = 1;
i < vertex_count;
i++) {
296 builder.
LineTo(make_point(angle * direction));
303 return CreatePolygon(
true);
307 return CreatePolygon(
false);
327 .
MoveTo({359.934, 96.6335})
328 .CubicCurveTo({358.189, 96.7055}, {356.436, 96.7908}, {354.673, 96.8895})
329 .CubicCurveTo({354.571, 96.8953}, {354.469, 96.9016}, {354.367, 96.9075})
330 .CubicCurveTo({352.672, 97.0038}, {350.969, 97.113}, {349.259, 97.2355})
331 .CubicCurveTo({349.048, 97.2506}, {348.836, 97.2678}, {348.625, 97.2834})
332 .CubicCurveTo({347.019, 97.4014}, {345.407, 97.5299}, {343.789, 97.6722})
333 .CubicCurveTo({343.428, 97.704}, {343.065, 97.7402}, {342.703, 97.7734})
334 .CubicCurveTo({341.221, 97.9086}, {339.736, 98.0505}, {338.246, 98.207})
335 .CubicCurveTo({337.702, 98.2642}, {337.156, 98.3292}, {336.612, 98.3894})
336 .CubicCurveTo({335.284, 98.5356}, {333.956, 98.6837}, {332.623, 98.8476})
337 .CubicCurveTo({332.495, 98.8635}, {332.366, 98.8818}, {332.237, 98.8982})
338 .
LineTo({332.237, 102.601})
339 .
LineTo({321.778, 102.601})
340 .
LineTo({321.778, 100.382})
341 .CubicCurveTo({321.572, 100.413}, {321.367, 100.442}, {321.161, 100.476})
342 .CubicCurveTo({319.22, 100.79}, {317.277, 101.123}, {315.332, 101.479})
343 .CubicCurveTo({315.322, 101.481}, {315.311, 101.482}, {315.301, 101.484})
344 .
LineTo({310.017, 105.94})
345 .
LineTo({309.779, 105.427})
346 .
LineTo({314.403, 101.651})
347 .CubicCurveTo({314.391, 101.653}, {314.379, 101.656}, {314.368, 101.658})
348 .CubicCurveTo({312.528, 102.001}, {310.687, 102.366}, {308.846, 102.748})
349 .CubicCurveTo({307.85, 102.955}, {306.855, 103.182}, {305.859, 103.4})
350 .CubicCurveTo({305.048, 103.579}, {304.236, 103.75}, {303.425, 103.936})
351 .
LineTo({299.105, 107.578})
352 .
LineTo({298.867, 107.065})
353 .
LineTo({302.394, 104.185})
354 .
LineTo({302.412, 104.171})
355 .CubicCurveTo({301.388, 104.409}, {300.366, 104.67}, {299.344, 104.921})
356 .CubicCurveTo({298.618, 105.1}, {297.89, 105.269}, {297.165, 105.455})
357 .CubicCurveTo({295.262, 105.94}, {293.36, 106.445}, {291.462, 106.979})
358 .CubicCurveTo({291.132, 107.072}, {290.802, 107.163}, {290.471, 107.257})
359 .CubicCurveTo({289.463, 107.544}, {288.455, 107.839}, {287.449, 108.139})
360 .CubicCurveTo({286.476, 108.431}, {285.506, 108.73}, {284.536, 109.035})
361 .CubicCurveTo({283.674, 109.304}, {282.812, 109.579}, {281.952, 109.859})
362 .CubicCurveTo({281.177, 110.112}, {280.406, 110.377}, {279.633, 110.638})
363 .CubicCurveTo({278.458, 111.037}, {277.256, 111.449}, {276.803, 111.607})
364 .CubicCurveTo({276.76, 111.622}, {276.716, 111.637}, {276.672, 111.653})
365 .CubicCurveTo({275.017, 112.239}, {273.365, 112.836}, {271.721, 113.463})
366 .
LineTo({271.717, 113.449})
367 .CubicCurveTo({271.496, 113.496}, {271.238, 113.559}, {270.963, 113.628})
368 .CubicCurveTo({270.893, 113.645}, {270.822, 113.663}, {270.748, 113.682})
369 .CubicCurveTo({270.468, 113.755}, {270.169, 113.834}, {269.839, 113.926})
370 .CubicCurveTo({269.789, 113.94}, {269.732, 113.957}, {269.681, 113.972})
371 .CubicCurveTo({269.391, 114.053}, {269.081, 114.143}, {268.756, 114.239})
372 .CubicCurveTo({268.628, 114.276}, {268.5, 114.314}, {268.367, 114.354})
373 .CubicCurveTo({268.172, 114.412}, {267.959, 114.478}, {267.752, 114.54})
374 .CubicCurveTo({263.349, 115.964}, {258.058, 117.695}, {253.564, 119.252})
375 .CubicCurveTo({253.556, 119.255}, {253.547, 119.258}, {253.538, 119.261})
376 .CubicCurveTo({251.844, 119.849}, {250.056, 120.474}, {248.189, 121.131})
377 .CubicCurveTo({248, 121.197}, {247.812, 121.264}, {247.621, 121.331})
378 .CubicCurveTo({247.079, 121.522}, {246.531, 121.715}, {245.975, 121.912})
379 .CubicCurveTo({245.554, 122.06}, {245.126, 122.212}, {244.698, 122.364})
380 .CubicCurveTo({244.071, 122.586}, {243.437, 122.811}, {242.794, 123.04})
381 .CubicCurveTo({242.189, 123.255}, {241.58, 123.472}, {240.961, 123.693})
382 .CubicCurveTo({240.659, 123.801}, {240.357, 123.909}, {240.052, 124.018})
383 .CubicCurveTo({239.12, 124.351}, {238.18, 124.687}, {237.22, 125.032})
384 .
LineTo({237.164, 125.003})
385 .CubicCurveTo({236.709, 125.184}, {236.262, 125.358}, {235.81, 125.538})
386 .CubicCurveTo({235.413, 125.68}, {234.994, 125.832}, {234.592, 125.977})
387 .CubicCurveTo({234.592, 125.977}, {234.591, 125.977}, {234.59, 125.977})
388 .CubicCurveTo({222.206, 130.435}, {207.708, 135.753}, {192.381, 141.429})
389 .CubicCurveTo({162.77, 151.336}, {122.17, 156.894}, {84.1123, 160})
394 .CubicCurveTo({359.978, 96.6317}, {359.956, 96.6326}, {359.934, 96.6335});
399 .
MoveTo({337.336, 124.143})
400 .CubicCurveTo({337.274, 122.359}, {338.903, 121.511}, {338.903, 121.511})
401 .CubicCurveTo({338.903, 121.511}, {338.96, 123.303}, {337.336, 124.143});
406 .
MoveTo({340.082, 121.849})
407 .CubicCurveTo({340.074, 121.917}, {340.062, 121.992}, {340.046, 122.075})
408 .CubicCurveTo({340.039, 122.109}, {340.031, 122.142}, {340.023, 122.177})
409 .CubicCurveTo({340.005, 122.26}, {339.98, 122.346}, {339.952, 122.437})
410 .CubicCurveTo({339.941, 122.473}, {339.931, 122.507}, {339.918, 122.544})
411 .CubicCurveTo({339.873, 122.672}, {339.819, 122.804}, {339.75, 122.938})
412 .CubicCurveTo({339.747, 122.944}, {339.743, 122.949}, {339.74, 122.955})
413 .CubicCurveTo({339.674, 123.08}, {339.593, 123.205}, {339.501, 123.328})
414 .CubicCurveTo({339.473, 123.366}, {339.441, 123.401}, {339.41, 123.438})
415 .CubicCurveTo({339.332, 123.534}, {339.243, 123.625}, {339.145, 123.714})
416 .CubicCurveTo({339.105, 123.75}, {339.068, 123.786}, {339.025, 123.821})
417 .CubicCurveTo({338.881, 123.937}, {338.724, 124.048}, {338.539, 124.143})
418 .CubicCurveTo({338.532, 123.959}, {338.554, 123.79}, {338.58, 123.626})
419 .CubicCurveTo({338.58, 123.625}, {338.58, 123.625}, {338.58, 123.625})
420 .CubicCurveTo({338.607, 123.455}, {338.65, 123.299}, {338.704, 123.151})
421 .CubicCurveTo({338.708, 123.14}, {338.71, 123.127}, {338.714, 123.117})
422 .CubicCurveTo({338.769, 122.971}, {338.833, 122.838}, {338.905, 122.712})
423 .CubicCurveTo({338.911, 122.702}, {338.916, 122.69200000000001},
425 .CubicCurveTo({338.996, 122.557}, {339.072, 122.444}, {339.155, 122.34})
426 .CubicCurveTo({339.161, 122.333}, {339.166, 122.326}, {339.172, 122.319})
427 .CubicCurveTo({339.256, 122.215}, {339.339, 122.12}, {339.425, 122.037})
428 .CubicCurveTo({339.428, 122.033}, {339.431, 122.03}, {339.435, 122.027})
429 .CubicCurveTo({339.785, 121.687}, {340.106, 121.511}, {340.106, 121.511})
430 .CubicCurveTo({340.106, 121.511}, {340.107, 121.645}, {340.082, 121.849});
435 .
MoveTo({340.678, 113.245})
436 .CubicCurveTo({340.594, 113.488}, {340.356, 113.655}, {340.135, 113.775})
437 .CubicCurveTo({339.817, 113.948}, {339.465, 114.059}, {339.115, 114.151})
438 .CubicCurveTo({338.251, 114.379}, {337.34, 114.516}, {336.448, 114.516})
439 .CubicCurveTo({335.761, 114.516}, {335.072, 114.527}, {334.384, 114.513})
440 .CubicCurveTo({334.125, 114.508}, {333.862, 114.462}, {333.605, 114.424})
441 .CubicCurveTo({332.865, 114.318}, {332.096, 114.184}, {331.41, 113.883})
442 .CubicCurveTo({330.979, 113.695}, {330.442, 113.34}, {330.672, 112.813})
443 .CubicCurveTo({331.135, 111.755}, {333.219, 112.946}, {334.526, 113.833})
444 .CubicCurveTo({334.54, 113.816}, {334.554, 113.8}, {334.569, 113.784})
445 .CubicCurveTo({333.38, 112.708}, {331.749, 110.985}, {332.76, 110.402})
446 .CubicCurveTo({333.769, 109.82}, {334.713, 111.93}, {335.228, 113.395})
447 .CubicCurveTo({334.915, 111.889}, {334.59, 109.636}, {335.661, 109.592})
448 .CubicCurveTo({336.733, 109.636}, {336.408, 111.889}, {336.07, 113.389})
449 .CubicCurveTo({336.609, 111.93}, {337.553, 109.82}, {338.563, 110.402})
450 .CubicCurveTo({339.574, 110.984}, {337.942, 112.708}, {336.753, 113.784})
451 .CubicCurveTo({336.768, 113.8}, {336.782, 113.816}, {336.796, 113.833})
452 .CubicCurveTo({338.104, 112.946}, {340.187, 111.755}, {340.65, 112.813})
453 .CubicCurveTo({340.71, 112.95}, {340.728, 113.102}, {340.678, 113.245});
458 .
MoveTo({346.357, 106.771})
459 .CubicCurveTo({346.295, 104.987}, {347.924, 104.139}, {347.924, 104.139})
460 .CubicCurveTo({347.924, 104.139}, {347.982, 105.931}, {346.357, 106.771});
465 .
MoveTo({347.56, 106.771})
466 .CubicCurveTo({347.498, 104.987}, {349.127, 104.139}, {349.127, 104.139})
467 .CubicCurveTo({349.127, 104.139}, {349.185, 105.931}, {347.56, 106.771});
477 .
MoveTo({359.934, 96.6335})
478 .QuadraticCurveTo({358.189, 96.7055}, {354.673, 96.8895})
479 .QuadraticCurveTo({354.571, 96.8953}, {354.367, 96.9075})
480 .QuadraticCurveTo({352.672, 97.0038}, {349.259, 97.2355})
481 .QuadraticCurveTo({349.048, 97.2506}, {348.625, 97.2834})
482 .QuadraticCurveTo({347.019, 97.4014}, {343.789, 97.6722})
483 .QuadraticCurveTo({343.428, 97.704}, {342.703, 97.7734})
484 .QuadraticCurveTo({341.221, 97.9086}, {338.246, 98.207})
485 .QuadraticCurveTo({337.702, 98.2642}, {336.612, 98.3894})
486 .QuadraticCurveTo({335.284, 98.5356}, {332.623, 98.8476})
487 .QuadraticCurveTo({332.495, 98.8635}, {332.237, 98.8982})
488 .
LineTo({332.237, 102.601})
489 .
LineTo({321.778, 102.601})
490 .
LineTo({321.778, 100.382})
491 .QuadraticCurveTo({321.572, 100.413}, {321.161, 100.476})
492 .QuadraticCurveTo({319.22, 100.79}, {315.332, 101.479})
493 .QuadraticCurveTo({315.322, 101.481}, {315.301, 101.484})
494 .
LineTo({310.017, 105.94})
495 .
LineTo({309.779, 105.427})
496 .
LineTo({314.403, 101.651})
497 .QuadraticCurveTo({314.391, 101.653}, {314.368, 101.658})
498 .QuadraticCurveTo({312.528, 102.001}, {308.846, 102.748})
499 .QuadraticCurveTo({307.85, 102.955}, {305.859, 103.4})
500 .QuadraticCurveTo({305.048, 103.579}, {303.425, 103.936})
501 .
LineTo({299.105, 107.578})
502 .
LineTo({298.867, 107.065})
503 .
LineTo({302.394, 104.185})
504 .
LineTo({302.412, 104.171})
505 .QuadraticCurveTo({301.388, 104.409}, {299.344, 104.921})
506 .QuadraticCurveTo({298.618, 105.1}, {297.165, 105.455})
507 .QuadraticCurveTo({295.262, 105.94}, {291.462, 106.979})
508 .QuadraticCurveTo({291.132, 107.072}, {290.471, 107.257})
509 .QuadraticCurveTo({289.463, 107.544}, {287.449, 108.139})
510 .QuadraticCurveTo({286.476, 108.431}, {284.536, 109.035})
511 .QuadraticCurveTo({283.674, 109.304}, {281.952, 109.859})
512 .QuadraticCurveTo({281.177, 110.112}, {279.633, 110.638})
513 .QuadraticCurveTo({278.458, 111.037}, {276.803, 111.607})
514 .QuadraticCurveTo({276.76, 111.622}, {276.672, 111.653})
515 .QuadraticCurveTo({275.017, 112.239}, {271.721, 113.463})
516 .
LineTo({271.717, 113.449})
517 .QuadraticCurveTo({271.496, 113.496}, {270.963, 113.628})
518 .QuadraticCurveTo({270.893, 113.645}, {270.748, 113.682})
519 .QuadraticCurveTo({270.468, 113.755}, {269.839, 113.926})
520 .QuadraticCurveTo({269.789, 113.94}, {269.681, 113.972})
521 .QuadraticCurveTo({269.391, 114.053}, {268.756, 114.239})
522 .QuadraticCurveTo({268.628, 114.276}, {268.367, 114.354})
523 .QuadraticCurveTo({268.172, 114.412}, {267.752, 114.54})
524 .QuadraticCurveTo({263.349, 115.964}, {253.564, 119.252})
525 .QuadraticCurveTo({253.556, 119.255}, {253.538, 119.261})
526 .QuadraticCurveTo({251.844, 119.849}, {248.189, 121.131})
527 .QuadraticCurveTo({248, 121.197}, {247.621, 121.331})
528 .QuadraticCurveTo({247.079, 121.522}, {245.975, 121.912})
529 .QuadraticCurveTo({245.554, 122.06}, {244.698, 122.364})
530 .QuadraticCurveTo({244.071, 122.586}, {242.794, 123.04})
531 .QuadraticCurveTo({242.189, 123.255}, {240.961, 123.693})
532 .QuadraticCurveTo({240.659, 123.801}, {240.052, 124.018})
533 .QuadraticCurveTo({239.12, 124.351}, {237.22, 125.032})
534 .
LineTo({237.164, 125.003})
535 .QuadraticCurveTo({236.709, 125.184}, {235.81, 125.538})
536 .QuadraticCurveTo({235.413, 125.68}, {234.592, 125.977})
537 .QuadraticCurveTo({234.592, 125.977}, {234.59, 125.977})
538 .QuadraticCurveTo({222.206, 130.435}, {192.381, 141.429})
539 .QuadraticCurveTo({162.77, 151.336}, {84.1123, 160})
544 .QuadraticCurveTo({359.978, 96.6317}, {359.934, 96.6335});
549 .
MoveTo({337.336, 124.143})
550 .QuadraticCurveTo({337.274, 122.359}, {338.903, 121.511})
551 .QuadraticCurveTo({338.903, 121.511}, {337.336, 124.143});
556 .
MoveTo({340.082, 121.849})
557 .QuadraticCurveTo({340.074, 121.917}, {340.046, 122.075})
558 .QuadraticCurveTo({340.039, 122.109}, {340.023, 122.177})
559 .QuadraticCurveTo({340.005, 122.26}, {339.952, 122.437})
560 .QuadraticCurveTo({339.941, 122.473}, {339.918, 122.544})
561 .QuadraticCurveTo({339.873, 122.672}, {339.75, 122.938})
562 .QuadraticCurveTo({339.747, 122.944}, {339.74, 122.955})
563 .QuadraticCurveTo({339.674, 123.08}, {339.501, 123.328})
564 .QuadraticCurveTo({339.473, 123.366}, {339.41, 123.438})
565 .QuadraticCurveTo({339.332, 123.534}, {339.145, 123.714})
566 .QuadraticCurveTo({339.105, 123.75}, {339.025, 123.821})
567 .QuadraticCurveTo({338.881, 123.937}, {338.539, 124.143})
568 .QuadraticCurveTo({338.532, 123.959}, {338.58, 123.626})
569 .QuadraticCurveTo({338.58, 123.625}, {338.58, 123.625})
570 .QuadraticCurveTo({338.607, 123.455}, {338.704, 123.151})
571 .QuadraticCurveTo({338.708, 123.14}, {338.714, 123.117})
572 .QuadraticCurveTo({338.769, 122.971}, {338.905, 122.712})
573 .QuadraticCurveTo({338.911, 122.702}, {338.922, 122.682})
574 .QuadraticCurveTo({338.996, 122.557}, {339.155, 122.34})
575 .QuadraticCurveTo({339.161, 122.333}, {339.172, 122.319})
576 .QuadraticCurveTo({339.256, 122.215}, {339.425, 122.037})
577 .QuadraticCurveTo({339.428, 122.033}, {339.435, 122.027})
578 .QuadraticCurveTo({339.785, 121.687}, {340.106, 121.511})
579 .QuadraticCurveTo({340.106, 121.511}, {340.082, 121.849});
584 .
MoveTo({340.678, 113.245})
585 .QuadraticCurveTo({340.594, 113.488}, {340.135, 113.775})
586 .QuadraticCurveTo({339.817, 113.948}, {339.115, 114.151})
587 .QuadraticCurveTo({338.251, 114.379}, {336.448, 114.516})
588 .QuadraticCurveTo({335.761, 114.516}, {334.384, 114.513})
589 .QuadraticCurveTo({334.125, 114.508}, {333.605, 114.424})
590 .QuadraticCurveTo({332.865, 114.318}, {331.41, 113.883})
591 .QuadraticCurveTo({330.979, 113.695}, {330.672, 112.813})
592 .QuadraticCurveTo({331.135, 111.755}, {334.526, 113.833})
593 .QuadraticCurveTo({334.54, 113.816}, {334.569, 113.784})
594 .QuadraticCurveTo({333.38, 112.708}, {332.76, 110.402})
595 .QuadraticCurveTo({333.769, 109.82}, {335.228, 113.395})
596 .QuadraticCurveTo({334.915, 111.889}, {335.661, 109.592})
597 .QuadraticCurveTo({336.733, 109.636}, {336.07, 113.389})
598 .QuadraticCurveTo({336.609, 111.93}, {338.563, 110.402})
599 .QuadraticCurveTo({339.574, 110.984}, {336.753, 113.784})
600 .QuadraticCurveTo({336.768, 113.8}, {336.796, 113.833})
601 .QuadraticCurveTo({338.104, 112.946}, {340.65, 112.813})
602 .QuadraticCurveTo({340.71, 112.95}, {340.678, 113.245});
607 .
MoveTo({346.357, 106.771})
608 .QuadraticCurveTo({346.295, 104.987}, {347.924, 104.139})
609 .QuadraticCurveTo({347.924, 104.139}, {346.357, 106.771});
614 .
MoveTo({347.56, 106.771})
615 .QuadraticCurveTo({347.498, 104.987}, {349.127, 104.139})
616 .QuadraticCurveTo({349.127, 104.139}, {347.56, 106.771});
DlPathBuilder & AddRoundSuperellipse(const DlRoundSuperellipse &rse)
Append a closed rounded super-ellipse contour to the path.
DlPathBuilder & LineTo(DlPoint p2)
Draw a line from the current point to the indicated point p2.
DlPathBuilder & MoveTo(DlPoint p2)
Start a new contour that will originate at the indicated point p2.
const DlPath TakePath()
Returns the path constructed by this path builder and resets its internal state to the default state ...
DlPathBuilder & ConicCurveTo(DlPoint cp, DlPoint p2, DlScalar weight)
Draw a conic curve (a rational quadratic bezier curve) from the current point to the indicated point ...
DlPathBuilder & AddRoundRect(const DlRoundRect &round_rect)
Append a closed rounded rect contour to the path.
DlPathBuilder & QuadraticCurveTo(DlPoint cp, DlPoint p2)
Draw a quadratic bezier curve from the current point to the indicated point p2, using the indicated p...
DlPathBuilder & Close()
The path is closed back to the location of the most recent MoveTo call. Contours that are filled are ...
DlPathBuilder & CubicCurveTo(DlPoint cp1, DlPoint cp2, DlPoint p2)
Draw a cubic bezier curve from the current point to the indicated point p2, using the indicated point...
static std::vector< Point > GenerateSolidStrokeVertices(Tessellator &tessellator, const PathSource &path, const StrokeParameters &stroke, Scalar scale)
Collection of functions to receive path segments from the underlying path representation via the DlPa...
static std::shared_ptr< ShadowVertices > MakeAmbientShadowVertices(Tessellator &tessellator, const PathSource &source, Scalar occluder_height, const Matrix &matrix)
A utility that generates triangles of the specified fill type given a polyline. This happens on the C...
static void TessellateConvexInternal(const PathSource &path, std::vector< Point > &point_buffer, std::vector< uint16_t > &index_buffer, Scalar tolerance)
An extended tessellator that offers arbitrary/concave tessellation via the libtess2 library.
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
#define FML_CHECK(condition)
#define MAKE_STROKE_PATH_BENCHMARK_CAPTURE(path, cap, join, closed)
#define MAKE_STROKE_BENCHMARK_CAPTURE_ALL_CAPS_JOINS(path, closed)
#define MAKE_SHADOW_BENCHMARK_CAPTURE_ALL_SHAPES(backend)
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
static TessellatorLibtess tess
static void BM_StrokePath(benchmark::State &state, Args &&... args)
static void BM_ShadowPathVerticesImpeller(benchmark::State &state, Args &&... args)
static void BM_Convex(benchmark::State &state, Args &&... args)
BENCHMARK_CAPTURE(BM_Convex, rrect_convex, CreateRRect(), true)
void MoveTo(PathBuilder *builder, Scalar x, Scalar y)
void LineTo(PathBuilder *builder, Scalar x, Scalar y)
void CubicTo(PathBuilder *builder, Scalar x1, Scalar y1, Scalar x2, Scalar y2, Scalar x3, Scalar y3)
void Close(PathBuilder *builder)
static RoundRect MakeRectXY(const Rect &rect, Scalar x_radius, Scalar y_radius)
static RoundSuperellipse MakeRectXY(const Rect &rect, Scalar x_radius, Scalar y_radius)
A structure to store all of the parameters related to stroking a path or basic geometry object.
static constexpr TRect MakeLTRB(Type left, Type top, Type right, Type bottom)
std::vector< Point > points