[PATCH v2 1/2] d2d1: Implement rounded rectangle drawing.

Giovanni Mascellani gio at debian.org
Mon Jan 27 08:27:43 CST 2020


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.
-- 
Giovanni Mascellani <g.mascellani at gmail.com>
Postdoc researcher - Université Libre de Bruxelles

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20200127/c384fcf6/attachment.sig>


More information about the wine-devel mailing list