45 auto path = builder->CopyPath(
static_cast<FillType>(fill_type));
49 [&
points](
const float* vertices,
size_t vertices_count,
50 const uint16_t* indices,
size_t indices_count) {
52 std::vector<Point> raw_points;
53 for (
auto i = 0u; i < vertices_count * 2; i += 2) {
54 raw_points.emplace_back(
Point{vertices[i], vertices[i + 1]});
56 for (
auto i = 0u; i < indices_count; i++) {
57 auto point = raw_points[indices[i]];
67 vertices->points =
new float[
points.size()];
68 if (!vertices->points) {
71 vertices->length =
points.size();
72 std::copy(
points.begin(),
points.end(), vertices->points);
static const int points[]
An extended tessellator that offers arbitrary/concave tessellation via the libtess2 library.
Tessellator::Result Tessellate(const Path &path, Scalar tolerance, const BuilderCallback &callback)
Generates filled triangles from the path. A callback is invoked once for the entire tessellation.
struct Vertices * Tessellate(PathBuilder *builder, int fill_type, Scalar tolerance)
PathBuilder * CreatePathBuilder()
void DestroyPathBuilder(PathBuilder *builder)
void DestroyVertices(Vertices *vertices)
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)