Esme Povirk (@madewokherd) commented about dlls/gdiplus/graphicspath.c:
widen_closed_figure(tmp_points, 0, custom->pathdata.Count - 1, pen, pen_width, last_point);
else
widen_open_figure(tmp_points, 0, custom->pathdata.Count - 1, pen, pen_width, LineCapFlat, LineCapFlat, last_point);
}
else
{
for (INT i = 0; i < custom->pathdata.Count; i++)
{
// rotation of CustomCap according to line
perp_dx = custom->pathdata.Points[i].X * cosa + (custom->pathdata.Points[i].Y - 1.0) * sina;
perp_dy = custom->pathdata.Points[i].X * sina - (custom->pathdata.Points[i].Y - 1.0) * cosa;
*last_point = add_path_list_node(*last_point, posx + perp_dx,
posy + perp_dy, custom->pathdata.Types[i]);
}
}
// FIXME: The line should be shorter, and it should ends up when Arrow/Cap is started draw
This comment makes things more confusing, I think. I'd suggest something like `FIXME: The line should be adjusted by the inset value of the custom cap.`.