summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Zucchi <notzed@gmail.com>2009-06-08 17:12:40 +0200
committerWerner Lemberg <wl@gnu.org>2009-06-08 17:12:40 +0200
commitf33b237c961c41c8bda3fb2dfbc3bc71f9cfabc4 (patch)
tree461ea65a3ab7596a3bf0f55e9e425f6e83eab611 /src
parentc6788a389d9003c5c6b86f30047e05658416f7d6 (diff)
downloadfreetype2-f33b237c961c41c8bda3fb2dfbc3bc71f9cfabc4.tar.gz
Handle FT_STROKER_LINECAP_BUTT.
This fixes Savannah bug #26757. * src/base/ftstroke.c (ft_stroker_cap): Implement it.
Diffstat (limited to 'src')
-rw-r--r--src/base/ftstroke.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/base/ftstroke.c b/src/base/ftstroke.c
index eb7e57d29..0978b0ed9 100644
--- a/src/base/ftstroke.c
+++ b/src/base/ftstroke.c
@@ -859,6 +859,31 @@
error = ft_stroke_border_lineto( border, &delta, FALSE );
}
+ else if ( stroker->line_cap == FT_STROKER_LINECAP_BUTT )
+ {
+ /* add a butt ending */
+ FT_Vector delta;
+ FT_Angle rotate = FT_SIDE_TO_ROTATE( side );
+ FT_Fixed radius = stroker->radius;
+ FT_StrokeBorder border = stroker->borders + side;
+
+
+ FT_Vector_From_Polar( &delta, radius, angle + rotate );
+
+ delta.x += stroker->center.x;
+ delta.y += stroker->center.y;
+
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
+ if ( error )
+ goto Exit;
+
+ FT_Vector_From_Polar( &delta, radius, angle - rotate );
+
+ delta.x += stroker->center.x;
+ delta.y += stroker->center.y;
+
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
+ }
Exit:
return error;