Bartosz Kosiorek (@gang65) commented about dlls/gdiplus/graphicspath.c:
// Coordination where cap needs to be drawn
par_dx = -pen_width * segment_dx / segment_length;
par_dy = -pen_width * segment_dy / segment_length;
sina = -pen_width * custom->scale * segment_dx / segment_length;
cosa = pen_width * custom->scale * segment_dy / segment_length;
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 - custom->inset) * sina;
perp_dy = custom->pathdata.Points[i].X * sina - (custom->pathdata.Points[i].Y - custom->inset) * cosa;
*last_point = add_path_list_node(*last_point, endpoint->X + par_dx + perp_dx,
endpoint->Y + par_dy + perp_dy, custom->pathdata.Types[i]);
}
// FIXME: The line should be shorter, and it should ends up when Arrow/Cap is started draw
The line should be shortened, to not mix with Customized Cap.
![Screenshot_from_2022-11-08_19-51-40](/uploads/dabd7fb066ec5b47b828621383efcb5e/Screenshot_from_2022-11-08_19-51-40.png)