diff options
author | Michael Zucchi <notzed@gmail.com> | 2009-06-08 17:12:40 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2009-06-08 17:12:40 +0200 |
commit | f33b237c961c41c8bda3fb2dfbc3bc71f9cfabc4 (patch) | |
tree | 461ea65a3ab7596a3bf0f55e9e425f6e83eab611 /src | |
parent | c6788a389d9003c5c6b86f30047e05658416f7d6 (diff) | |
download | freetype2-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.c | 25 |
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; |