[18/18] gdiplus: improved direction of LineCapArrowAnchor
Evan Stade
estade at gmail.com
Wed Jul 11 20:08:26 CDT 2007
Hi,
Before when I submitted a patch with this name I attached the wrong
patch. It still got committed, which was OK, but it had the wrong
name. So while this patch has the same name as another patch that
already got accepted, it's really a different patch because the last
one was named incorrectly.
Changelog:
*changed the way the direction of the endcap is calculated to make
LineCapArrowAnchor direction match windows better
dlls/gdiplus/graphics.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
--
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 93cbcd1..eb37995 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -384,8 +384,13 @@ static GpStatus draw_polybezier(HDC hdc,
if(pen->endcap == LineCapArrowAnchor)
shorten_bezier_amt(ptf, pen->width);
- draw_cap(hdc, pen->color, pen->endcap, pen->width, ptf[3].X,
- ptf[3].Y, pt[count - 1].X, pt[count - 1].Y);
+ /* the direction of the line cap is parallel to the direction at the
+ * end of the bezier (which, if it has been shortened, is not the same
+ * as the direction from pt[count-2] to pt[count-1]) */
+ draw_cap(hdc, pen->color, pen->endcap, pen->width,
+ pt[count - 1].X - (ptf[3].X - ptf[2].X),
+ pt[count - 1].Y - (ptf[3].Y - ptf[2].Y),
+ pt[count - 1].X, pt[count - 1].Y);
}
for(i = 0; i < count - 4; i ++){
@@ -474,8 +479,10 @@ static GpStatus draw_poly(HDC hdc, GpPen
if(pen->endcap == LineCapArrowAnchor)
shorten_bezier_amt(ptf, pen->width);
- draw_cap(hdc, pen->color, pen->endcap, pen->width, ptf[3].X,
- ptf[3].Y, pt[count - 1].X, pt[count - 1].Y);
+ draw_cap(hdc, pen->color, pen->endcap, pen->width,
+ pt[count - 1].X - (ptf[3].X - ptf[2].X),
+ pt[count - 1].Y - (ptf[3].Y - ptf[2].Y),
+ pt[count - 1].X, pt[count - 1].Y);
}
for(i = 0; i < 4; i ++){
pti[i + count - 4].x = roundr(ptf[i].X);
--
1.4.1
More information about the wine-patches
mailing list