forsyth20121205-174063a80cc13 years agoHistory
139 lines · 3.5 KB · C
RawDownload
#ifndef __FT_STROKER_H__#define __FT_STROKER_H__ #include <ft2build.h>#include FT_OUTLINE_H FT_BEGIN_HEADER /*@************************************************************* * * @type: FT_Stroker * * @description: *    opaque handler to a path stroker object */  typedef struct FT_StrokerRec_*    FT_Stroker;  /*@************************************************************* * * @enum: FT_Stroker_LineJoin * * @description: *    these values determine how two joining lines are rendered *    in a stroker. * * @values: *    FT_STROKER_LINEJOIN_ROUND :: *      used to render rounded line joins. circular arcs are used *      to join two lines smoothly * *    FT_STROKER_LINEJOIN_BEVEL :: *      used to render beveled line joins; i.e. the two joining lines *      are extended until they intersect * *    FT_STROKER_LINEJOIN_MITER :: *      same as beveled rendering, except that an additional line *      break is added if the angle between the two joining lines *      is too closed (this is useful to avoid unpleasant spikes *      in beveled rendering). */  typedef enum  {    FT_STROKER_LINEJOIN_ROUND = 0,    FT_STROKER_LINEJOIN_BEVEL,    FT_STROKER_LINEJOIN_MITER   } FT_Stroker_LineJoin;  /*@************************************************************* * * @enum: FT_Stroker_LineCap * * @description: *    these values determine how the end of opened sub-paths are *    rendered in a stroke * * @values: *    FT_STROKER_LINECAP_BUTT :: *      the end of lines is rendered as a full stop on the last *      point itself * *    FT_STROKER_LINECAP_ROUND :: *      the end of lines is rendered as a half-circle around the *      last point * *    FT_STROKER_LINECAP_SQUARE :: *      the end of lines is rendered as a square around the *      last point */  typedef enum  {    FT_STROKER_LINECAP_BUTT = 0,    FT_STROKER_LINECAP_ROUND,    FT_STROKER_LINECAP_SQUARE   } FT_Stroker_LineCap;  /* */   FT_EXPORT( FT_Error )  FT_Stroker_New( FT_Memory    memory,                  FT_Stroker  *astroker );   FT_EXPORT( void )  FT_Stroker_Set( FT_Stroker           stroker,                  FT_Fixed             radius,                  FT_Stroker_LineCap   line_cap,                  FT_Stroker_LineJoin  line_join,                  FT_Fixed             miter_limit );    FT_EXPORT( FT_Error )  FT_Stroker_ParseOutline( FT_Stroker   stroker,                           FT_Outline*  outline,                           FT_Bool      opened );   FT_EXPORT( FT_Error )  FT_Stroker_BeginSubPath( FT_Stroker  stroker,                           FT_Vector*  to,                           FT_Bool     open );   FT_EXPORT( FT_Error )  FT_Stroker_EndSubPath( FT_Stroker  stroker );    FT_EXPORT( FT_Error )  FT_Stroker_LineTo( FT_Stroker  stroker,                     FT_Vector*  to );   FT_EXPORT( FT_Error )  FT_Stroker_ConicTo( FT_Stroker  stroker,                      FT_Vector*  control,                      FT_Vector*  to );   FT_EXPORT( FT_Error )  FT_Stroker_CubicTo( FT_Stroker  stroker,                      FT_Vector*  control1,                      FT_Vector*  control2,                      FT_Vector*  to );    FT_EXPORT( FT_Error )  FT_Stroker_GetCounts( FT_Stroker  stroker,                        FT_UInt    *anum_points,                        FT_UInt    *anum_contours );   FT_EXPORT( void )  FT_Stroker_Export( FT_Stroker   stroker,                     FT_Outline*  outline );   FT_EXPORT( void )  FT_Stroker_Done( FT_Stroker  stroker );  FT_END_HEADER #endif /* __FT_STROKER_H__ */