[PATCH 5/8] d2d1: Refactor outline generation as preparation for new TYPE_END vertex

Stefan Brüns stefan.bruens at rwth-aachen.de
Fri Jan 7 12:33:05 CST 2022


On Freitag, 7. Januar 2022 18:10:27 CET you wrote:
> On Fri, 7 Jan 2022 at 09:00, Stefan Brüns <stefan.bruens at rwth-aachen.de> 
wrote:
> > -            prev_type = figure->vertex_types[figure->vertex_count - 1];
> > -            if (d2d_vertex_type_is_bezier(prev_type))
> > -                prev =
> > &figure->bezier_controls[figure->bezier_control_count - 1]; -           
> > else
> > -                prev = &figure->vertices[figure->vertex_count - 1];
> > +            next_prev = next = &figure->bezier_controls[bezier_idx++];
> > +            /* type BEZIER implies i + 1 < figure->vertex_count */
> > +            p1 = &figure->vertices[i + 1];
> > +
> 
> Is that already true at this point in the series? It would be true
> after patch 6/8 in this series, but at this point in the series the
> end point could still have been removed in
> d2d_geometry_sink_EndFigure(), right?

The code is valid.

Either the last and first vertex is not cooincident, then the last segment is 
a line.

Or they are coincident, but he figure is OPEN. Then again the last segment is 
a line.

Or they are coincident, the figure is CLOSED, thus vertex_count is 
decremented. Then the last segment starts a `i == vertex_count - 1 == 
real_vertex_count - 2`. As `vertex[i + 1] == vertex[0]` holds, we can ignore 
the wraparound.

The comment is slightly off in this case - maybe `i + 1 < real_vertex_count`, 
but I am not sure this is really relevant, as this becomes fully correct with 
patch 6.

Kind regards,

Stefan

-- 
Stefan Brüns  /  Bergstraße 21  /  52062 Aachen
home: +49 241 53809034     mobile: +49 151 50412019
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part.
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20220107/c12717a9/attachment.sig>


More information about the wine-devel mailing list