46 std::vector<float> points;
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]];
58 points.push_back(point.x);
59 points.push_back(point.y);
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);
PathBuilder & LineTo(Point point, bool relative=false)
Insert a line from the current position to point.
PathBuilder & MoveTo(Point point, bool relative=false)
Path CopyPath(FillType fill=FillType::kNonZero)
PathBuilder & CubicCurveTo(Point controlPoint1, Point controlPoint2, Point point, bool relative=false)
Insert a cubic curve from the curren position to point using the control points controlPoint1 and con...
An extended tessellator that offers arbitrary/concave tessellation via the libtess2 library.
TessellatorLibtess::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)