// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "flutter/benchmarking/benchmarking.h"

#include "impeller/geometry/path.h"
#include "impeller/geometry/path_builder.h"
#include "impeller/tessellator/tessellator.h"

namespace impeller {

namespace {
/// A path with many connected cubic components, including
/// overlaps/self-intersections/multi-contour.
Path CreateCubic();
/// Similar to the path above, but with all cubics replaced by quadratics.
Path CreateQuadratic();
}  // namespace

static Tessellator tess;

template <class... Args>
static void BM_Polyline(benchmark::State& state, Args&&... args) {
  auto args_tuple = std::make_tuple(std::move(args)...);
  auto path = std::get<Path>(args_tuple);
  bool tessellate = std::get<bool>(args_tuple);

  size_t point_count = 0u;
  size_t single_point_count = 0u;
  while (state.KeepRunning()) {
    auto polyline = path.CreatePolyline();
    single_point_count = polyline.points.size();
    point_count += single_point_count;
    if (tessellate) {
      tess.Tessellate(
          FillType::kNonZero, polyline,
          [](const float* vertices, size_t vertices_size,
             const uint16_t* indices, size_t indices_size) { return true; });
    }
  }
  state.counters["SinglePointCount"] = single_point_count;
  state.counters["TotalPointCount"] = point_count;
}

BENCHMARK_CAPTURE(BM_Polyline, cubic_polyline, CreateCubic(), false);
BENCHMARK_CAPTURE(BM_Polyline, cubic_polyline_tess, CreateCubic(), true);
BENCHMARK_CAPTURE(BM_Polyline, quad_polyline, CreateQuadratic(), false);
BENCHMARK_CAPTURE(BM_Polyline, quad_polyline_tess, CreateQuadratic(), true);

namespace {
Path CreateCubic() {
  return PathBuilder{}
      .MoveTo({359.934, 96.6335})
      .CubicCurveTo({358.189, 96.7055}, {356.436, 96.7908}, {354.673, 96.8895})
      .CubicCurveTo({354.571, 96.8953}, {354.469, 96.9016}, {354.367, 96.9075})
      .CubicCurveTo({352.672, 97.0038}, {350.969, 97.113}, {349.259, 97.2355})
      .CubicCurveTo({349.048, 97.2506}, {348.836, 97.2678}, {348.625, 97.2834})
      .CubicCurveTo({347.019, 97.4014}, {345.407, 97.5299}, {343.789, 97.6722})
      .CubicCurveTo({343.428, 97.704}, {343.065, 97.7402}, {342.703, 97.7734})
      .CubicCurveTo({341.221, 97.9086}, {339.736, 98.0505}, {338.246, 98.207})
      .CubicCurveTo({337.702, 98.2642}, {337.156, 98.3292}, {336.612, 98.3894})
      .CubicCurveTo({335.284, 98.5356}, {333.956, 98.6837}, {332.623, 98.8476})
      .CubicCurveTo({332.495, 98.8635}, {332.366, 98.8818}, {332.237, 98.8982})
      .LineTo({332.237, 102.601})
      .LineTo({321.778, 102.601})
      .LineTo({321.778, 100.382})
      .CubicCurveTo({321.572, 100.413}, {321.367, 100.442}, {321.161, 100.476})
      .CubicCurveTo({319.22, 100.79}, {317.277, 101.123}, {315.332, 101.479})
      .CubicCurveTo({315.322, 101.481}, {315.311, 101.482}, {315.301, 101.484})
      .LineTo({310.017, 105.94})
      .LineTo({309.779, 105.427})
      .LineTo({314.403, 101.651})
      .CubicCurveTo({314.391, 101.653}, {314.379, 101.656}, {314.368, 101.658})
      .CubicCurveTo({312.528, 102.001}, {310.687, 102.366}, {308.846, 102.748})
      .CubicCurveTo({307.85, 102.955}, {306.855, 103.182}, {305.859, 103.4})
      .CubicCurveTo({305.048, 103.579}, {304.236, 103.75}, {303.425, 103.936})
      .LineTo({299.105, 107.578})
      .LineTo({298.867, 107.065})
      .LineTo({302.394, 104.185})
      .LineTo({302.412, 104.171})
      .CubicCurveTo({301.388, 104.409}, {300.366, 104.67}, {299.344, 104.921})
      .CubicCurveTo({298.618, 105.1}, {297.89, 105.269}, {297.165, 105.455})
      .CubicCurveTo({295.262, 105.94}, {293.36, 106.445}, {291.462, 106.979})
      .CubicCurveTo({291.132, 107.072}, {290.802, 107.163}, {290.471, 107.257})
      .CubicCurveTo({289.463, 107.544}, {288.455, 107.839}, {287.449, 108.139})
      .CubicCurveTo({286.476, 108.431}, {285.506, 108.73}, {284.536, 109.035})
      .CubicCurveTo({283.674, 109.304}, {282.812, 109.579}, {281.952, 109.859})
      .CubicCurveTo({281.177, 110.112}, {280.406, 110.377}, {279.633, 110.638})
      .CubicCurveTo({278.458, 111.037}, {277.256, 111.449}, {276.803, 111.607})
      .CubicCurveTo({276.76, 111.622}, {276.716, 111.637}, {276.672, 111.653})
      .CubicCurveTo({275.017, 112.239}, {273.365, 112.836}, {271.721, 113.463})
      .LineTo({271.717, 113.449})
      .CubicCurveTo({271.496, 113.496}, {271.238, 113.559}, {270.963, 113.628})
      .CubicCurveTo({270.893, 113.645}, {270.822, 113.663}, {270.748, 113.682})
      .CubicCurveTo({270.468, 113.755}, {270.169, 113.834}, {269.839, 113.926})
      .CubicCurveTo({269.789, 113.94}, {269.732, 113.957}, {269.681, 113.972})
      .CubicCurveTo({269.391, 114.053}, {269.081, 114.143}, {268.756, 114.239})
      .CubicCurveTo({268.628, 114.276}, {268.5, 114.314}, {268.367, 114.354})
      .CubicCurveTo({268.172, 114.412}, {267.959, 114.478}, {267.752, 114.54})
      .CubicCurveTo({263.349, 115.964}, {258.058, 117.695}, {253.564, 119.252})
      .CubicCurveTo({253.556, 119.255}, {253.547, 119.258}, {253.538, 119.261})
      .CubicCurveTo({251.844, 119.849}, {250.056, 120.474}, {248.189, 121.131})
      .CubicCurveTo({248, 121.197}, {247.812, 121.264}, {247.621, 121.331})
      .CubicCurveTo({247.079, 121.522}, {246.531, 121.715}, {245.975, 121.912})
      .CubicCurveTo({245.554, 122.06}, {245.126, 122.212}, {244.698, 122.364})
      .CubicCurveTo({244.071, 122.586}, {243.437, 122.811}, {242.794, 123.04})
      .CubicCurveTo({242.189, 123.255}, {241.58, 123.472}, {240.961, 123.693})
      .CubicCurveTo({240.659, 123.801}, {240.357, 123.909}, {240.052, 124.018})
      .CubicCurveTo({239.12, 124.351}, {238.18, 124.687}, {237.22, 125.032})
      .LineTo({237.164, 125.003})
      .CubicCurveTo({236.709, 125.184}, {236.262, 125.358}, {235.81, 125.538})
      .CubicCurveTo({235.413, 125.68}, {234.994, 125.832}, {234.592, 125.977})
      .CubicCurveTo({234.592, 125.977}, {234.591, 125.977}, {234.59, 125.977})
      .CubicCurveTo({222.206, 130.435}, {207.708, 135.753}, {192.381, 141.429})
      .CubicCurveTo({162.77, 151.336}, {122.17, 156.894}, {84.1123, 160})
      .LineTo({360, 160})
      .LineTo({360, 119.256})
      .LineTo({360, 106.332})
      .LineTo({360, 96.6307})
      .CubicCurveTo({359.978, 96.6317}, {359.956, 96.6326}, {359.934, 96.6335})
      .Close()
      .MoveTo({337.336, 124.143})
      .CubicCurveTo({337.274, 122.359}, {338.903, 121.511}, {338.903, 121.511})
      .CubicCurveTo({338.903, 121.511}, {338.96, 123.303}, {337.336, 124.143})
      .Close()
      .MoveTo({340.082, 121.849})
      .CubicCurveTo({340.074, 121.917}, {340.062, 121.992}, {340.046, 122.075})
      .CubicCurveTo({340.039, 122.109}, {340.031, 122.142}, {340.023, 122.177})
      .CubicCurveTo({340.005, 122.26}, {339.98, 122.346}, {339.952, 122.437})
      .CubicCurveTo({339.941, 122.473}, {339.931, 122.507}, {339.918, 122.544})
      .CubicCurveTo({339.873, 122.672}, {339.819, 122.804}, {339.75, 122.938})
      .CubicCurveTo({339.747, 122.944}, {339.743, 122.949}, {339.74, 122.955})
      .CubicCurveTo({339.674, 123.08}, {339.593, 123.205}, {339.501, 123.328})
      .CubicCurveTo({339.473, 123.366}, {339.441, 123.401}, {339.41, 123.438})
      .CubicCurveTo({339.332, 123.534}, {339.243, 123.625}, {339.145, 123.714})
      .CubicCurveTo({339.105, 123.75}, {339.068, 123.786}, {339.025, 123.821})
      .CubicCurveTo({338.881, 123.937}, {338.724, 124.048}, {338.539, 124.143})
      .CubicCurveTo({338.532, 123.959}, {338.554, 123.79}, {338.58, 123.626})
      .CubicCurveTo({338.58, 123.625}, {338.58, 123.625}, {338.58, 123.625})
      .CubicCurveTo({338.607, 123.455}, {338.65, 123.299}, {338.704, 123.151})
      .CubicCurveTo({338.708, 123.14}, {338.71, 123.127}, {338.714, 123.117})
      .CubicCurveTo({338.769, 122.971}, {338.833, 122.838}, {338.905, 122.712})
      .CubicCurveTo({338.911, 122.702}, {338.916, 122.69200000000001},
                    {338.922, 122.682})
      .CubicCurveTo({338.996, 122.557}, {339.072, 122.444}, {339.155, 122.34})
      .CubicCurveTo({339.161, 122.333}, {339.166, 122.326}, {339.172, 122.319})
      .CubicCurveTo({339.256, 122.215}, {339.339, 122.12}, {339.425, 122.037})
      .CubicCurveTo({339.428, 122.033}, {339.431, 122.03}, {339.435, 122.027})
      .CubicCurveTo({339.785, 121.687}, {340.106, 121.511}, {340.106, 121.511})
      .CubicCurveTo({340.106, 121.511}, {340.107, 121.645}, {340.082, 121.849})
      .Close()
      .MoveTo({340.678, 113.245})
      .CubicCurveTo({340.594, 113.488}, {340.356, 113.655}, {340.135, 113.775})
      .CubicCurveTo({339.817, 113.948}, {339.465, 114.059}, {339.115, 114.151})
      .CubicCurveTo({338.251, 114.379}, {337.34, 114.516}, {336.448, 114.516})
      .CubicCurveTo({335.761, 114.516}, {335.072, 114.527}, {334.384, 114.513})
      .CubicCurveTo({334.125, 114.508}, {333.862, 114.462}, {333.605, 114.424})
      .CubicCurveTo({332.865, 114.318}, {332.096, 114.184}, {331.41, 113.883})
      .CubicCurveTo({330.979, 113.695}, {330.442, 113.34}, {330.672, 112.813})
      .CubicCurveTo({331.135, 111.755}, {333.219, 112.946}, {334.526, 113.833})
      .CubicCurveTo({334.54, 113.816}, {334.554, 113.8}, {334.569, 113.784})
      .CubicCurveTo({333.38, 112.708}, {331.749, 110.985}, {332.76, 110.402})
      .CubicCurveTo({333.769, 109.82}, {334.713, 111.93}, {335.228, 113.395})
      .CubicCurveTo({334.915, 111.889}, {334.59, 109.636}, {335.661, 109.592})
      .CubicCurveTo({336.733, 109.636}, {336.408, 111.889}, {336.07, 113.389})
      .CubicCurveTo({336.609, 111.93}, {337.553, 109.82}, {338.563, 110.402})
      .CubicCurveTo({339.574, 110.984}, {337.942, 112.708}, {336.753, 113.784})
      .CubicCurveTo({336.768, 113.8}, {336.782, 113.816}, {336.796, 113.833})
      .CubicCurveTo({338.104, 112.946}, {340.187, 111.755}, {340.65, 112.813})
      .CubicCurveTo({340.71, 112.95}, {340.728, 113.102}, {340.678, 113.245})
      .Close()
      .MoveTo({346.357, 106.771})
      .CubicCurveTo({346.295, 104.987}, {347.924, 104.139}, {347.924, 104.139})
      .CubicCurveTo({347.924, 104.139}, {347.982, 105.931}, {346.357, 106.771})
      .Close()
      .MoveTo({347.56, 106.771})
      .CubicCurveTo({347.498, 104.987}, {349.127, 104.139}, {349.127, 104.139})
      .CubicCurveTo({349.127, 104.139}, {349.185, 105.931}, {347.56, 106.771})
      .Close()
      .TakePath();
}

Path CreateQuadratic() {
  return PathBuilder{}
      .MoveTo({359.934, 96.6335})
      .QuadraticCurveTo({358.189, 96.7055}, {354.673, 96.8895})
      .QuadraticCurveTo({354.571, 96.8953}, {354.367, 96.9075})
      .QuadraticCurveTo({352.672, 97.0038}, {349.259, 97.2355})
      .QuadraticCurveTo({349.048, 97.2506}, {348.625, 97.2834})
      .QuadraticCurveTo({347.019, 97.4014}, {343.789, 97.6722})
      .QuadraticCurveTo({343.428, 97.704}, {342.703, 97.7734})
      .QuadraticCurveTo({341.221, 97.9086}, {338.246, 98.207})
      .QuadraticCurveTo({337.702, 98.2642}, {336.612, 98.3894})
      .QuadraticCurveTo({335.284, 98.5356}, {332.623, 98.8476})
      .QuadraticCurveTo({332.495, 98.8635}, {332.237, 98.8982})
      .LineTo({332.237, 102.601})
      .LineTo({321.778, 102.601})
      .LineTo({321.778, 100.382})
      .QuadraticCurveTo({321.572, 100.413}, {321.161, 100.476})
      .QuadraticCurveTo({319.22, 100.79}, {315.332, 101.479})
      .QuadraticCurveTo({315.322, 101.481}, {315.301, 101.484})
      .LineTo({310.017, 105.94})
      .LineTo({309.779, 105.427})
      .LineTo({314.403, 101.651})
      .QuadraticCurveTo({314.391, 101.653}, {314.368, 101.658})
      .QuadraticCurveTo({312.528, 102.001}, {308.846, 102.748})
      .QuadraticCurveTo({307.85, 102.955}, {305.859, 103.4})
      .QuadraticCurveTo({305.048, 103.579}, {303.425, 103.936})
      .LineTo({299.105, 107.578})
      .LineTo({298.867, 107.065})
      .LineTo({302.394, 104.185})
      .LineTo({302.412, 104.171})
      .QuadraticCurveTo({301.388, 104.409}, {299.344, 104.921})
      .QuadraticCurveTo({298.618, 105.1}, {297.165, 105.455})
      .QuadraticCurveTo({295.262, 105.94}, {291.462, 106.979})
      .QuadraticCurveTo({291.132, 107.072}, {290.471, 107.257})
      .QuadraticCurveTo({289.463, 107.544}, {287.449, 108.139})
      .QuadraticCurveTo({286.476, 108.431}, {284.536, 109.035})
      .QuadraticCurveTo({283.674, 109.304}, {281.952, 109.859})
      .QuadraticCurveTo({281.177, 110.112}, {279.633, 110.638})
      .QuadraticCurveTo({278.458, 111.037}, {276.803, 111.607})
      .QuadraticCurveTo({276.76, 111.622}, {276.672, 111.653})
      .QuadraticCurveTo({275.017, 112.239}, {271.721, 113.463})
      .LineTo({271.717, 113.449})
      .QuadraticCurveTo({271.496, 113.496}, {270.963, 113.628})
      .QuadraticCurveTo({270.893, 113.645}, {270.748, 113.682})
      .QuadraticCurveTo({270.468, 113.755}, {269.839, 113.926})
      .QuadraticCurveTo({269.789, 113.94}, {269.681, 113.972})
      .QuadraticCurveTo({269.391, 114.053}, {268.756, 114.239})
      .QuadraticCurveTo({268.628, 114.276}, {268.367, 114.354})
      .QuadraticCurveTo({268.172, 114.412}, {267.752, 114.54})
      .QuadraticCurveTo({263.349, 115.964}, {253.564, 119.252})
      .QuadraticCurveTo({253.556, 119.255}, {253.538, 119.261})
      .QuadraticCurveTo({251.844, 119.849}, {248.189, 121.131})
      .QuadraticCurveTo({248, 121.197}, {247.621, 121.331})
      .QuadraticCurveTo({247.079, 121.522}, {245.975, 121.912})
      .QuadraticCurveTo({245.554, 122.06}, {244.698, 122.364})
      .QuadraticCurveTo({244.071, 122.586}, {242.794, 123.04})
      .QuadraticCurveTo({242.189, 123.255}, {240.961, 123.693})
      .QuadraticCurveTo({240.659, 123.801}, {240.052, 124.018})
      .QuadraticCurveTo({239.12, 124.351}, {237.22, 125.032})
      .LineTo({237.164, 125.003})
      .QuadraticCurveTo({236.709, 125.184}, {235.81, 125.538})
      .QuadraticCurveTo({235.413, 125.68}, {234.592, 125.977})
      .QuadraticCurveTo({234.592, 125.977}, {234.59, 125.977})
      .QuadraticCurveTo({222.206, 130.435}, {192.381, 141.429})
      .QuadraticCurveTo({162.77, 151.336}, {84.1123, 160})
      .LineTo({360, 160})
      .LineTo({360, 119.256})
      .LineTo({360, 106.332})
      .LineTo({360, 96.6307})
      .QuadraticCurveTo({359.978, 96.6317}, {359.934, 96.6335})
      .Close()
      .MoveTo({337.336, 124.143})
      .QuadraticCurveTo({337.274, 122.359}, {338.903, 121.511})
      .QuadraticCurveTo({338.903, 121.511}, {337.336, 124.143})
      .Close()
      .MoveTo({340.082, 121.849})
      .QuadraticCurveTo({340.074, 121.917}, {340.046, 122.075})
      .QuadraticCurveTo({340.039, 122.109}, {340.023, 122.177})
      .QuadraticCurveTo({340.005, 122.26}, {339.952, 122.437})
      .QuadraticCurveTo({339.941, 122.473}, {339.918, 122.544})
      .QuadraticCurveTo({339.873, 122.672}, {339.75, 122.938})
      .QuadraticCurveTo({339.747, 122.944}, {339.74, 122.955})
      .QuadraticCurveTo({339.674, 123.08}, {339.501, 123.328})
      .QuadraticCurveTo({339.473, 123.366}, {339.41, 123.438})
      .QuadraticCurveTo({339.332, 123.534}, {339.145, 123.714})
      .QuadraticCurveTo({339.105, 123.75}, {339.025, 123.821})
      .QuadraticCurveTo({338.881, 123.937}, {338.539, 124.143})
      .QuadraticCurveTo({338.532, 123.959}, {338.58, 123.626})
      .QuadraticCurveTo({338.58, 123.625}, {338.58, 123.625})
      .QuadraticCurveTo({338.607, 123.455}, {338.704, 123.151})
      .QuadraticCurveTo({338.708, 123.14}, {338.714, 123.117})
      .QuadraticCurveTo({338.769, 122.971}, {338.905, 122.712})
      .QuadraticCurveTo({338.911, 122.702}, {338.922, 122.682})
      .QuadraticCurveTo({338.996, 122.557}, {339.155, 122.34})
      .QuadraticCurveTo({339.161, 122.333}, {339.172, 122.319})
      .QuadraticCurveTo({339.256, 122.215}, {339.425, 122.037})
      .QuadraticCurveTo({339.428, 122.033}, {339.435, 122.027})
      .QuadraticCurveTo({339.785, 121.687}, {340.106, 121.511})
      .QuadraticCurveTo({340.106, 121.511}, {340.082, 121.849})
      .Close()
      .MoveTo({340.678, 113.245})
      .QuadraticCurveTo({340.594, 113.488}, {340.135, 113.775})
      .QuadraticCurveTo({339.817, 113.948}, {339.115, 114.151})
      .QuadraticCurveTo({338.251, 114.379}, {336.448, 114.516})
      .QuadraticCurveTo({335.761, 114.516}, {334.384, 114.513})
      .QuadraticCurveTo({334.125, 114.508}, {333.605, 114.424})
      .QuadraticCurveTo({332.865, 114.318}, {331.41, 113.883})
      .QuadraticCurveTo({330.979, 113.695}, {330.672, 112.813})
      .QuadraticCurveTo({331.135, 111.755}, {334.526, 113.833})
      .QuadraticCurveTo({334.54, 113.816}, {334.569, 113.784})
      .QuadraticCurveTo({333.38, 112.708}, {332.76, 110.402})
      .QuadraticCurveTo({333.769, 109.82}, {335.228, 113.395})
      .QuadraticCurveTo({334.915, 111.889}, {335.661, 109.592})
      .QuadraticCurveTo({336.733, 109.636}, {336.07, 113.389})
      .QuadraticCurveTo({336.609, 111.93}, {338.563, 110.402})
      .QuadraticCurveTo({339.574, 110.984}, {336.753, 113.784})
      .QuadraticCurveTo({336.768, 113.8}, {336.796, 113.833})
      .QuadraticCurveTo({338.104, 112.946}, {340.65, 112.813})
      .QuadraticCurveTo({340.71, 112.95}, {340.678, 113.245})
      .Close()
      .MoveTo({346.357, 106.771})
      .QuadraticCurveTo({346.295, 104.987}, {347.924, 104.139})
      .QuadraticCurveTo({347.924, 104.139}, {346.357, 106.771})
      .Close()
      .MoveTo({347.56, 106.771})
      .QuadraticCurveTo({347.498, 104.987}, {349.127, 104.139})
      .QuadraticCurveTo({349.127, 104.139}, {347.56, 106.771})
      .Close()
      .TakePath();
}

}  // namespace
}  // namespace impeller
