summaryrefslogtreecommitdiffstats
path: root/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h')
-rwxr-xr-xthirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h1084
1 files changed, 540 insertions, 544 deletions
diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h
index 31dc331..34c0525 100755
--- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h
+++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftglyph.h
@@ -16,17 +16,17 @@
/***************************************************************************/
- /*************************************************************************/
- /* */
- /* This file contains the definition of several convenience functions */
- /* that can be used by client applications to easily retrieve glyph */
- /* bitmaps and outlines from a given face. */
- /* */
- /* These functions should be optional if you are writing a font server */
- /* or text layout engine on top of FreeType. However, they are pretty */
- /* handy for many other simple uses of the library. */
- /* */
- /*************************************************************************/
+/*************************************************************************/
+/* */
+/* This file contains the definition of several convenience functions */
+/* that can be used by client applications to easily retrieve glyph */
+/* bitmaps and outlines from a given face. */
+/* */
+/* These functions should be optional if you are writing a font server */
+/* or text layout engine on top of FreeType. However, they are pretty */
+/* handy for many other simple uses of the library. */
+/* */
+/*************************************************************************/
#ifndef __FTGLYPH_H__
@@ -46,301 +46,297 @@
FT_BEGIN_HEADER
- /*************************************************************************/
- /* */
- /* <Section> */
- /* glyph_management */
- /* */
- /* <Title> */
- /* Glyph Management */
- /* */
- /* <Abstract> */
- /* Generic interface to manage individual glyph data. */
- /* */
- /* <Description> */
- /* This section contains definitions used to manage glyph data */
- /* through generic FT_Glyph objects. Each of them can contain a */
- /* bitmap, a vector outline, or even images in other formats. */
- /* */
- /*************************************************************************/
-
-
- /* forward declaration to a private type */
- typedef struct FT_Glyph_Class_ FT_Glyph_Class;
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_Glyph */
- /* */
- /* <Description> */
- /* Handle to an object used to model generic glyph images. It is a */
- /* pointer to the @FT_GlyphRec structure and can contain a glyph */
- /* bitmap or pointer. */
- /* */
- /* <Note> */
- /* Glyph objects are not owned by the library. You must thus release */
- /* them manually (through @FT_Done_Glyph) _before_ calling */
- /* @FT_Done_FreeType. */
- /* */
- typedef struct FT_GlyphRec_* FT_Glyph;
-
-
- /*************************************************************************/
- /* */
- /* <Struct> */
- /* FT_GlyphRec */
- /* */
- /* <Description> */
- /* The root glyph structure contains a given glyph image plus its */
- /* advance width in 16.16 fixed-point format. */
- /* */
- /* <Fields> */
- /* library :: A handle to the FreeType library object. */
- /* */
- /* clazz :: A pointer to the glyph's class. Private. */
- /* */
- /* format :: The format of the glyph's image. */
- /* */
- /* advance :: A 16.16 vector that gives the glyph's advance width. */
- /* */
- typedef struct FT_GlyphRec_
- {
+/*************************************************************************/
+/* */
+/* <Section> */
+/* glyph_management */
+/* */
+/* <Title> */
+/* Glyph Management */
+/* */
+/* <Abstract> */
+/* Generic interface to manage individual glyph data. */
+/* */
+/* <Description> */
+/* This section contains definitions used to manage glyph data */
+/* through generic FT_Glyph objects. Each of them can contain a */
+/* bitmap, a vector outline, or even images in other formats. */
+/* */
+/*************************************************************************/
+
+
+/* forward declaration to a private type */
+typedef struct FT_Glyph_Class_ FT_Glyph_Class;
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FT_Glyph */
+/* */
+/* <Description> */
+/* Handle to an object used to model generic glyph images. It is a */
+/* pointer to the @FT_GlyphRec structure and can contain a glyph */
+/* bitmap or pointer. */
+/* */
+/* <Note> */
+/* Glyph objects are not owned by the library. You must thus release */
+/* them manually (through @FT_Done_Glyph) _before_ calling */
+/* @FT_Done_FreeType. */
+/* */
+typedef struct FT_GlyphRec_* FT_Glyph;
+
+
+/*************************************************************************/
+/* */
+/* <Struct> */
+/* FT_GlyphRec */
+/* */
+/* <Description> */
+/* The root glyph structure contains a given glyph image plus its */
+/* advance width in 16.16 fixed-point format. */
+/* */
+/* <Fields> */
+/* library :: A handle to the FreeType library object. */
+/* */
+/* clazz :: A pointer to the glyph's class. Private. */
+/* */
+/* format :: The format of the glyph's image. */
+/* */
+/* advance :: A 16.16 vector that gives the glyph's advance width. */
+/* */
+typedef struct FT_GlyphRec_ {
FT_Library library;
const FT_Glyph_Class* clazz;
FT_Glyph_Format format;
FT_Vector advance;
- } FT_GlyphRec;
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_BitmapGlyph */
- /* */
- /* <Description> */
- /* A handle to an object used to model a bitmap glyph image. This is */
- /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */
- /* */
- typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
-
-
- /*************************************************************************/
- /* */
- /* <Struct> */
- /* FT_BitmapGlyphRec */
- /* */
- /* <Description> */
- /* A structure used for bitmap glyph images. This really is a */
- /* `sub-class' of @FT_GlyphRec. */
- /* */
- /* <Fields> */
- /* root :: The root @FT_Glyph fields. */
- /* */
- /* left :: The left-side bearing, i.e., the horizontal distance */
- /* from the current pen position to the left border of the */
- /* glyph bitmap. */
- /* */
- /* top :: The top-side bearing, i.e., the vertical distance from */
- /* the current pen position to the top border of the glyph */
- /* bitmap. This distance is positive for upwards~y! */
- /* */
- /* bitmap :: A descriptor for the bitmap. */
- /* */
- /* <Note> */
- /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */
- /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */
- /* the bitmap's contents easily. */
- /* */
- /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */
- /* and is thus created and destroyed with it. */
- /* */
- typedef struct FT_BitmapGlyphRec_
- {
+} FT_GlyphRec;
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FT_BitmapGlyph */
+/* */
+/* <Description> */
+/* A handle to an object used to model a bitmap glyph image. This is */
+/* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */
+/* */
+typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
+
+
+/*************************************************************************/
+/* */
+/* <Struct> */
+/* FT_BitmapGlyphRec */
+/* */
+/* <Description> */
+/* A structure used for bitmap glyph images. This really is a */
+/* `sub-class' of @FT_GlyphRec. */
+/* */
+/* <Fields> */
+/* root :: The root @FT_Glyph fields. */
+/* */
+/* left :: The left-side bearing, i.e., the horizontal distance */
+/* from the current pen position to the left border of the */
+/* glyph bitmap. */
+/* */
+/* top :: The top-side bearing, i.e., the vertical distance from */
+/* the current pen position to the top border of the glyph */
+/* bitmap. This distance is positive for upwards~y! */
+/* */
+/* bitmap :: A descriptor for the bitmap. */
+/* */
+/* <Note> */
+/* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */
+/* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */
+/* the bitmap's contents easily. */
+/* */
+/* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */
+/* and is thus created and destroyed with it. */
+/* */
+typedef struct FT_BitmapGlyphRec_ {
FT_GlyphRec root;
FT_Int left;
FT_Int top;
FT_Bitmap bitmap;
- } FT_BitmapGlyphRec;
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FT_OutlineGlyph */
- /* */
- /* <Description> */
- /* A handle to an object used to model an outline glyph image. This */
- /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
- /* */
- typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
-
-
- /*************************************************************************/
- /* */
- /* <Struct> */
- /* FT_OutlineGlyphRec */
- /* */
- /* <Description> */
- /* A structure used for outline (vectorial) glyph images. This */
- /* really is a `sub-class' of @FT_GlyphRec. */
- /* */
- /* <Fields> */
- /* root :: The root @FT_Glyph fields. */
- /* */
- /* outline :: A descriptor for the outline. */
- /* */
- /* <Note> */
- /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */
- /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */
- /* the outline's content easily. */
- /* */
- /* As the outline is extracted from a glyph slot, its coordinates are */
- /* expressed normally in 26.6 pixels, unless the flag */
- /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
- /* */
- /* The outline's tables are always owned by the object and are */
- /* destroyed with it. */
- /* */
- typedef struct FT_OutlineGlyphRec_
- {
+} FT_BitmapGlyphRec;
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FT_OutlineGlyph */
+/* */
+/* <Description> */
+/* A handle to an object used to model an outline glyph image. This */
+/* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
+/* */
+typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
+
+
+/*************************************************************************/
+/* */
+/* <Struct> */
+/* FT_OutlineGlyphRec */
+/* */
+/* <Description> */
+/* A structure used for outline (vectorial) glyph images. This */
+/* really is a `sub-class' of @FT_GlyphRec. */
+/* */
+/* <Fields> */
+/* root :: The root @FT_Glyph fields. */
+/* */
+/* outline :: A descriptor for the outline. */
+/* */
+/* <Note> */
+/* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */
+/* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */
+/* the outline's content easily. */
+/* */
+/* As the outline is extracted from a glyph slot, its coordinates are */
+/* expressed normally in 26.6 pixels, unless the flag */
+/* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
+/* */
+/* The outline's tables are always owned by the object and are */
+/* destroyed with it. */
+/* */
+typedef struct FT_OutlineGlyphRec_ {
FT_GlyphRec root;
FT_Outline outline;
- } FT_OutlineGlyphRec;
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Get_Glyph */
- /* */
- /* <Description> */
- /* A function used to extract a glyph image from a slot. Note that */
- /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */
- /* */
- /* <Input> */
- /* slot :: A handle to the source glyph slot. */
- /* */
- /* <Output> */
- /* aglyph :: A handle to the glyph object. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Get_Glyph( FT_GlyphSlot slot,
- FT_Glyph *aglyph );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Glyph_Copy */
- /* */
- /* <Description> */
- /* A function used to copy a glyph image. Note that the created */
- /* @FT_Glyph object must be released with @FT_Done_Glyph. */
- /* */
- /* <Input> */
- /* source :: A handle to the source glyph object. */
- /* */
- /* <Output> */
- /* target :: A handle to the target glyph object. 0~in case of */
- /* error. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Glyph_Copy( FT_Glyph source,
- FT_Glyph *target );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Glyph_Transform */
- /* */
- /* <Description> */
- /* Transform a glyph image if its format is scalable. */
- /* */
- /* <InOut> */
- /* glyph :: A handle to the target glyph object. */
- /* */
- /* <Input> */
- /* matrix :: A pointer to a 2x2 matrix to apply. */
- /* */
- /* delta :: A pointer to a 2d vector to apply. Coordinates are */
- /* expressed in 1/64th of a pixel. */
- /* */
- /* <Return> */
- /* FreeType error code (if not 0, the glyph format is not scalable). */
- /* */
- /* <Note> */
- /* The 2x2 transformation matrix is also applied to the glyph's */
- /* advance vector. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Glyph_Transform( FT_Glyph glyph,
- FT_Matrix* matrix,
- FT_Vector* delta );
-
-
- /*************************************************************************/
- /* */
- /* <Enum> */
- /* FT_Glyph_BBox_Mode */
- /* */
- /* <Description> */
- /* The mode how the values of @FT_Glyph_Get_CBox are returned. */
- /* */
- /* <Values> */
- /* FT_GLYPH_BBOX_UNSCALED :: */
- /* Return unscaled font units. */
- /* */
- /* FT_GLYPH_BBOX_SUBPIXELS :: */
- /* Return unfitted 26.6 coordinates. */
- /* */
- /* FT_GLYPH_BBOX_GRIDFIT :: */
- /* Return grid-fitted 26.6 coordinates. */
- /* */
- /* FT_GLYPH_BBOX_TRUNCATE :: */
- /* Return coordinates in integer pixels. */
- /* */
- /* FT_GLYPH_BBOX_PIXELS :: */
- /* Return grid-fitted pixel coordinates. */
- /* */
- typedef enum FT_Glyph_BBox_Mode_
- {
+} FT_OutlineGlyphRec;
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Get_Glyph */
+/* */
+/* <Description> */
+/* A function used to extract a glyph image from a slot. Note that */
+/* the created @FT_Glyph object must be released with @FT_Done_Glyph. */
+/* */
+/* <Input> */
+/* slot :: A handle to the source glyph slot. */
+/* */
+/* <Output> */
+/* aglyph :: A handle to the glyph object. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Get_Glyph( FT_GlyphSlot slot,
+ FT_Glyph *aglyph );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Glyph_Copy */
+/* */
+/* <Description> */
+/* A function used to copy a glyph image. Note that the created */
+/* @FT_Glyph object must be released with @FT_Done_Glyph. */
+/* */
+/* <Input> */
+/* source :: A handle to the source glyph object. */
+/* */
+/* <Output> */
+/* target :: A handle to the target glyph object. 0~in case of */
+/* error. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Glyph_Copy( FT_Glyph source,
+ FT_Glyph *target );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Glyph_Transform */
+/* */
+/* <Description> */
+/* Transform a glyph image if its format is scalable. */
+/* */
+/* <InOut> */
+/* glyph :: A handle to the target glyph object. */
+/* */
+/* <Input> */
+/* matrix :: A pointer to a 2x2 matrix to apply. */
+/* */
+/* delta :: A pointer to a 2d vector to apply. Coordinates are */
+/* expressed in 1/64th of a pixel. */
+/* */
+/* <Return> */
+/* FreeType error code (if not 0, the glyph format is not scalable). */
+/* */
+/* <Note> */
+/* The 2x2 transformation matrix is also applied to the glyph's */
+/* advance vector. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Glyph_Transform( FT_Glyph glyph,
+ FT_Matrix* matrix,
+ FT_Vector* delta );
+
+
+/*************************************************************************/
+/* */
+/* <Enum> */
+/* FT_Glyph_BBox_Mode */
+/* */
+/* <Description> */
+/* The mode how the values of @FT_Glyph_Get_CBox are returned. */
+/* */
+/* <Values> */
+/* FT_GLYPH_BBOX_UNSCALED :: */
+/* Return unscaled font units. */
+/* */
+/* FT_GLYPH_BBOX_SUBPIXELS :: */
+/* Return unfitted 26.6 coordinates. */
+/* */
+/* FT_GLYPH_BBOX_GRIDFIT :: */
+/* Return grid-fitted 26.6 coordinates. */
+/* */
+/* FT_GLYPH_BBOX_TRUNCATE :: */
+/* Return coordinates in integer pixels. */
+/* */
+/* FT_GLYPH_BBOX_PIXELS :: */
+/* Return grid-fitted pixel coordinates. */
+/* */
+typedef enum FT_Glyph_BBox_Mode_ {
FT_GLYPH_BBOX_UNSCALED = 0,
FT_GLYPH_BBOX_SUBPIXELS = 0,
FT_GLYPH_BBOX_GRIDFIT = 1,
FT_GLYPH_BBOX_TRUNCATE = 2,
FT_GLYPH_BBOX_PIXELS = 3
- } FT_Glyph_BBox_Mode;
-
-
- /*************************************************************************/
- /* */
- /* <Enum> */
- /* ft_glyph_bbox_xxx */
- /* */
- /* <Description> */
- /* These constants are deprecated. Use the corresponding */
- /* @FT_Glyph_BBox_Mode values instead. */
- /* */
- /* <Values> */
- /* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */
- /* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */
- /* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */
- /* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */
- /* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */
- /* */
+} FT_Glyph_BBox_Mode;
+
+
+/*************************************************************************/
+/* */
+/* <Enum> */
+/* ft_glyph_bbox_xxx */
+/* */
+/* <Description> */
+/* These constants are deprecated. Use the corresponding */
+/* @FT_Glyph_BBox_Mode values instead. */
+/* */
+/* <Values> */
+/* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */
+/* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */
+/* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */
+/* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */
+/* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */
+/* */
#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED
#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS
#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT
@@ -348,263 +344,263 @@ FT_BEGIN_HEADER
#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Glyph_Get_CBox */
- /* */
- /* <Description> */
- /* Return a glyph'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> */
- /* glyph :: A handle to the source glyph object. */
- /* */
- /* mode :: The mode which indicates how to interpret the returned */
- /* bounding box values. */
- /* */
- /* <Output> */
- /* acbox :: The glyph coordinate bounding box. Coordinates are */
- /* expressed in 1/64th of pixels if it is grid-fitted. */
- /* */
- /* <Note> */
- /* Coordinates are relative to the glyph origin, using the y~upwards */
- /* convention. */
- /* */
- /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */
- /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */
- /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */
- /* is another name for this constant. */
- /* */
- /* If the font is tricky and the glyph has been loaded with */
- /* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */
- /* reasonable values for the CBox it is necessary to load the glyph */
- /* at a large ppem value (so that the hinting instructions can */
- /* properly shift and scale the subglyphs), then extracting the CBox */
- /* which can be eventually converted back to font units. */
- /* */
- /* Note that the maximum coordinates are exclusive, which means that */
- /* one can compute the width and height of the glyph image (be it in */
- /* integer or 26.6 pixels) as: */
- /* */
- /* { */
- /* width = bbox.xMax - bbox.xMin; */
- /* height = bbox.yMax - bbox.yMin; */
- /* } */
- /* */
- /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */
- /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */
- /* which corresponds to: */
- /* */
- /* { */
- /* bbox.xMin = FLOOR(bbox.xMin); */
- /* bbox.yMin = FLOOR(bbox.yMin); */
- /* bbox.xMax = CEILING(bbox.xMax); */
- /* bbox.yMax = CEILING(bbox.yMax); */
- /* } */
- /* */
- /* To get the bbox in pixel coordinates, set `bbox_mode' to */
- /* @FT_GLYPH_BBOX_TRUNCATE. */
- /* */
- /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */
- /* to @FT_GLYPH_BBOX_PIXELS. */
- /* */
- FT_EXPORT( void )
- FT_Glyph_Get_CBox( FT_Glyph glyph,
- FT_UInt bbox_mode,
- FT_BBox *acbox );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Glyph_To_Bitmap */
- /* */
- /* <Description> */
- /* Convert a given glyph object to a bitmap glyph object. */
- /* */
- /* <InOut> */
- /* the_glyph :: A pointer to a handle to the target glyph. */
- /* */
- /* <Input> */
- /* render_mode :: An enumeration that describes how the data is */
- /* rendered. */
- /* */
- /* origin :: A pointer to a vector used to translate the glyph */
- /* image before rendering. Can be~0 (if no */
- /* translation). The origin is expressed in */
- /* 26.6 pixels. */
- /* */
- /* destroy :: A boolean that indicates that the original glyph */
- /* image should be destroyed by this function. It is */
- /* never destroyed in case of error. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* This function does nothing if the glyph format isn't scalable. */
- /* */
- /* The glyph image is translated with the `origin' vector before */
- /* rendering. */
- /* */
- /* The first parameter is a pointer to an @FT_Glyph handle, that will */
- /* be _replaced_ by this function (with newly allocated data). */
- /* Typically, you would use (omitting error handling): */
- /* */
- /* */
- /* { */
- /* FT_Glyph glyph; */
- /* FT_BitmapGlyph glyph_bitmap; */
- /* */
- /* */
- /* // load glyph */
- /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */
- /* */
- /* // extract glyph image */
- /* error = FT_Get_Glyph( face->glyph, &glyph ); */
- /* */
- /* // convert to a bitmap (default render mode + destroying old) */
- /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
- /* { */
- /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */
- /* 0, 1 ); */
- /* if ( error ) // `glyph' unchanged */
- /* ... */
- /* } */
- /* */
- /* // access bitmap content by typecasting */
- /* glyph_bitmap = (FT_BitmapGlyph)glyph; */
- /* */
- /* // do funny stuff with it, like blitting/drawing */
- /* ... */
- /* */
- /* // discard glyph image (bitmap or not) */
- /* FT_Done_Glyph( glyph ); */
- /* } */
- /* */
- /* */
- /* Here another example, again without error handling: */
- /* */
- /* */
- /* { */
- /* FT_Glyph glyphs[MAX_GLYPHS] */
- /* */
- /* */
- /* ... */
- /* */
- /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
- /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */
- /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */
- /* */
- /* ... */
- /* */
- /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
- /* { */
- /* FT_Glyph bitmap = glyphs[idx]; */
- /* */
- /* */
- /* ... */
- /* */
- /* // after this call, `bitmap' no longer points into */
- /* // the `glyphs' array (and the old value isn't destroyed) */
- /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */
- /* */
- /* ... */
- /* */
- /* FT_Done_Glyph( bitmap ); */
- /* } */
- /* */
- /* ... */
- /* */
- /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
- /* FT_Done_Glyph( glyphs[idx] ); */
- /* } */
- /* */
- FT_EXPORT( FT_Error )
- FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
- FT_Render_Mode render_mode,
- FT_Vector* origin,
- FT_Bool destroy );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Done_Glyph */
- /* */
- /* <Description> */
- /* Destroy a given glyph. */
- /* */
- /* <Input> */
- /* glyph :: A handle to the target glyph object. */
- /* */
- FT_EXPORT( void )
- FT_Done_Glyph( FT_Glyph glyph );
-
- /* */
-
-
- /* other helpful functions */
-
- /*************************************************************************/
- /* */
- /* <Section> */
- /* computations */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Matrix_Multiply */
- /* */
- /* <Description> */
- /* Perform the matrix operation `b = a*b'. */
- /* */
- /* <Input> */
- /* a :: A pointer to matrix `a'. */
- /* */
- /* <InOut> */
- /* b :: A pointer to matrix `b'. */
- /* */
- /* <Note> */
- /* The result is undefined if either `a' or `b' is zero. */
- /* */
- FT_EXPORT( void )
- FT_Matrix_Multiply( const FT_Matrix* a,
- FT_Matrix* b );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FT_Matrix_Invert */
- /* */
- /* <Description> */
- /* Invert a 2x2 matrix. Return an error if it can't be inverted. */
- /* */
- /* <InOut> */
- /* matrix :: A pointer to the target matrix. Remains untouched in */
- /* case of error. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FT_Matrix_Invert( FT_Matrix* matrix );
-
-
- /* */
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Glyph_Get_CBox */
+/* */
+/* <Description> */
+/* Return a glyph'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> */
+/* glyph :: A handle to the source glyph object. */
+/* */
+/* mode :: The mode which indicates how to interpret the returned */
+/* bounding box values. */
+/* */
+/* <Output> */
+/* acbox :: The glyph coordinate bounding box. Coordinates are */
+/* expressed in 1/64th of pixels if it is grid-fitted. */
+/* */
+/* <Note> */
+/* Coordinates are relative to the glyph origin, using the y~upwards */
+/* convention. */
+/* */
+/* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */
+/* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */
+/* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */
+/* is another name for this constant. */
+/* */
+/* If the font is tricky and the glyph has been loaded with */
+/* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */
+/* reasonable values for the CBox it is necessary to load the glyph */
+/* at a large ppem value (so that the hinting instructions can */
+/* properly shift and scale the subglyphs), then extracting the CBox */
+/* which can be eventually converted back to font units. */
+/* */
+/* Note that the maximum coordinates are exclusive, which means that */
+/* one can compute the width and height of the glyph image (be it in */
+/* integer or 26.6 pixels) as: */
+/* */
+/* { */
+/* width = bbox.xMax - bbox.xMin; */
+/* height = bbox.yMax - bbox.yMin; */
+/* } */
+/* */
+/* Note also that for 26.6 coordinates, if `bbox_mode' is set to */
+/* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */
+/* which corresponds to: */
+/* */
+/* { */
+/* bbox.xMin = FLOOR(bbox.xMin); */
+/* bbox.yMin = FLOOR(bbox.yMin); */
+/* bbox.xMax = CEILING(bbox.xMax); */
+/* bbox.yMax = CEILING(bbox.yMax); */
+/* } */
+/* */
+/* To get the bbox in pixel coordinates, set `bbox_mode' to */
+/* @FT_GLYPH_BBOX_TRUNCATE. */
+/* */
+/* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */
+/* to @FT_GLYPH_BBOX_PIXELS. */
+/* */
+FT_EXPORT( void )
+FT_Glyph_Get_CBox( FT_Glyph glyph,
+ FT_UInt bbox_mode,
+ FT_BBox *acbox );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Glyph_To_Bitmap */
+/* */
+/* <Description> */
+/* Convert a given glyph object to a bitmap glyph object. */
+/* */
+/* <InOut> */
+/* the_glyph :: A pointer to a handle to the target glyph. */
+/* */
+/* <Input> */
+/* render_mode :: An enumeration that describes how the data is */
+/* rendered. */
+/* */
+/* origin :: A pointer to a vector used to translate the glyph */
+/* image before rendering. Can be~0 (if no */
+/* translation). The origin is expressed in */
+/* 26.6 pixels. */
+/* */
+/* destroy :: A boolean that indicates that the original glyph */
+/* image should be destroyed by this function. It is */
+/* never destroyed in case of error. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* This function does nothing if the glyph format isn't scalable. */
+/* */
+/* The glyph image is translated with the `origin' vector before */
+/* rendering. */
+/* */
+/* The first parameter is a pointer to an @FT_Glyph handle, that will */
+/* be _replaced_ by this function (with newly allocated data). */
+/* Typically, you would use (omitting error handling): */
+/* */
+/* */
+/* { */
+/* FT_Glyph glyph; */
+/* FT_BitmapGlyph glyph_bitmap; */
+/* */
+/* */
+/* // load glyph */
+/* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */
+/* */
+/* // extract glyph image */
+/* error = FT_Get_Glyph( face->glyph, &glyph ); */
+/* */
+/* // convert to a bitmap (default render mode + destroying old) */
+/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
+/* { */
+/* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */
+/* 0, 1 ); */
+/* if ( error ) // `glyph' unchanged */
+/* ... */
+/* } */
+/* */
+/* // access bitmap content by typecasting */
+/* glyph_bitmap = (FT_BitmapGlyph)glyph; */
+/* */
+/* // do funny stuff with it, like blitting/drawing */
+/* ... */
+/* */
+/* // discard glyph image (bitmap or not) */
+/* FT_Done_Glyph( glyph ); */
+/* } */
+/* */
+/* */
+/* Here another example, again without error handling: */
+/* */
+/* */
+/* { */
+/* FT_Glyph glyphs[MAX_GLYPHS] */
+/* */
+/* */
+/* ... */
+/* */
+/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
+/* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */
+/* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */
+/* */
+/* ... */
+/* */
+/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
+/* { */
+/* FT_Glyph bitmap = glyphs[idx]; */
+/* */
+/* */
+/* ... */
+/* */
+/* // after this call, `bitmap' no longer points into */
+/* // the `glyphs' array (and the old value isn't destroyed) */
+/* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */
+/* */
+/* ... */
+/* */
+/* FT_Done_Glyph( bitmap ); */
+/* } */
+/* */
+/* ... */
+/* */
+/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
+/* FT_Done_Glyph( glyphs[idx] ); */
+/* } */
+/* */
+FT_EXPORT( FT_Error )
+FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
+ FT_Render_Mode render_mode,
+ FT_Vector* origin,
+ FT_Bool destroy );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Done_Glyph */
+/* */
+/* <Description> */
+/* Destroy a given glyph. */
+/* */
+/* <Input> */
+/* glyph :: A handle to the target glyph object. */
+/* */
+FT_EXPORT( void )
+FT_Done_Glyph( FT_Glyph glyph );
+
+/* */
+
+
+/* other helpful functions */
+
+/*************************************************************************/
+/* */
+/* <Section> */
+/* computations */
+/* */
+/*************************************************************************/
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Matrix_Multiply */
+/* */
+/* <Description> */
+/* Perform the matrix operation `b = a*b'. */
+/* */
+/* <Input> */
+/* a :: A pointer to matrix `a'. */
+/* */
+/* <InOut> */
+/* b :: A pointer to matrix `b'. */
+/* */
+/* <Note> */
+/* The result is undefined if either `a' or `b' is zero. */
+/* */
+FT_EXPORT( void )
+FT_Matrix_Multiply( const FT_Matrix* a,
+ FT_Matrix* b );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FT_Matrix_Invert */
+/* */
+/* <Description> */
+/* Invert a 2x2 matrix. Return an error if it can't be inverted. */
+/* */
+/* <InOut> */
+/* matrix :: A pointer to the target matrix. Remains untouched in */
+/* case of error. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FT_Matrix_Invert( FT_Matrix* matrix );
+
+
+/* */
FT_END_HEADER
OpenPOWER on IntegriCloud