summaryrefslogtreecommitdiffstats
path: root/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h')
-rwxr-xr-xthirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h1009
1 files changed, 504 insertions, 505 deletions
diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h
index fd69f28..3aff51a 100755
--- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h
+++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftoutln.h
@@ -34,517 +34,516 @@
FT_BEGIN_HEADER
- /*************************************************************************/
- /* */
- /* <Section> */
- /* outline_processing */
- /* */
- /* <Title> */
- /* Outline Processing */
- /* */
- /* <Abstract> */
- /* Functions to create, transform, and render vectorial glyph images. */
- /* */
- /* <Description> */
- /* This section contains routines used to create and destroy scalable */
- /* glyph images known as `outlines'. These can also be measured, */
- /* transformed, and converted into bitmaps and pixmaps. */
- /* */
- /* <Order> */
- /* FT_Outline */
- /* FT_OUTLINE_FLAGS */
- /* FT_Outline_New */
- /* FT_Outline_Done */
- /* FT_Outline_Copy */
- /* FT_Outline_Translate */
- /* FT_Outline_Transform */
- /* FT_Outline_Embolden */
- /* FT_Outline_EmboldenXY */
- /* FT_Outline_Reverse */
- /* FT_Outline_Check */
- /* */
- /* FT_Outline_Get_CBox */
- /* FT_Outline_Get_BBox */
- /* */
- /* FT_Outline_Get_Bitmap */
- /* FT_Outline_Render */
- /* */
- /* FT_Outline_Decompose */
- /* FT_Outline_Funcs */
- /* FT_Outline_MoveTo_Func */
- /* FT_Outline_LineTo_Func */
- /* FT_Outline_ConicTo_Func */
- /* FT_Outline_CubicTo_Func */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Decompose */
- /* */
- /* <Description> */
- /* Walk over an outline's structure to decompose it into individual */
- /* segments and Bézier arcs. This function also emits `move to' */
- /* operations to indicate the start of new contours in the outline. */
- /* */
- /* <Input> */
- /* outline :: A pointer to the source target. */
- /* */
- /* func_interface :: A table of `emitters', i.e., function pointers */
- /* called during decomposition to indicate path */
- /* operations. */
- /* */
- /* <InOut> */
- /* user :: A typeless pointer which is passed to each */
- /* emitter during the decomposition. It can be */
- /* used to store the state during the */
- /* decomposition. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Decompose( FT_Outline* outline,
- const FT_Outline_Funcs* func_interface,
- void* user );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_New */
- /* */
- /* <Description> */
- /* Create a new outline of a given size. */
- /* */
- /* <Input> */
- /* library :: A handle to the library object from where the */
- /* outline is allocated. Note however that the new */
- /* outline will *not* necessarily be *freed*, when */
- /* destroying the library, by @FT_Done_FreeType. */
- /* */
- /* numPoints :: The maximum number of points within the outline. */
- /* Must be smaller than or equal to 0xFFFF (65535). */
- /* */
- /* numContours :: The maximum number of contours within the outline. */
- /* This value must be in the range 0 to `numPoints'. */
- /* */
- /* <Output> */
- /* anoutline :: A handle to the new outline. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The reason why this function takes a `library' parameter is simply */
- /* to use the library's memory allocator. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_New( FT_Library library,
- FT_UInt numPoints,
- FT_Int numContours,
- FT_Outline *anoutline );
-
-
- FT_EXPORT( FT_Error )
- FT_Outline_New_Internal( FT_Memory memory,
- FT_UInt numPoints,
- FT_Int numContours,
- FT_Outline *anoutline );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Done */
- /* */
- /* <Description> */
- /* Destroy an outline created with @FT_Outline_New. */
- /* */
- /* <Input> */
- /* library :: A handle of the library object used to allocate the */
- /* outline. */
- /* */
- /* outline :: A pointer to the outline object to be discarded. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* If the outline's `owner' field is not set, only the outline */
- /* descriptor will be released. */
- /* */
- /* The reason why this function takes an `library' parameter is */
- /* simply to use ft_mem_free(). */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Done( FT_Library library,
- FT_Outline* outline );
-
-
- FT_EXPORT( FT_Error )
- FT_Outline_Done_Internal( FT_Memory memory,
- FT_Outline* outline );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Check */
- /* */
- /* <Description> */
- /* Check the contents of an outline descriptor. */
- /* */
- /* <Input> */
- /* outline :: A handle to a source outline. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Check( FT_Outline* outline );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Get_CBox */
- /* */
- /* <Description> */
- /* Return an outline's `control box'. The control box encloses all */
- /* the outline's points, including Bézier control points. Though it */
- /* coincides with the exact bounding box for most glyphs, it can be */
- /* slightly larger in some situations (like when rotating an outline */
- /* which contains Bézier outside arcs). */
- /* */
- /* Computing the control box is very fast, while getting the bounding */
- /* box can take much more time as it needs to walk over all segments */
- /* and arcs in the outline. To get the latter, you can use the */
- /* `ftbbox' component which is dedicated to this single task. */
- /* */
- /* <Input> */
- /* outline :: A pointer to the source outline descriptor. */
- /* */
- /* <Output> */
- /* acbox :: The outline's control box. */
- /* */
- /* <Note> */
- /* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */
- /* */
- FT_EXPORT( void )
- FT_Outline_Get_CBox( const FT_Outline* outline,
- FT_BBox *acbox );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Translate */
- /* */
- /* <Description> */
- /* Apply a simple translation to the points of an outline. */
- /* */
- /* <InOut> */
- /* outline :: A pointer to the target outline descriptor. */
- /* */
- /* <Input> */
- /* xOffset :: The horizontal offset. */
- /* */
- /* yOffset :: The vertical offset. */
- /* */
- FT_EXPORT( void )
- FT_Outline_Translate( const FT_Outline* outline,
- FT_Pos xOffset,
- FT_Pos yOffset );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Copy */
- /* */
- /* <Description> */
- /* Copy an outline into another one. Both objects must have the */
- /* same sizes (number of points & number of contours) when this */
- /* function is called. */
- /* */
- /* <Input> */
- /* source :: A handle to the source outline. */
- /* */
- /* <Output> */
- /* target :: A handle to the target outline. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Copy( const FT_Outline* source,
- FT_Outline *target );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Transform */
- /* */
- /* <Description> */
- /* Apply a simple 2x2 matrix to all of an outline's points. Useful */
- /* for applying rotations, slanting, flipping, etc. */
- /* */
- /* <InOut> */
- /* outline :: A pointer to the target outline descriptor. */
- /* */
- /* <Input> */
- /* matrix :: A pointer to the transformation matrix. */
- /* */
- /* <Note> */
- /* You can use @FT_Outline_Translate if you need to translate the */
- /* outline's points. */
- /* */
- FT_EXPORT( void )
- FT_Outline_Transform( const FT_Outline* outline,
- const FT_Matrix* matrix );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Embolden */
- /* */
- /* <Description> */
- /* Embolden an outline. The new outline will be at most 4~times */
- /* `strength' pixels wider and higher. You may think of the left and */
- /* bottom borders as unchanged. */
- /* */
- /* Negative `strength' values to reduce the outline thickness are */
- /* possible also. */
- /* */
- /* <InOut> */
- /* outline :: A handle to the target outline. */
- /* */
- /* <Input> */
- /* strength :: How strong the glyph is emboldened. Expressed in */
- /* 26.6 pixel format. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The used algorithm to increase or decrease the thickness of the */
- /* glyph doesn't change the number of points; this means that certain */
- /* situations like acute angles or intersections are sometimes */
- /* handled incorrectly. */
- /* */
- /* If you need `better' metrics values you should call */
- /* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */
- /* */
- /* Example call: */
- /* */
- /* { */
- /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */
- /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */
- /* FT_Outline_Embolden( &face->slot->outline, strength ); */
- /* } */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Embolden( FT_Outline* outline,
- FT_Pos strength );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_EmboldenXY */
- /* */
- /* <Description> */
- /* Embolden an outline. The new outline will be `xstrength' pixels */
- /* wider and `ystrength' pixels higher. Otherwise, it is similar to */
- /* @FT_Outline_Embolden, which uses the same strength in both */
- /* directions. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_EmboldenXY( FT_Outline* outline,
- FT_Pos xstrength,
- FT_Pos ystrength );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Reverse */
- /* */
- /* <Description> */
- /* Reverse the drawing direction of an outline. This is used to */
- /* ensure consistent fill conventions for mirrored glyphs. */
- /* */
- /* <InOut> */
- /* outline :: A pointer to the target outline descriptor. */
- /* */
- /* <Note> */
- /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */
- /* the outline's `flags' field. */
- /* */
- /* It shouldn't be used by a normal client application, unless it */
- /* knows what it is doing. */
- /* */
- FT_EXPORT( void )
- FT_Outline_Reverse( FT_Outline* outline );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Get_Bitmap */
- /* */
- /* <Description> */
- /* Render an outline within a bitmap. The outline's image is simply */
- /* OR-ed to the target bitmap. */
- /* */
- /* <Input> */
- /* library :: A handle to a FreeType library object. */
- /* */
- /* outline :: A pointer to the source outline descriptor. */
- /* */
- /* <InOut> */
- /* abitmap :: A pointer to the target bitmap descriptor. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* This function does NOT CREATE the bitmap, it only renders an */
- /* outline image within the one you pass to it! Consequently, the */
- /* various fields in `abitmap' should be set accordingly. */
- /* */
- /* It will use the raster corresponding to the default glyph format. */
- /* */
- /* The value of the `num_grays' field in `abitmap' is ignored. If */
- /* you select the gray-level rasterizer, and you want less than 256 */
- /* gray levels, you have to use @FT_Outline_Render directly. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Get_Bitmap( FT_Library library,
- FT_Outline* outline,
- const FT_Bitmap *abitmap );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Outline_Render */
- /* */
- /* <Description> */
- /* Render an outline within a bitmap using the current scan-convert. */
- /* This function uses an @FT_Raster_Params structure as an argument, */
- /* allowing advanced features like direct composition, translucency, */
- /* etc. */
- /* */
- /* <Input> */
- /* library :: A handle to a FreeType library object. */
- /* */
- /* outline :: A pointer to the source outline descriptor. */
- /* */
- /* <InOut> */
- /* params :: A pointer to an @FT_Raster_Params structure used to */
- /* describe the rendering operation. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* You should know what you are doing and how @FT_Raster_Params works */
- /* to use this function. */
- /* */
- /* The field `params.source' will be set to `outline' before the scan */
- /* converter is called, which means that the value you give to it is */
- /* actually ignored. */
- /* */
- /* The gray-level rasterizer always uses 256 gray levels. If you */
- /* want less gray levels, you have to provide your own span callback. */
- /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */
- /* @FT_Raster_Params structure for more details. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Outline_Render( FT_Library library,
- FT_Outline* outline,
- FT_Raster_Params* params );
-
-
- /**************************************************************************
- *
- * @enum:
- * FT_Orientation
- *
- * @description:
- * A list of values used to describe an outline's contour orientation.
- *
- * The TrueType and PostScript specifications use different conventions
- * to determine whether outline contours should be filled or unfilled.
- *
- * @values:
- * FT_ORIENTATION_TRUETYPE ::
- * According to the TrueType specification, clockwise contours must
- * be filled, and counter-clockwise ones must be unfilled.
- *
- * FT_ORIENTATION_POSTSCRIPT ::
- * According to the PostScript specification, counter-clockwise contours
- * must be filled, and clockwise ones must be unfilled.
- *
- * FT_ORIENTATION_FILL_RIGHT ::
- * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
- * remember that in TrueType, everything that is to the right of
- * the drawing direction of a contour must be filled.
- *
- * FT_ORIENTATION_FILL_LEFT ::
- * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
- * remember that in PostScript, everything that is to the left of
- * the drawing direction of a contour must be filled.
- *
- * FT_ORIENTATION_NONE ::
- * The orientation cannot be determined. That is, different parts of
- * the glyph have different orientation.
- *
- */
- typedef enum FT_Orientation_
- {
+/*************************************************************************/
+/* */
+/* <Section> */
+/* outline_processing */
+/* */
+/* <Title> */
+/* Outline Processing */
+/* */
+/* <Abstract> */
+/* Functions to create, transform, and render vectorial glyph images. */
+/* */
+/* <Description> */
+/* This section contains routines used to create and destroy scalable */
+/* glyph images known as `outlines'. These can also be measured, */
+/* transformed, and converted into bitmaps and pixmaps. */
+/* */
+/* <Order> */
+/* FT_Outline */
+/* FT_OUTLINE_FLAGS */
+/* FT_Outline_New */
+/* FT_Outline_Done */
+/* FT_Outline_Copy */
+/* FT_Outline_Translate */
+/* FT_Outline_Transform */
+/* FT_Outline_Embolden */
+/* FT_Outline_EmboldenXY */
+/* FT_Outline_Reverse */
+/* FT_Outline_Check */
+/* */
+/* FT_Outline_Get_CBox */
+/* FT_Outline_Get_BBox */
+/* */
+/* FT_Outline_Get_Bitmap */
+/* FT_Outline_Render */
+/* */
+/* FT_Outline_Decompose */
+/* FT_Outline_Funcs */
+/* FT_Outline_MoveTo_Func */
+/* FT_Outline_LineTo_Func */
+/* FT_Outline_ConicTo_Func */
+/* FT_Outline_CubicTo_Func */
+/* */
+/*************************************************************************/
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Decompose */
+/* */
+/* <Description> */
+/* Walk over an outline's structure to decompose it into individual */
+/* segments and Bézier arcs. This function also emits `move to' */
+/* operations to indicate the start of new contours in the outline. */
+/* */
+/* <Input> */
+/* outline :: A pointer to the source target. */
+/* */
+/* func_interface :: A table of `emitters', i.e., function pointers */
+/* called during decomposition to indicate path */
+/* operations. */
+/* */
+/* <InOut> */
+/* user :: A typeless pointer which is passed to each */
+/* emitter during the decomposition. It can be */
+/* used to store the state during the */
+/* decomposition. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Decompose( FT_Outline* outline,
+ const FT_Outline_Funcs* func_interface,
+ void* user );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_New */
+/* */
+/* <Description> */
+/* Create a new outline of a given size. */
+/* */
+/* <Input> */
+/* library :: A handle to the library object from where the */
+/* outline is allocated. Note however that the new */
+/* outline will *not* necessarily be *freed*, when */
+/* destroying the library, by @FT_Done_FreeType. */
+/* */
+/* numPoints :: The maximum number of points within the outline. */
+/* Must be smaller than or equal to 0xFFFF (65535). */
+/* */
+/* numContours :: The maximum number of contours within the outline. */
+/* This value must be in the range 0 to `numPoints'. */
+/* */
+/* <Output> */
+/* anoutline :: A handle to the new outline. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The reason why this function takes a `library' parameter is simply */
+/* to use the library's memory allocator. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_New( FT_Library library,
+ FT_UInt numPoints,
+ FT_Int numContours,
+ FT_Outline *anoutline );
+
+
+FT_EXPORT( FT_Error )
+FT_Outline_New_Internal( FT_Memory memory,
+ FT_UInt numPoints,
+ FT_Int numContours,
+ FT_Outline *anoutline );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Done */
+/* */
+/* <Description> */
+/* Destroy an outline created with @FT_Outline_New. */
+/* */
+/* <Input> */
+/* library :: A handle of the library object used to allocate the */
+/* outline. */
+/* */
+/* outline :: A pointer to the outline object to be discarded. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* If the outline's `owner' field is not set, only the outline */
+/* descriptor will be released. */
+/* */
+/* The reason why this function takes an `library' parameter is */
+/* simply to use ft_mem_free(). */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Done( FT_Library library,
+ FT_Outline* outline );
+
+
+FT_EXPORT( FT_Error )
+FT_Outline_Done_Internal( FT_Memory memory,
+ FT_Outline* outline );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Check */
+/* */
+/* <Description> */
+/* Check the contents of an outline descriptor. */
+/* */
+/* <Input> */
+/* outline :: A handle to a source outline. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Check( FT_Outline* outline );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Get_CBox */
+/* */
+/* <Description> */
+/* Return an outline's `control box'. The control box encloses all */
+/* the outline's points, including Bézier control points. Though it */
+/* coincides with the exact bounding box for most glyphs, it can be */
+/* slightly larger in some situations (like when rotating an outline */
+/* which contains Bézier outside arcs). */
+/* */
+/* Computing the control box is very fast, while getting the bounding */
+/* box can take much more time as it needs to walk over all segments */
+/* and arcs in the outline. To get the latter, you can use the */
+/* `ftbbox' component which is dedicated to this single task. */
+/* */
+/* <Input> */
+/* outline :: A pointer to the source outline descriptor. */
+/* */
+/* <Output> */
+/* acbox :: The outline's control box. */
+/* */
+/* <Note> */
+/* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */
+/* */
+FT_EXPORT( void )
+FT_Outline_Get_CBox( const FT_Outline* outline,
+ FT_BBox *acbox );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Translate */
+/* */
+/* <Description> */
+/* Apply a simple translation to the points of an outline. */
+/* */
+/* <InOut> */
+/* outline :: A pointer to the target outline descriptor. */
+/* */
+/* <Input> */
+/* xOffset :: The horizontal offset. */
+/* */
+/* yOffset :: The vertical offset. */
+/* */
+FT_EXPORT( void )
+FT_Outline_Translate( const FT_Outline* outline,
+ FT_Pos xOffset,
+ FT_Pos yOffset );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Copy */
+/* */
+/* <Description> */
+/* Copy an outline into another one. Both objects must have the */
+/* same sizes (number of points & number of contours) when this */
+/* function is called. */
+/* */
+/* <Input> */
+/* source :: A handle to the source outline. */
+/* */
+/* <Output> */
+/* target :: A handle to the target outline. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Copy( const FT_Outline* source,
+ FT_Outline *target );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Transform */
+/* */
+/* <Description> */
+/* Apply a simple 2x2 matrix to all of an outline's points. Useful */
+/* for applying rotations, slanting, flipping, etc. */
+/* */
+/* <InOut> */
+/* outline :: A pointer to the target outline descriptor. */
+/* */
+/* <Input> */
+/* matrix :: A pointer to the transformation matrix. */
+/* */
+/* <Note> */
+/* You can use @FT_Outline_Translate if you need to translate the */
+/* outline's points. */
+/* */
+FT_EXPORT( void )
+FT_Outline_Transform( const FT_Outline* outline,
+ const FT_Matrix* matrix );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Embolden */
+/* */
+/* <Description> */
+/* Embolden an outline. The new outline will be at most 4~times */
+/* `strength' pixels wider and higher. You may think of the left and */
+/* bottom borders as unchanged. */
+/* */
+/* Negative `strength' values to reduce the outline thickness are */
+/* possible also. */
+/* */
+/* <InOut> */
+/* outline :: A handle to the target outline. */
+/* */
+/* <Input> */
+/* strength :: How strong the glyph is emboldened. Expressed in */
+/* 26.6 pixel format. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The used algorithm to increase or decrease the thickness of the */
+/* glyph doesn't change the number of points; this means that certain */
+/* situations like acute angles or intersections are sometimes */
+/* handled incorrectly. */
+/* */
+/* If you need `better' metrics values you should call */
+/* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */
+/* */
+/* Example call: */
+/* */
+/* { */
+/* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */
+/* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */
+/* FT_Outline_Embolden( &face->slot->outline, strength ); */
+/* } */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Embolden( FT_Outline* outline,
+ FT_Pos strength );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_EmboldenXY */
+/* */
+/* <Description> */
+/* Embolden an outline. The new outline will be `xstrength' pixels */
+/* wider and `ystrength' pixels higher. Otherwise, it is similar to */
+/* @FT_Outline_Embolden, which uses the same strength in both */
+/* directions. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_EmboldenXY( FT_Outline* outline,
+ FT_Pos xstrength,
+ FT_Pos ystrength );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Reverse */
+/* */
+/* <Description> */
+/* Reverse the drawing direction of an outline. This is used to */
+/* ensure consistent fill conventions for mirrored glyphs. */
+/* */
+/* <InOut> */
+/* outline :: A pointer to the target outline descriptor. */
+/* */
+/* <Note> */
+/* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */
+/* the outline's `flags' field. */
+/* */
+/* It shouldn't be used by a normal client application, unless it */
+/* knows what it is doing. */
+/* */
+FT_EXPORT( void )
+FT_Outline_Reverse( FT_Outline* outline );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Get_Bitmap */
+/* */
+/* <Description> */
+/* Render an outline within a bitmap. The outline's image is simply */
+/* OR-ed to the target bitmap. */
+/* */
+/* <Input> */
+/* library :: A handle to a FreeType library object. */
+/* */
+/* outline :: A pointer to the source outline descriptor. */
+/* */
+/* <InOut> */
+/* abitmap :: A pointer to the target bitmap descriptor. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* This function does NOT CREATE the bitmap, it only renders an */
+/* outline image within the one you pass to it! Consequently, the */
+/* various fields in `abitmap' should be set accordingly. */
+/* */
+/* It will use the raster corresponding to the default glyph format. */
+/* */
+/* The value of the `num_grays' field in `abitmap' is ignored. If */
+/* you select the gray-level rasterizer, and you want less than 256 */
+/* gray levels, you have to use @FT_Outline_Render directly. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Get_Bitmap( FT_Library library,
+ FT_Outline* outline,
+ const FT_Bitmap *abitmap );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Outline_Render */
+/* */
+/* <Description> */
+/* Render an outline within a bitmap using the current scan-convert. */
+/* This function uses an @FT_Raster_Params structure as an argument, */
+/* allowing advanced features like direct composition, translucency, */
+/* etc. */
+/* */
+/* <Input> */
+/* library :: A handle to a FreeType library object. */
+/* */
+/* outline :: A pointer to the source outline descriptor. */
+/* */
+/* <InOut> */
+/* params :: A pointer to an @FT_Raster_Params structure used to */
+/* describe the rendering operation. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* You should know what you are doing and how @FT_Raster_Params works */
+/* to use this function. */
+/* */
+/* The field `params.source' will be set to `outline' before the scan */
+/* converter is called, which means that the value you give to it is */
+/* actually ignored. */
+/* */
+/* The gray-level rasterizer always uses 256 gray levels. If you */
+/* want less gray levels, you have to provide your own span callback. */
+/* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */
+/* @FT_Raster_Params structure for more details. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Outline_Render( FT_Library library,
+ FT_Outline* outline,
+ FT_Raster_Params* params );
+
+
+/**************************************************************************
+ *
+ * @enum:
+ * FT_Orientation
+ *
+ * @description:
+ * A list of values used to describe an outline's contour orientation.
+ *
+ * The TrueType and PostScript specifications use different conventions
+ * to determine whether outline contours should be filled or unfilled.
+ *
+ * @values:
+ * FT_ORIENTATION_TRUETYPE ::
+ * According to the TrueType specification, clockwise contours must
+ * be filled, and counter-clockwise ones must be unfilled.
+ *
+ * FT_ORIENTATION_POSTSCRIPT ::
+ * According to the PostScript specification, counter-clockwise contours
+ * must be filled, and clockwise ones must be unfilled.
+ *
+ * FT_ORIENTATION_FILL_RIGHT ::
+ * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
+ * remember that in TrueType, everything that is to the right of
+ * the drawing direction of a contour must be filled.
+ *
+ * FT_ORIENTATION_FILL_LEFT ::
+ * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
+ * remember that in PostScript, everything that is to the left of
+ * the drawing direction of a contour must be filled.
+ *
+ * FT_ORIENTATION_NONE ::
+ * The orientation cannot be determined. That is, different parts of
+ * the glyph have different orientation.
+ *
+ */
+typedef enum FT_Orientation_ {
FT_ORIENTATION_TRUETYPE = 0,
FT_ORIENTATION_POSTSCRIPT = 1,
FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT,
FT_ORIENTATION_NONE
- } FT_Orientation;
-
-
- /**************************************************************************
- *
- * @function:
- * FT_Outline_Get_Orientation
- *
- * @description:
- * This function analyzes a glyph outline and tries to compute its
- * fill orientation (see @FT_Orientation). This is done by computing
- * the direction of each global horizontal and/or vertical extrema
- * within the outline.
- *
- * Note that this will return @FT_ORIENTATION_TRUETYPE for empty
- * outlines.
- *
- * @input:
- * outline ::
- * A handle to the source outline.
- *
- * @return:
- * The orientation.
- *
- */
- FT_EXPORT( FT_Orientation )
- FT_Outline_Get_Orientation( FT_Outline* outline );
-
-
- /* */
+} FT_Orientation;
+
+
+/**************************************************************************
+ *
+ * @function:
+ * FT_Outline_Get_Orientation
+ *
+ * @description:
+ * This function analyzes a glyph outline and tries to compute its
+ * fill orientation (see @FT_Orientation). This is done by computing
+ * the direction of each global horizontal and/or vertical extrema
+ * within the outline.
+ *
+ * Note that this will return @FT_ORIENTATION_TRUETYPE for empty
+ * outlines.
+ *
+ * @input:
+ * outline ::
+ * A handle to the source outline.
+ *
+ * @return:
+ * The orientation.
+ *
+ */
+FT_EXPORT( FT_Orientation )
+FT_Outline_Get_Orientation( FT_Outline* outline );
+
+
+/* */
FT_END_HEADER
OpenPOWER on IntegriCloud