Il 27/01/20 15:20, Giovanni Mascellani ha scritto:
- bv = geometry->fill.bezier_vertices;
- d2d_bezier_vertex_set(&bv[0], &v[1], 0.0f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[1], &v1, 0.5f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[2], &v[2], 1.0f, 1.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[3], &v[3], 0.0f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[4], &v2, 0.5f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[5], &v[4], 1.0f, 1.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[6], &v[5], 0.0f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[7], &v3, 0.5f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[8], &v[6], 1.0f, 1.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[9], &v[7], 0.0f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[10], &v4, 0.5f, 0.0f, -1.0f);
- d2d_bezier_vertex_set(&bv[11], &v[0], 1.0f, 1.0f, -1.0f);
- geometry->fill.bezier_vertex_count = 12;
- if (!d2d_geometry_outline_add_line_segment(geometry, &v[0], &v[1]))
goto fail;
- if (!d2d_geometry_outline_add_arc_quadrant(geometry, &v[1], &v1, &v[2]))
goto fail;
- if (!d2d_geometry_outline_add_line_segment(geometry, &v[2], &v[3]))
goto fail;
- if (!d2d_geometry_outline_add_arc_quadrant(geometry, &v[3], &v2, &v[4]))
goto fail;
- if (!d2d_geometry_outline_add_line_segment(geometry, &v[4], &v[5]))
goto fail;
- if (!d2d_geometry_outline_add_arc_quadrant(geometry, &v[5], &v3, &v[6]))
goto fail;
- if (!d2d_geometry_outline_add_line_segment(geometry, &v[6], &v[7]))
goto fail;
- if (!d2d_geometry_outline_add_arc_quadrant(geometry, &v[7], &v4, &v[0]))
goto fail;
I implemented an independent interface for arc quadrant stroking, but filling still uses Bézier structures, since there is no real "interface" for filling.
In line of principle another array arc_vertices might be added to d2d_geometry (again, used to draw Béziers), but then the meaning of UV coords would make no sense for actual arcs.
Giovanni.