20#include "gd_ft_raster.h"
30typedef struct GD_FT_StrokerRec_ *GD_FT_Stroker;
78typedef enum GD_FT_Stroker_LineJoin_ {
79 GD_FT_STROKER_LINEJOIN_ROUND = 0,
80 GD_FT_STROKER_LINEJOIN_BEVEL = 1,
81 GD_FT_STROKER_LINEJOIN_MITER_VARIABLE = 2,
82 GD_FT_STROKER_LINEJOIN_MITER = GD_FT_STROKER_LINEJOIN_MITER_VARIABLE,
83 GD_FT_STROKER_LINEJOIN_MITER_FIXED = 3
85} GD_FT_Stroker_LineJoin;
109typedef enum GD_FT_Stroker_LineCap_ {
110 GD_FT_STROKER_LINECAP_BUTT = 0,
111 GD_FT_STROKER_LINECAP_ROUND,
112 GD_FT_STROKER_LINECAP_SQUARE
114} GD_FT_Stroker_LineCap;
141typedef enum GD_FT_StrokerBorder_ {
142 GD_FT_STROKER_BORDER_LEFT = 0,
143 GD_FT_STROKER_BORDER_RIGHT
145} GD_FT_StrokerBorder;
166GD_FT_Error GD_FT_Stroker_New(GD_FT_Stroker *astroker);
198void GD_FT_Stroker_Set(GD_FT_Stroker stroker, GD_FT_Fixed radius, GD_FT_Stroker_LineCap line_cap,
199 GD_FT_Stroker_LineJoin line_join, GD_FT_Fixed miter_limit);
229GD_FT_Error GD_FT_Stroker_ParseOutline(GD_FT_Stroker stroker,
const GD_FT_Outline *outline);
256GD_FT_Error GD_FT_Stroker_GetCounts(GD_FT_Stroker stroker, GD_FT_UInt *anum_points,
257 GD_FT_UInt *anum_contours);
281void GD_FT_Stroker_ExportBorder(GD_FT_Stroker stroker, GD_FT_StrokerBorder border,
282 GD_FT_Outline *outline);
304void GD_FT_Stroker_Export(GD_FT_Stroker stroker, GD_FT_Outline *outline);
318void GD_FT_Stroker_Done(GD_FT_Stroker stroker);