topical media & game development

talk show tell print

lib-of-vs-libs-free-type-2.1.4-include-freetype2-freetype-ftstroker.h / h



  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__ */
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.