summaryrefslogtreecommitdiffstats
path: root/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h')
-rwxr-xr-xthirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h2030
1 files changed, 1013 insertions, 1017 deletions
diff --git a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h
index 6af5306..7db591c 100755
--- a/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h
+++ b/thirdparties/common/include/libfreetype/freetype2/freetype/ftcache.h
@@ -27,196 +27,196 @@
FT_BEGIN_HEADER
- /*************************************************************************
- *
- * <Section>
- * cache_subsystem
- *
- * <Title>
- * Cache Sub-System
- *
- * <Abstract>
- * How to cache face, size, and glyph data with FreeType~2.
- *
- * <Description>
- * This section describes the FreeType~2 cache sub-system, which is used
- * to limit the number of concurrently opened @FT_Face and @FT_Size
- * objects, as well as caching information like character maps and glyph
- * images while limiting their maximum memory usage.
- *
- * Note that all types and functions begin with the `FTC_' prefix.
- *
- * The cache is highly portable and thus doesn't know anything about the
- * fonts installed on your system, or how to access them. This implies
- * the following scheme:
- *
- * First, available or installed font faces are uniquely identified by
- * @FTC_FaceID values, provided to the cache by the client. Note that
- * the cache only stores and compares these values, and doesn't try to
- * interpret them in any way.
- *
- * Second, the cache calls, only when needed, a client-provided function
- * to convert an @FTC_FaceID into a new @FT_Face object. The latter is
- * then completely managed by the cache, including its termination
- * through @FT_Done_Face. To monitor termination of face objects, the
- * finalizer callback in the `generic' field of the @FT_Face object can
- * be used, which might also be used to store the @FTC_FaceID of the
- * face.
- *
- * Clients are free to map face IDs to anything else. The most simple
- * usage is to associate them to a (pathname,face_index) pair that is
- * used to call @FT_New_Face. However, more complex schemes are also
- * possible.
- *
- * Note that for the cache to work correctly, the face ID values must be
- * *persistent*, which means that the contents they point to should not
- * change at runtime, or that their value should not become invalid.
- *
- * If this is unavoidable (e.g., when a font is uninstalled at runtime),
- * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let
- * the cache get rid of any references to the old @FTC_FaceID it may
- * keep internally. Failure to do so will lead to incorrect behaviour
- * or even crashes.
- *
- * To use the cache, start with calling @FTC_Manager_New to create a new
- * @FTC_Manager object, which models a single cache instance. You can
- * then look up @FT_Face and @FT_Size objects with
- * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively.
- *
- * If you want to use the charmap caching, call @FTC_CMapCache_New, then
- * later use @FTC_CMapCache_Lookup to perform the equivalent of
- * @FT_Get_Char_Index, only much faster.
- *
- * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then
- * later use @FTC_ImageCache_Lookup to retrieve the corresponding
- * @FT_Glyph objects from the cache.
- *
- * If you need lots of small bitmaps, it is much more memory efficient
- * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This
- * returns @FTC_SBitRec structures, which are used to store small
- * bitmaps directly. (A small bitmap is one whose metrics and
- * dimensions all fit into 8-bit integers).
- *
- * We hope to also provide a kerning cache in the near future.
- *
- *
- * <Order>
- * FTC_Manager
- * FTC_FaceID
- * FTC_Face_Requester
- *
- * FTC_Manager_New
- * FTC_Manager_Reset
- * FTC_Manager_Done
- * FTC_Manager_LookupFace
- * FTC_Manager_LookupSize
- * FTC_Manager_RemoveFaceID
- *
- * FTC_Node
- * FTC_Node_Unref
- *
- * FTC_ImageCache
- * FTC_ImageCache_New
- * FTC_ImageCache_Lookup
- *
- * FTC_SBit
- * FTC_SBitCache
- * FTC_SBitCache_New
- * FTC_SBitCache_Lookup
- *
- * FTC_CMapCache
- * FTC_CMapCache_New
- * FTC_CMapCache_Lookup
- *
- *************************************************************************/
-
-
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
- /***** *****/
- /***** BASIC TYPE DEFINITIONS *****/
- /***** *****/
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************
- *
- * @type: FTC_FaceID
- *
- * @description:
- * An opaque pointer type that is used to identity face objects. The
- * contents of such objects is application-dependent.
- *
- * These pointers are typically used to point to a user-defined
- * structure containing a font file path, and face index.
- *
- * @note:
- * Never use NULL as a valid @FTC_FaceID.
- *
- * Face IDs are passed by the client to the cache manager, which calls,
- * when needed, the @FTC_Face_Requester to translate them into new
- * @FT_Face objects.
- *
- * If the content of a given face ID changes at runtime, or if the value
- * becomes invalid (e.g., when uninstalling a font), you should
- * immediately call @FTC_Manager_RemoveFaceID before any other cache
- * function.
- *
- * Failure to do so will result in incorrect behaviour or even
- * memory leaks and crashes.
- */
- typedef FT_Pointer FTC_FaceID;
-
-
- /************************************************************************
- *
- * @functype:
- * FTC_Face_Requester
- *
- * @description:
- * A callback function provided by client applications. It is used by
- * the cache manager to translate a given @FTC_FaceID into a new valid
- * @FT_Face object, on demand.
- *
- * <Input>
- * face_id ::
- * The face ID to resolve.
- *
- * library ::
- * A handle to a FreeType library object.
- *
- * req_data ::
- * Application-provided request data (see note below).
- *
- * <Output>
- * aface ::
- * A new @FT_Face handle.
- *
- * <Return>
- * FreeType error code. 0~means success.
- *
- * <Note>
- * The third parameter `req_data' is the same as the one passed by the
- * client when @FTC_Manager_New is called.
- *
- * The face requester should not perform funny things on the returned
- * face object, like creating a new @FT_Size for it, or setting a
- * transformation through @FT_Set_Transform!
- */
- typedef FT_Error
- (*FTC_Face_Requester)( FTC_FaceID face_id,
- FT_Library library,
- FT_Pointer request_data,
- FT_Face* aface );
-
- /* */
+/*************************************************************************
+ *
+ * <Section>
+ * cache_subsystem
+ *
+ * <Title>
+ * Cache Sub-System
+ *
+ * <Abstract>
+ * How to cache face, size, and glyph data with FreeType~2.
+ *
+ * <Description>
+ * This section describes the FreeType~2 cache sub-system, which is used
+ * to limit the number of concurrently opened @FT_Face and @FT_Size
+ * objects, as well as caching information like character maps and glyph
+ * images while limiting their maximum memory usage.
+ *
+ * Note that all types and functions begin with the `FTC_' prefix.
+ *
+ * The cache is highly portable and thus doesn't know anything about the
+ * fonts installed on your system, or how to access them. This implies
+ * the following scheme:
+ *
+ * First, available or installed font faces are uniquely identified by
+ * @FTC_FaceID values, provided to the cache by the client. Note that
+ * the cache only stores and compares these values, and doesn't try to
+ * interpret them in any way.
+ *
+ * Second, the cache calls, only when needed, a client-provided function
+ * to convert an @FTC_FaceID into a new @FT_Face object. The latter is
+ * then completely managed by the cache, including its termination
+ * through @FT_Done_Face. To monitor termination of face objects, the
+ * finalizer callback in the `generic' field of the @FT_Face object can
+ * be used, which might also be used to store the @FTC_FaceID of the
+ * face.
+ *
+ * Clients are free to map face IDs to anything else. The most simple
+ * usage is to associate them to a (pathname,face_index) pair that is
+ * used to call @FT_New_Face. However, more complex schemes are also
+ * possible.
+ *
+ * Note that for the cache to work correctly, the face ID values must be
+ * *persistent*, which means that the contents they point to should not
+ * change at runtime, or that their value should not become invalid.
+ *
+ * If this is unavoidable (e.g., when a font is uninstalled at runtime),
+ * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let
+ * the cache get rid of any references to the old @FTC_FaceID it may
+ * keep internally. Failure to do so will lead to incorrect behaviour
+ * or even crashes.
+ *
+ * To use the cache, start with calling @FTC_Manager_New to create a new
+ * @FTC_Manager object, which models a single cache instance. You can
+ * then look up @FT_Face and @FT_Size objects with
+ * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively.
+ *
+ * If you want to use the charmap caching, call @FTC_CMapCache_New, then
+ * later use @FTC_CMapCache_Lookup to perform the equivalent of
+ * @FT_Get_Char_Index, only much faster.
+ *
+ * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then
+ * later use @FTC_ImageCache_Lookup to retrieve the corresponding
+ * @FT_Glyph objects from the cache.
+ *
+ * If you need lots of small bitmaps, it is much more memory efficient
+ * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This
+ * returns @FTC_SBitRec structures, which are used to store small
+ * bitmaps directly. (A small bitmap is one whose metrics and
+ * dimensions all fit into 8-bit integers).
+ *
+ * We hope to also provide a kerning cache in the near future.
+ *
+ *
+ * <Order>
+ * FTC_Manager
+ * FTC_FaceID
+ * FTC_Face_Requester
+ *
+ * FTC_Manager_New
+ * FTC_Manager_Reset
+ * FTC_Manager_Done
+ * FTC_Manager_LookupFace
+ * FTC_Manager_LookupSize
+ * FTC_Manager_RemoveFaceID
+ *
+ * FTC_Node
+ * FTC_Node_Unref
+ *
+ * FTC_ImageCache
+ * FTC_ImageCache_New
+ * FTC_ImageCache_Lookup
+ *
+ * FTC_SBit
+ * FTC_SBitCache
+ * FTC_SBitCache_New
+ * FTC_SBitCache_Lookup
+ *
+ * FTC_CMapCache
+ * FTC_CMapCache_New
+ * FTC_CMapCache_Lookup
+ *
+ *************************************************************************/
+
+
+/*************************************************************************/
+/*************************************************************************/
+/*************************************************************************/
+/***** *****/
+/***** BASIC TYPE DEFINITIONS *****/
+/***** *****/
+/*************************************************************************/
+/*************************************************************************/
+/*************************************************************************/
+
+
+/*************************************************************************
+ *
+ * @type: FTC_FaceID
+ *
+ * @description:
+ * An opaque pointer type that is used to identity face objects. The
+ * contents of such objects is application-dependent.
+ *
+ * These pointers are typically used to point to a user-defined
+ * structure containing a font file path, and face index.
+ *
+ * @note:
+ * Never use NULL as a valid @FTC_FaceID.
+ *
+ * Face IDs are passed by the client to the cache manager, which calls,
+ * when needed, the @FTC_Face_Requester to translate them into new
+ * @FT_Face objects.
+ *
+ * If the content of a given face ID changes at runtime, or if the value
+ * becomes invalid (e.g., when uninstalling a font), you should
+ * immediately call @FTC_Manager_RemoveFaceID before any other cache
+ * function.
+ *
+ * Failure to do so will result in incorrect behaviour or even
+ * memory leaks and crashes.
+ */
+typedef FT_Pointer FTC_FaceID;
+
+
+/************************************************************************
+ *
+ * @functype:
+ * FTC_Face_Requester
+ *
+ * @description:
+ * A callback function provided by client applications. It is used by
+ * the cache manager to translate a given @FTC_FaceID into a new valid
+ * @FT_Face object, on demand.
+ *
+ * <Input>
+ * face_id ::
+ * The face ID to resolve.
+ *
+ * library ::
+ * A handle to a FreeType library object.
+ *
+ * req_data ::
+ * Application-provided request data (see note below).
+ *
+ * <Output>
+ * aface ::
+ * A new @FT_Face handle.
+ *
+ * <Return>
+ * FreeType error code. 0~means success.
+ *
+ * <Note>
+ * The third parameter `req_data' is the same as the one passed by the
+ * client when @FTC_Manager_New is called.
+ *
+ * The face requester should not perform funny things on the returned
+ * face object, like creating a new @FT_Size for it, or setting a
+ * transformation through @FT_Set_Transform!
+ */
+typedef FT_Error
+(*FTC_Face_Requester)( FTC_FaceID face_id,
+ FT_Library library,
+ FT_Pointer request_data,
+ FT_Face* aface );
+
+/* */
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- /* these macros are incompatible with LLP64, should not be used */
+/* these macros are incompatible with LLP64, should not be used */
#define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) )
@@ -226,215 +226,214 @@ FT_BEGIN_HEADER
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
- /***** *****/
- /***** CACHE MANAGER OBJECT *****/
- /***** *****/
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FTC_Manager */
- /* */
- /* <Description> */
- /* This object corresponds to one instance of the cache-subsystem. */
- /* It is used to cache one or more @FT_Face objects, along with */
- /* corresponding @FT_Size objects. */
- /* */
- /* The manager intentionally limits the total number of opened */
- /* @FT_Face and @FT_Size objects to control memory usage. See the */
- /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */
- /* */
- /* The manager is also used to cache `nodes' of various types while */
- /* limiting their total memory usage. */
- /* */
- /* All limitations are enforced by keeping lists of managed objects */
- /* in most-recently-used order, and flushing old nodes to make room */
- /* for new ones. */
- /* */
- typedef struct FTC_ManagerRec_* FTC_Manager;
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FTC_Node */
- /* */
- /* <Description> */
- /* An opaque handle to a cache node object. Each cache node is */
- /* reference-counted. A node with a count of~0 might be flushed */
- /* out of a full cache whenever a lookup request is performed. */
- /* */
- /* If you look up nodes, you have the ability to `acquire' them, */
- /* i.e., to increment their reference count. This will prevent the */
- /* node from being flushed out of the cache until you explicitly */
- /* `release' it (see @FTC_Node_Unref). */
- /* */
- /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */
- /* */
- typedef struct FTC_NodeRec_* FTC_Node;
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_Manager_New */
- /* */
- /* <Description> */
- /* Create a new cache manager. */
- /* */
- /* <Input> */
- /* library :: The parent FreeType library handle to use. */
- /* */
- /* max_faces :: Maximum number of opened @FT_Face objects managed by */
- /* this cache instance. Use~0 for defaults. */
- /* */
- /* max_sizes :: Maximum number of opened @FT_Size objects managed by */
- /* this cache instance. Use~0 for defaults. */
- /* */
- /* max_bytes :: Maximum number of bytes to use for cached data nodes. */
- /* Use~0 for defaults. Note that this value does not */
- /* account for managed @FT_Face and @FT_Size objects. */
- /* */
- /* requester :: An application-provided callback used to translate */
- /* face IDs into real @FT_Face objects. */
- /* */
- /* req_data :: A generic pointer that is passed to the requester */
- /* each time it is called (see @FTC_Face_Requester). */
- /* */
- /* <Output> */
- /* amanager :: A handle to a new manager object. 0~in case of */
- /* failure. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FTC_Manager_New( FT_Library library,
- FT_UInt max_faces,
- FT_UInt max_sizes,
- FT_ULong max_bytes,
- FTC_Face_Requester requester,
- FT_Pointer req_data,
- FTC_Manager *amanager );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_Manager_Reset */
- /* */
- /* <Description> */
- /* Empty a given cache manager. This simply gets rid of all the */
- /* currently cached @FT_Face and @FT_Size objects within the manager. */
- /* */
- /* <InOut> */
- /* manager :: A handle to the manager. */
- /* */
- FT_EXPORT( void )
- FTC_Manager_Reset( FTC_Manager manager );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_Manager_Done */
- /* */
- /* <Description> */
- /* Destroy a given manager after emptying it. */
- /* */
- /* <Input> */
- /* manager :: A handle to the target cache manager object. */
- /* */
- FT_EXPORT( void )
- FTC_Manager_Done( FTC_Manager manager );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_Manager_LookupFace */
- /* */
- /* <Description> */
- /* Retrieve the @FT_Face object that corresponds to a given face ID */
- /* through a cache manager. */
- /* */
- /* <Input> */
- /* manager :: A handle to the cache manager. */
- /* */
- /* face_id :: The ID of the face object. */
- /* */
- /* <Output> */
- /* aface :: A handle to the face object. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The returned @FT_Face object is always owned by the manager. You */
- /* should never try to discard it yourself. */
- /* */
- /* The @FT_Face object doesn't necessarily have a current size object */
- /* (i.e., face->size can be 0). If you need a specific `font size', */
- /* use @FTC_Manager_LookupSize instead. */
- /* */
- /* Never change the face's transformation matrix (i.e., never call */
- /* the @FT_Set_Transform function) on a returned face! If you need */
- /* to transform glyphs, do it yourself after glyph loading. */
- /* */
- /* When you perform a lookup, out-of-memory errors are detected */
- /* _within_ the lookup and force incremental flushes of the cache */
- /* until enough memory is released for the lookup to succeed. */
- /* */
- /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */
- /* already been completely flushed, and still no memory was available */
- /* for the operation. */
- /* */
- FT_EXPORT( FT_Error )
- FTC_Manager_LookupFace( FTC_Manager manager,
- FTC_FaceID face_id,
- FT_Face *aface );
-
-
- /*************************************************************************/
- /* */
- /* <Struct> */
- /* FTC_ScalerRec */
- /* */
- /* <Description> */
- /* A structure used to describe a given character size in either */
- /* pixels or points to the cache manager. See */
- /* @FTC_Manager_LookupSize. */
- /* */
- /* <Fields> */
- /* face_id :: The source face ID. */
- /* */
- /* width :: The character width. */
- /* */
- /* height :: The character height. */
- /* */
- /* pixel :: A Boolean. If 1, the `width' and `height' fields are */
- /* interpreted as integer pixel character sizes. */
- /* Otherwise, they are expressed as 1/64th of points. */
- /* */
- /* x_res :: Only used when `pixel' is value~0 to indicate the */
- /* horizontal resolution in dpi. */
- /* */
- /* y_res :: Only used when `pixel' is value~0 to indicate the */
- /* vertical resolution in dpi. */
- /* */
- /* <Note> */
- /* This type is mainly used to retrieve @FT_Size objects through the */
- /* cache manager. */
- /* */
- typedef struct FTC_ScalerRec_
- {
+/*************************************************************************/
+/*************************************************************************/
+/*************************************************************************/
+/***** *****/
+/***** CACHE MANAGER OBJECT *****/
+/***** *****/
+/*************************************************************************/
+/*************************************************************************/
+/*************************************************************************/
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FTC_Manager */
+/* */
+/* <Description> */
+/* This object corresponds to one instance of the cache-subsystem. */
+/* It is used to cache one or more @FT_Face objects, along with */
+/* corresponding @FT_Size objects. */
+/* */
+/* The manager intentionally limits the total number of opened */
+/* @FT_Face and @FT_Size objects to control memory usage. See the */
+/* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */
+/* */
+/* The manager is also used to cache `nodes' of various types while */
+/* limiting their total memory usage. */
+/* */
+/* All limitations are enforced by keeping lists of managed objects */
+/* in most-recently-used order, and flushing old nodes to make room */
+/* for new ones. */
+/* */
+typedef struct FTC_ManagerRec_* FTC_Manager;
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FTC_Node */
+/* */
+/* <Description> */
+/* An opaque handle to a cache node object. Each cache node is */
+/* reference-counted. A node with a count of~0 might be flushed */
+/* out of a full cache whenever a lookup request is performed. */
+/* */
+/* If you look up nodes, you have the ability to `acquire' them, */
+/* i.e., to increment their reference count. This will prevent the */
+/* node from being flushed out of the cache until you explicitly */
+/* `release' it (see @FTC_Node_Unref). */
+/* */
+/* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */
+/* */
+typedef struct FTC_NodeRec_* FTC_Node;
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_Manager_New */
+/* */
+/* <Description> */
+/* Create a new cache manager. */
+/* */
+/* <Input> */
+/* library :: The parent FreeType library handle to use. */
+/* */
+/* max_faces :: Maximum number of opened @FT_Face objects managed by */
+/* this cache instance. Use~0 for defaults. */
+/* */
+/* max_sizes :: Maximum number of opened @FT_Size objects managed by */
+/* this cache instance. Use~0 for defaults. */
+/* */
+/* max_bytes :: Maximum number of bytes to use for cached data nodes. */
+/* Use~0 for defaults. Note that this value does not */
+/* account for managed @FT_Face and @FT_Size objects. */
+/* */
+/* requester :: An application-provided callback used to translate */
+/* face IDs into real @FT_Face objects. */
+/* */
+/* req_data :: A generic pointer that is passed to the requester */
+/* each time it is called (see @FTC_Face_Requester). */
+/* */
+/* <Output> */
+/* amanager :: A handle to a new manager object. 0~in case of */
+/* failure. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FTC_Manager_New( FT_Library library,
+ FT_UInt max_faces,
+ FT_UInt max_sizes,
+ FT_ULong max_bytes,
+ FTC_Face_Requester requester,
+ FT_Pointer req_data,
+ FTC_Manager *amanager );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_Manager_Reset */
+/* */
+/* <Description> */
+/* Empty a given cache manager. This simply gets rid of all the */
+/* currently cached @FT_Face and @FT_Size objects within the manager. */
+/* */
+/* <InOut> */
+/* manager :: A handle to the manager. */
+/* */
+FT_EXPORT( void )
+FTC_Manager_Reset( FTC_Manager manager );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_Manager_Done */
+/* */
+/* <Description> */
+/* Destroy a given manager after emptying it. */
+/* */
+/* <Input> */
+/* manager :: A handle to the target cache manager object. */
+/* */
+FT_EXPORT( void )
+FTC_Manager_Done( FTC_Manager manager );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_Manager_LookupFace */
+/* */
+/* <Description> */
+/* Retrieve the @FT_Face object that corresponds to a given face ID */
+/* through a cache manager. */
+/* */
+/* <Input> */
+/* manager :: A handle to the cache manager. */
+/* */
+/* face_id :: The ID of the face object. */
+/* */
+/* <Output> */
+/* aface :: A handle to the face object. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The returned @FT_Face object is always owned by the manager. You */
+/* should never try to discard it yourself. */
+/* */
+/* The @FT_Face object doesn't necessarily have a current size object */
+/* (i.e., face->size can be 0). If you need a specific `font size', */
+/* use @FTC_Manager_LookupSize instead. */
+/* */
+/* Never change the face's transformation matrix (i.e., never call */
+/* the @FT_Set_Transform function) on a returned face! If you need */
+/* to transform glyphs, do it yourself after glyph loading. */
+/* */
+/* When you perform a lookup, out-of-memory errors are detected */
+/* _within_ the lookup and force incremental flushes of the cache */
+/* until enough memory is released for the lookup to succeed. */
+/* */
+/* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */
+/* already been completely flushed, and still no memory was available */
+/* for the operation. */
+/* */
+FT_EXPORT( FT_Error )
+FTC_Manager_LookupFace( FTC_Manager manager,
+ FTC_FaceID face_id,
+ FT_Face *aface );
+
+
+/*************************************************************************/
+/* */
+/* <Struct> */
+/* FTC_ScalerRec */
+/* */
+/* <Description> */
+/* A structure used to describe a given character size in either */
+/* pixels or points to the cache manager. See */
+/* @FTC_Manager_LookupSize. */
+/* */
+/* <Fields> */
+/* face_id :: The source face ID. */
+/* */
+/* width :: The character width. */
+/* */
+/* height :: The character height. */
+/* */
+/* pixel :: A Boolean. If 1, the `width' and `height' fields are */
+/* interpreted as integer pixel character sizes. */
+/* Otherwise, they are expressed as 1/64th of points. */
+/* */
+/* x_res :: Only used when `pixel' is value~0 to indicate the */
+/* horizontal resolution in dpi. */
+/* */
+/* y_res :: Only used when `pixel' is value~0 to indicate the */
+/* vertical resolution in dpi. */
+/* */
+/* <Note> */
+/* This type is mainly used to retrieve @FT_Size objects through the */
+/* cache manager. */
+/* */
+typedef struct FTC_ScalerRec_ {
FTC_FaceID face_id;
FT_UInt width;
FT_UInt height;
@@ -442,262 +441,261 @@ FT_BEGIN_HEADER
FT_UInt x_res;
FT_UInt y_res;
- } FTC_ScalerRec;
-
-
- /*************************************************************************/
- /* */
- /* <Struct> */
- /* FTC_Scaler */
- /* */
- /* <Description> */
- /* A handle to an @FTC_ScalerRec structure. */
- /* */
- typedef struct FTC_ScalerRec_* FTC_Scaler;
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_Manager_LookupSize */
- /* */
- /* <Description> */
- /* Retrieve the @FT_Size object that corresponds to a given */
- /* @FTC_ScalerRec pointer through a cache manager. */
- /* */
- /* <Input> */
- /* manager :: A handle to the cache manager. */
- /* */
- /* scaler :: A scaler handle. */
- /* */
- /* <Output> */
- /* asize :: A handle to the size object. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The returned @FT_Size object is always owned by the manager. You */
- /* should never try to discard it by yourself. */
- /* */
- /* You can access the parent @FT_Face object simply as `size->face' */
- /* if you need it. Note that this object is also owned by the */
- /* manager. */
- /* */
- /* <Note> */
- /* When you perform a lookup, out-of-memory errors are detected */
- /* _within_ the lookup and force incremental flushes of the cache */
- /* until enough memory is released for the lookup to succeed. */
- /* */
- /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */
- /* already been completely flushed, and still no memory is available */
- /* for the operation. */
- /* */
- FT_EXPORT( FT_Error )
- FTC_Manager_LookupSize( FTC_Manager manager,
- FTC_Scaler scaler,
- FT_Size *asize );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_Node_Unref */
- /* */
- /* <Description> */
- /* Decrement a cache node's internal reference count. When the count */
- /* reaches 0, it is not destroyed but becomes eligible for subsequent */
- /* cache flushes. */
- /* */
- /* <Input> */
- /* node :: The cache node handle. */
- /* */
- /* manager :: The cache manager handle. */
- /* */
- FT_EXPORT( void )
- FTC_Node_Unref( FTC_Node node,
- FTC_Manager manager );
-
-
- /*************************************************************************
- *
- * @function:
- * FTC_Manager_RemoveFaceID
- *
- * @description:
- * A special function used to indicate to the cache manager that
- * a given @FTC_FaceID is no longer valid, either because its
- * content changed, or because it was deallocated or uninstalled.
- *
- * @input:
- * manager ::
- * The cache manager handle.
- *
- * face_id ::
- * The @FTC_FaceID to be removed.
- *
- * @note:
- * This function flushes all nodes from the cache corresponding to this
- * `face_id', with the exception of nodes with a non-null reference
- * count.
- *
- * Such nodes are however modified internally so as to never appear
- * in later lookups with the same `face_id' value, and to be immediately
- * destroyed when released by all their users.
- *
- */
- FT_EXPORT( void )
- FTC_Manager_RemoveFaceID( FTC_Manager manager,
- FTC_FaceID face_id );
-
-
- /*************************************************************************/
- /* */
- /* <Section> */
- /* cache_subsystem */
- /* */
- /*************************************************************************/
-
- /*************************************************************************
- *
- * @type:
- * FTC_CMapCache
- *
- * @description:
- * An opaque handle used to model a charmap cache. This cache is to
- * hold character codes -> glyph indices mappings.
- *
- */
- typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
-
-
- /*************************************************************************
- *
- * @function:
- * FTC_CMapCache_New
- *
- * @description:
- * Create a new charmap cache.
- *
- * @input:
- * manager ::
- * A handle to the cache manager.
- *
- * @output:
- * acache ::
- * A new cache handle. NULL in case of error.
- *
- * @return:
- * FreeType error code. 0~means success.
- *
- * @note:
- * Like all other caches, this one will be destroyed with the cache
- * manager.
- *
- */
- FT_EXPORT( FT_Error )
- FTC_CMapCache_New( FTC_Manager manager,
- FTC_CMapCache *acache );
-
-
- /************************************************************************
- *
- * @function:
- * FTC_CMapCache_Lookup
- *
- * @description:
- * Translate a character code into a glyph index, using the charmap
- * cache.
- *
- * @input:
- * cache ::
- * A charmap cache handle.
- *
- * face_id ::
- * The source face ID.
- *
- * cmap_index ::
- * The index of the charmap in the source face. Any negative value
- * means to use the cache @FT_Face's default charmap.
- *
- * char_code ::
- * The character code (in the corresponding charmap).
- *
- * @return:
- * Glyph index. 0~means `no glyph'.
- *
- */
- FT_EXPORT( FT_UInt )
- FTC_CMapCache_Lookup( FTC_CMapCache cache,
- FTC_FaceID face_id,
- FT_Int cmap_index,
- FT_UInt32 char_code );
-
-
- /*************************************************************************/
- /* */
- /* <Section> */
- /* cache_subsystem */
- /* */
- /*************************************************************************/
-
-
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
- /***** *****/
- /***** IMAGE CACHE OBJECT *****/
- /***** *****/
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
-
-
- /*************************************************************************
- *
- * @struct:
- * FTC_ImageTypeRec
- *
- * @description:
- * A structure used to model the type of images in a glyph cache.
- *
- * @fields:
- * face_id ::
- * The face ID.
- *
- * width ::
- * The width in pixels.
- *
- * height ::
- * The height in pixels.
- *
- * flags ::
- * The load flags, as in @FT_Load_Glyph.
- *
- */
- typedef struct FTC_ImageTypeRec_
- {
+} FTC_ScalerRec;
+
+
+/*************************************************************************/
+/* */
+/* <Struct> */
+/* FTC_Scaler */
+/* */
+/* <Description> */
+/* A handle to an @FTC_ScalerRec structure. */
+/* */
+typedef struct FTC_ScalerRec_* FTC_Scaler;
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_Manager_LookupSize */
+/* */
+/* <Description> */
+/* Retrieve the @FT_Size object that corresponds to a given */
+/* @FTC_ScalerRec pointer through a cache manager. */
+/* */
+/* <Input> */
+/* manager :: A handle to the cache manager. */
+/* */
+/* scaler :: A scaler handle. */
+/* */
+/* <Output> */
+/* asize :: A handle to the size object. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The returned @FT_Size object is always owned by the manager. You */
+/* should never try to discard it by yourself. */
+/* */
+/* You can access the parent @FT_Face object simply as `size->face' */
+/* if you need it. Note that this object is also owned by the */
+/* manager. */
+/* */
+/* <Note> */
+/* When you perform a lookup, out-of-memory errors are detected */
+/* _within_ the lookup and force incremental flushes of the cache */
+/* until enough memory is released for the lookup to succeed. */
+/* */
+/* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */
+/* already been completely flushed, and still no memory is available */
+/* for the operation. */
+/* */
+FT_EXPORT( FT_Error )
+FTC_Manager_LookupSize( FTC_Manager manager,
+ FTC_Scaler scaler,
+ FT_Size *asize );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_Node_Unref */
+/* */
+/* <Description> */
+/* Decrement a cache node's internal reference count. When the count */
+/* reaches 0, it is not destroyed but becomes eligible for subsequent */
+/* cache flushes. */
+/* */
+/* <Input> */
+/* node :: The cache node handle. */
+/* */
+/* manager :: The cache manager handle. */
+/* */
+FT_EXPORT( void )
+FTC_Node_Unref( FTC_Node node,
+ FTC_Manager manager );
+
+
+/*************************************************************************
+ *
+ * @function:
+ * FTC_Manager_RemoveFaceID
+ *
+ * @description:
+ * A special function used to indicate to the cache manager that
+ * a given @FTC_FaceID is no longer valid, either because its
+ * content changed, or because it was deallocated or uninstalled.
+ *
+ * @input:
+ * manager ::
+ * The cache manager handle.
+ *
+ * face_id ::
+ * The @FTC_FaceID to be removed.
+ *
+ * @note:
+ * This function flushes all nodes from the cache corresponding to this
+ * `face_id', with the exception of nodes with a non-null reference
+ * count.
+ *
+ * Such nodes are however modified internally so as to never appear
+ * in later lookups with the same `face_id' value, and to be immediately
+ * destroyed when released by all their users.
+ *
+ */
+FT_EXPORT( void )
+FTC_Manager_RemoveFaceID( FTC_Manager manager,
+ FTC_FaceID face_id );
+
+
+/*************************************************************************/
+/* */
+/* <Section> */
+/* cache_subsystem */
+/* */
+/*************************************************************************/
+
+/*************************************************************************
+ *
+ * @type:
+ * FTC_CMapCache
+ *
+ * @description:
+ * An opaque handle used to model a charmap cache. This cache is to
+ * hold character codes -> glyph indices mappings.
+ *
+ */
+typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
+
+
+/*************************************************************************
+ *
+ * @function:
+ * FTC_CMapCache_New
+ *
+ * @description:
+ * Create a new charmap cache.
+ *
+ * @input:
+ * manager ::
+ * A handle to the cache manager.
+ *
+ * @output:
+ * acache ::
+ * A new cache handle. NULL in case of error.
+ *
+ * @return:
+ * FreeType error code. 0~means success.
+ *
+ * @note:
+ * Like all other caches, this one will be destroyed with the cache
+ * manager.
+ *
+ */
+FT_EXPORT( FT_Error )
+FTC_CMapCache_New( FTC_Manager manager,
+ FTC_CMapCache *acache );
+
+
+/************************************************************************
+ *
+ * @function:
+ * FTC_CMapCache_Lookup
+ *
+ * @description:
+ * Translate a character code into a glyph index, using the charmap
+ * cache.
+ *
+ * @input:
+ * cache ::
+ * A charmap cache handle.
+ *
+ * face_id ::
+ * The source face ID.
+ *
+ * cmap_index ::
+ * The index of the charmap in the source face. Any negative value
+ * means to use the cache @FT_Face's default charmap.
+ *
+ * char_code ::
+ * The character code (in the corresponding charmap).
+ *
+ * @return:
+ * Glyph index. 0~means `no glyph'.
+ *
+ */
+FT_EXPORT( FT_UInt )
+FTC_CMapCache_Lookup( FTC_CMapCache cache,
+ FTC_FaceID face_id,
+ FT_Int cmap_index,
+ FT_UInt32 char_code );
+
+
+/*************************************************************************/
+/* */
+/* <Section> */
+/* cache_subsystem */
+/* */
+/*************************************************************************/
+
+
+/*************************************************************************/
+/*************************************************************************/
+/*************************************************************************/
+/***** *****/
+/***** IMAGE CACHE OBJECT *****/
+/***** *****/
+/*************************************************************************/
+/*************************************************************************/
+/*************************************************************************/
+
+
+/*************************************************************************
+ *
+ * @struct:
+ * FTC_ImageTypeRec
+ *
+ * @description:
+ * A structure used to model the type of images in a glyph cache.
+ *
+ * @fields:
+ * face_id ::
+ * The face ID.
+ *
+ * width ::
+ * The width in pixels.
+ *
+ * height ::
+ * The height in pixels.
+ *
+ * flags ::
+ * The load flags, as in @FT_Load_Glyph.
+ *
+ */
+typedef struct FTC_ImageTypeRec_ {
FTC_FaceID face_id;
FT_Int width;
FT_Int height;
FT_Int32 flags;
- } FTC_ImageTypeRec;
+} FTC_ImageTypeRec;
- /*************************************************************************
- *
- * @type:
- * FTC_ImageType
- *
- * @description:
- * A handle to an @FTC_ImageTypeRec structure.
- *
- */
- typedef struct FTC_ImageTypeRec_* FTC_ImageType;
+/*************************************************************************
+ *
+ * @type:
+ * FTC_ImageType
+ *
+ * @description:
+ * A handle to an @FTC_ImageTypeRec structure.
+ *
+ */
+typedef struct FTC_ImageTypeRec_* FTC_ImageType;
- /* */
+/* */
#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \
@@ -707,7 +705,7 @@ FT_BEGIN_HEADER
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- /* this macro is incompatible with LLP64, should not be used */
+/* this macro is incompatible with LLP64, should not be used */
#define FTC_IMAGE_TYPE_HASH( d ) \
(FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \
@@ -717,197 +715,196 @@ FT_BEGIN_HEADER
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FTC_ImageCache */
- /* */
- /* <Description> */
- /* A handle to an glyph image cache object. They are designed to */
- /* hold many distinct glyph images while not exceeding a certain */
- /* memory threshold. */
- /* */
- typedef struct FTC_ImageCacheRec_* FTC_ImageCache;
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_ImageCache_New */
- /* */
- /* <Description> */
- /* Create a new glyph image cache. */
- /* */
- /* <Input> */
- /* manager :: The parent manager for the image cache. */
- /* */
- /* <Output> */
- /* acache :: A handle to the new glyph image cache object. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FTC_ImageCache_New( FTC_Manager manager,
- FTC_ImageCache *acache );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_ImageCache_Lookup */
- /* */
- /* <Description> */
- /* Retrieve a given glyph image from a glyph image cache. */
- /* */
- /* <Input> */
- /* cache :: A handle to the source glyph image cache. */
- /* */
- /* type :: A pointer to a glyph image type descriptor. */
- /* */
- /* gindex :: The glyph index to retrieve. */
- /* */
- /* <Output> */
- /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */
- /* failure. */
- /* */
- /* anode :: Used to return the address of of the corresponding cache */
- /* node after incrementing its reference count (see note */
- /* below). */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The returned glyph is owned and managed by the glyph image cache. */
- /* Never try to transform or discard it manually! You can however */
- /* create a copy with @FT_Glyph_Copy and modify the new one. */
- /* */
- /* If `anode' is _not_ NULL, it receives the address of the cache */
- /* node containing the glyph image, after increasing its reference */
- /* count. This ensures that the node (as well as the @FT_Glyph) will */
- /* always be kept in the cache until you call @FTC_Node_Unref to */
- /* `release' it. */
- /* */
- /* If `anode' is NULL, the cache node is left unchanged, which means */
- /* that the @FT_Glyph could be flushed out of the cache on the next */
- /* call to one of the caching sub-system APIs. Don't assume that it */
- /* is persistent! */
- /* */
- FT_EXPORT( FT_Error )
- FTC_ImageCache_Lookup( FTC_ImageCache cache,
- FTC_ImageType type,
- FT_UInt gindex,
- FT_Glyph *aglyph,
- FTC_Node *anode );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_ImageCache_LookupScaler */
- /* */
- /* <Description> */
- /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */
- /* to specify the face ID and its size. */
- /* */
- /* <Input> */
- /* cache :: A handle to the source glyph image cache. */
- /* */
- /* scaler :: A pointer to a scaler descriptor. */
- /* */
- /* load_flags :: The corresponding load flags. */
- /* */
- /* gindex :: The glyph index to retrieve. */
- /* */
- /* <Output> */
- /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */
- /* failure. */
- /* */
- /* anode :: Used to return the address of of the corresponding */
- /* cache node after incrementing its reference count */
- /* (see note below). */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The returned glyph is owned and managed by the glyph image cache. */
- /* Never try to transform or discard it manually! You can however */
- /* create a copy with @FT_Glyph_Copy and modify the new one. */
- /* */
- /* If `anode' is _not_ NULL, it receives the address of the cache */
- /* node containing the glyph image, after increasing its reference */
- /* count. This ensures that the node (as well as the @FT_Glyph) will */
- /* always be kept in the cache until you call @FTC_Node_Unref to */
- /* `release' it. */
- /* */
- /* If `anode' is NULL, the cache node is left unchanged, which means */
- /* that the @FT_Glyph could be flushed out of the cache on the next */
- /* call to one of the caching sub-system APIs. Don't assume that it */
- /* is persistent! */
- /* */
- /* Calls to @FT_Set_Char_Size and friends have no effect on cached */
- /* glyphs; you should always use the FreeType cache API instead. */
- /* */
- FT_EXPORT( FT_Error )
- FTC_ImageCache_LookupScaler( FTC_ImageCache cache,
- FTC_Scaler scaler,
- FT_ULong load_flags,
- FT_UInt gindex,
- FT_Glyph *aglyph,
- FTC_Node *anode );
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FTC_SBit */
- /* */
- /* <Description> */
- /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */
- /* structure for details. */
- /* */
- typedef struct FTC_SBitRec_* FTC_SBit;
-
-
- /*************************************************************************/
- /* */
- /* <Struct> */
- /* FTC_SBitRec */
- /* */
- /* <Description> */
- /* A very compact structure used to describe a small glyph bitmap. */
- /* */
- /* <Fields> */
- /* width :: The bitmap width in pixels. */
- /* */
- /* height :: The bitmap height in pixels. */
- /* */
- /* left :: The horizontal distance from the pen position to the */
- /* left bitmap border (a.k.a. `left side bearing', or */
- /* `lsb'). */
- /* */
- /* top :: The vertical distance from the pen position (on the */
- /* baseline) to the upper bitmap border (a.k.a. `top */
- /* side bearing'). The distance is positive for upwards */
- /* y~coordinates. */
- /* */
- /* format :: The format of the glyph bitmap (monochrome or gray). */
- /* */
- /* max_grays :: Maximum gray level value (in the range 1 to~255). */
- /* */
- /* pitch :: The number of bytes per bitmap line. May be positive */
- /* or negative. */
- /* */
- /* xadvance :: The horizontal advance width in pixels. */
- /* */
- /* yadvance :: The vertical advance height in pixels. */
- /* */
- /* buffer :: A pointer to the bitmap pixels. */
- /* */
- typedef struct FTC_SBitRec_
- {
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FTC_ImageCache */
+/* */
+/* <Description> */
+/* A handle to an glyph image cache object. They are designed to */
+/* hold many distinct glyph images while not exceeding a certain */
+/* memory threshold. */
+/* */
+typedef struct FTC_ImageCacheRec_* FTC_ImageCache;
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_ImageCache_New */
+/* */
+/* <Description> */
+/* Create a new glyph image cache. */
+/* */
+/* <Input> */
+/* manager :: The parent manager for the image cache. */
+/* */
+/* <Output> */
+/* acache :: A handle to the new glyph image cache object. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FTC_ImageCache_New( FTC_Manager manager,
+ FTC_ImageCache *acache );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_ImageCache_Lookup */
+/* */
+/* <Description> */
+/* Retrieve a given glyph image from a glyph image cache. */
+/* */
+/* <Input> */
+/* cache :: A handle to the source glyph image cache. */
+/* */
+/* type :: A pointer to a glyph image type descriptor. */
+/* */
+/* gindex :: The glyph index to retrieve. */
+/* */
+/* <Output> */
+/* aglyph :: The corresponding @FT_Glyph object. 0~in case of */
+/* failure. */
+/* */
+/* anode :: Used to return the address of of the corresponding cache */
+/* node after incrementing its reference count (see note */
+/* below). */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The returned glyph is owned and managed by the glyph image cache. */
+/* Never try to transform or discard it manually! You can however */
+/* create a copy with @FT_Glyph_Copy and modify the new one. */
+/* */
+/* If `anode' is _not_ NULL, it receives the address of the cache */
+/* node containing the glyph image, after increasing its reference */
+/* count. This ensures that the node (as well as the @FT_Glyph) will */
+/* always be kept in the cache until you call @FTC_Node_Unref to */
+/* `release' it. */
+/* */
+/* If `anode' is NULL, the cache node is left unchanged, which means */
+/* that the @FT_Glyph could be flushed out of the cache on the next */
+/* call to one of the caching sub-system APIs. Don't assume that it */
+/* is persistent! */
+/* */
+FT_EXPORT( FT_Error )
+FTC_ImageCache_Lookup( FTC_ImageCache cache,
+ FTC_ImageType type,
+ FT_UInt gindex,
+ FT_Glyph *aglyph,
+ FTC_Node *anode );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_ImageCache_LookupScaler */
+/* */
+/* <Description> */
+/* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */
+/* to specify the face ID and its size. */
+/* */
+/* <Input> */
+/* cache :: A handle to the source glyph image cache. */
+/* */
+/* scaler :: A pointer to a scaler descriptor. */
+/* */
+/* load_flags :: The corresponding load flags. */
+/* */
+/* gindex :: The glyph index to retrieve. */
+/* */
+/* <Output> */
+/* aglyph :: The corresponding @FT_Glyph object. 0~in case of */
+/* failure. */
+/* */
+/* anode :: Used to return the address of of the corresponding */
+/* cache node after incrementing its reference count */
+/* (see note below). */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The returned glyph is owned and managed by the glyph image cache. */
+/* Never try to transform or discard it manually! You can however */
+/* create a copy with @FT_Glyph_Copy and modify the new one. */
+/* */
+/* If `anode' is _not_ NULL, it receives the address of the cache */
+/* node containing the glyph image, after increasing its reference */
+/* count. This ensures that the node (as well as the @FT_Glyph) will */
+/* always be kept in the cache until you call @FTC_Node_Unref to */
+/* `release' it. */
+/* */
+/* If `anode' is NULL, the cache node is left unchanged, which means */
+/* that the @FT_Glyph could be flushed out of the cache on the next */
+/* call to one of the caching sub-system APIs. Don't assume that it */
+/* is persistent! */
+/* */
+/* Calls to @FT_Set_Char_Size and friends have no effect on cached */
+/* glyphs; you should always use the FreeType cache API instead. */
+/* */
+FT_EXPORT( FT_Error )
+FTC_ImageCache_LookupScaler( FTC_ImageCache cache,
+ FTC_Scaler scaler,
+ FT_ULong load_flags,
+ FT_UInt gindex,
+ FT_Glyph *aglyph,
+ FTC_Node *anode );
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FTC_SBit */
+/* */
+/* <Description> */
+/* A handle to a small bitmap descriptor. See the @FTC_SBitRec */
+/* structure for details. */
+/* */
+typedef struct FTC_SBitRec_* FTC_SBit;
+
+
+/*************************************************************************/
+/* */
+/* <Struct> */
+/* FTC_SBitRec */
+/* */
+/* <Description> */
+/* A very compact structure used to describe a small glyph bitmap. */
+/* */
+/* <Fields> */
+/* width :: The bitmap width in pixels. */
+/* */
+/* height :: The bitmap height in pixels. */
+/* */
+/* left :: The horizontal distance from the pen position to the */
+/* left bitmap border (a.k.a. `left side bearing', or */
+/* `lsb'). */
+/* */
+/* top :: The vertical distance from the pen position (on the */
+/* baseline) to the upper bitmap border (a.k.a. `top */
+/* side bearing'). The distance is positive for upwards */
+/* y~coordinates. */
+/* */
+/* format :: The format of the glyph bitmap (monochrome or gray). */
+/* */
+/* max_grays :: Maximum gray level value (in the range 1 to~255). */
+/* */
+/* pitch :: The number of bytes per bitmap line. May be positive */
+/* or negative. */
+/* */
+/* xadvance :: The horizontal advance width in pixels. */
+/* */
+/* yadvance :: The vertical advance height in pixels. */
+/* */
+/* buffer :: A pointer to the bitmap pixels. */
+/* */
+typedef struct FTC_SBitRec_ {
FT_Byte width;
FT_Byte height;
FT_Char left;
@@ -921,185 +918,184 @@ FT_BEGIN_HEADER
FT_Byte* buffer;
- } FTC_SBitRec;
-
-
- /*************************************************************************/
- /* */
- /* <Type> */
- /* FTC_SBitCache */
- /* */
- /* <Description> */
- /* A handle to a small bitmap cache. These are special cache objects */
- /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */
- /* much more efficient way than the traditional glyph image cache */
- /* implemented by @FTC_ImageCache. */
- /* */
- typedef struct FTC_SBitCacheRec_* FTC_SBitCache;
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_SBitCache_New */
- /* */
- /* <Description> */
- /* Create a new cache to store small glyph bitmaps. */
- /* */
- /* <Input> */
- /* manager :: A handle to the source cache manager. */
- /* */
- /* <Output> */
- /* acache :: A handle to the new sbit cache. NULL in case of error. */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- FT_EXPORT( FT_Error )
- FTC_SBitCache_New( FTC_Manager manager,
- FTC_SBitCache *acache );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_SBitCache_Lookup */
- /* */
- /* <Description> */
- /* Look up a given small glyph bitmap in a given sbit cache and */
- /* `lock' it to prevent its flushing from the cache until needed. */
- /* */
- /* <Input> */
- /* cache :: A handle to the source sbit cache. */
- /* */
- /* type :: A pointer to the glyph image type descriptor. */
- /* */
- /* gindex :: The glyph index. */
- /* */
- /* <Output> */
- /* sbit :: A handle to a small bitmap descriptor. */
- /* */
- /* anode :: Used to return the address of of the corresponding cache */
- /* node after incrementing its reference count (see note */
- /* below). */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The small bitmap descriptor and its bit buffer are owned by the */
- /* cache and should never be freed by the application. They might */
- /* as well disappear from memory on the next cache lookup, so don't */
- /* treat them as persistent data. */
- /* */
- /* The descriptor's `buffer' field is set to~0 to indicate a missing */
- /* glyph bitmap. */
- /* */
- /* If `anode' is _not_ NULL, it receives the address of the cache */
- /* node containing the bitmap, after increasing its reference count. */
- /* This ensures that the node (as well as the image) will always be */
- /* kept in the cache until you call @FTC_Node_Unref to `release' it. */
- /* */
- /* If `anode' is NULL, the cache node is left unchanged, which means */
- /* that the bitmap could be flushed out of the cache on the next */
- /* call to one of the caching sub-system APIs. Don't assume that it */
- /* is persistent! */
- /* */
- FT_EXPORT( FT_Error )
- FTC_SBitCache_Lookup( FTC_SBitCache cache,
- FTC_ImageType type,
- FT_UInt gindex,
- FTC_SBit *sbit,
- FTC_Node *anode );
-
-
- /*************************************************************************/
- /* */
- /* <Function> */
- /* FTC_SBitCache_LookupScaler */
- /* */
- /* <Description> */
- /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */
- /* to specify the face ID and its size. */
- /* */
- /* <Input> */
- /* cache :: A handle to the source sbit cache. */
- /* */
- /* scaler :: A pointer to the scaler descriptor. */
- /* */
- /* load_flags :: The corresponding load flags. */
- /* */
- /* gindex :: The glyph index. */
- /* */
- /* <Output> */
- /* sbit :: A handle to a small bitmap descriptor. */
- /* */
- /* anode :: Used to return the address of of the corresponding */
- /* cache node after incrementing its reference count */
- /* (see note below). */
- /* */
- /* <Return> */
- /* FreeType error code. 0~means success. */
- /* */
- /* <Note> */
- /* The small bitmap descriptor and its bit buffer are owned by the */
- /* cache and should never be freed by the application. They might */
- /* as well disappear from memory on the next cache lookup, so don't */
- /* treat them as persistent data. */
- /* */
- /* The descriptor's `buffer' field is set to~0 to indicate a missing */
- /* glyph bitmap. */
- /* */
- /* If `anode' is _not_ NULL, it receives the address of the cache */
- /* node containing the bitmap, after increasing its reference count. */
- /* This ensures that the node (as well as the image) will always be */
- /* kept in the cache until you call @FTC_Node_Unref to `release' it. */
- /* */
- /* If `anode' is NULL, the cache node is left unchanged, which means */
- /* that the bitmap could be flushed out of the cache on the next */
- /* call to one of the caching sub-system APIs. Don't assume that it */
- /* is persistent! */
- /* */
- FT_EXPORT( FT_Error )
- FTC_SBitCache_LookupScaler( FTC_SBitCache cache,
- FTC_Scaler scaler,
- FT_ULong load_flags,
- FT_UInt gindex,
- FTC_SBit *sbit,
- FTC_Node *anode );
-
-
- /* */
+} FTC_SBitRec;
+
+
+/*************************************************************************/
+/* */
+/* <Type> */
+/* FTC_SBitCache */
+/* */
+/* <Description> */
+/* A handle to a small bitmap cache. These are special cache objects */
+/* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */
+/* much more efficient way than the traditional glyph image cache */
+/* implemented by @FTC_ImageCache. */
+/* */
+typedef struct FTC_SBitCacheRec_* FTC_SBitCache;
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_SBitCache_New */
+/* */
+/* <Description> */
+/* Create a new cache to store small glyph bitmaps. */
+/* */
+/* <Input> */
+/* manager :: A handle to the source cache manager. */
+/* */
+/* <Output> */
+/* acache :: A handle to the new sbit cache. NULL in case of error. */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+FT_EXPORT( FT_Error )
+FTC_SBitCache_New( FTC_Manager manager,
+ FTC_SBitCache *acache );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_SBitCache_Lookup */
+/* */
+/* <Description> */
+/* Look up a given small glyph bitmap in a given sbit cache and */
+/* `lock' it to prevent its flushing from the cache until needed. */
+/* */
+/* <Input> */
+/* cache :: A handle to the source sbit cache. */
+/* */
+/* type :: A pointer to the glyph image type descriptor. */
+/* */
+/* gindex :: The glyph index. */
+/* */
+/* <Output> */
+/* sbit :: A handle to a small bitmap descriptor. */
+/* */
+/* anode :: Used to return the address of of the corresponding cache */
+/* node after incrementing its reference count (see note */
+/* below). */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The small bitmap descriptor and its bit buffer are owned by the */
+/* cache and should never be freed by the application. They might */
+/* as well disappear from memory on the next cache lookup, so don't */
+/* treat them as persistent data. */
+/* */
+/* The descriptor's `buffer' field is set to~0 to indicate a missing */
+/* glyph bitmap. */
+/* */
+/* If `anode' is _not_ NULL, it receives the address of the cache */
+/* node containing the bitmap, after increasing its reference count. */
+/* This ensures that the node (as well as the image) will always be */
+/* kept in the cache until you call @FTC_Node_Unref to `release' it. */
+/* */
+/* If `anode' is NULL, the cache node is left unchanged, which means */
+/* that the bitmap could be flushed out of the cache on the next */
+/* call to one of the caching sub-system APIs. Don't assume that it */
+/* is persistent! */
+/* */
+FT_EXPORT( FT_Error )
+FTC_SBitCache_Lookup( FTC_SBitCache cache,
+ FTC_ImageType type,
+ FT_UInt gindex,
+ FTC_SBit *sbit,
+ FTC_Node *anode );
+
+
+/*************************************************************************/
+/* */
+/* <Function> */
+/* FTC_SBitCache_LookupScaler */
+/* */
+/* <Description> */
+/* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */
+/* to specify the face ID and its size. */
+/* */
+/* <Input> */
+/* cache :: A handle to the source sbit cache. */
+/* */
+/* scaler :: A pointer to the scaler descriptor. */
+/* */
+/* load_flags :: The corresponding load flags. */
+/* */
+/* gindex :: The glyph index. */
+/* */
+/* <Output> */
+/* sbit :: A handle to a small bitmap descriptor. */
+/* */
+/* anode :: Used to return the address of of the corresponding */
+/* cache node after incrementing its reference count */
+/* (see note below). */
+/* */
+/* <Return> */
+/* FreeType error code. 0~means success. */
+/* */
+/* <Note> */
+/* The small bitmap descriptor and its bit buffer are owned by the */
+/* cache and should never be freed by the application. They might */
+/* as well disappear from memory on the next cache lookup, so don't */
+/* treat them as persistent data. */
+/* */
+/* The descriptor's `buffer' field is set to~0 to indicate a missing */
+/* glyph bitmap. */
+/* */
+/* If `anode' is _not_ NULL, it receives the address of the cache */
+/* node containing the bitmap, after increasing its reference count. */
+/* This ensures that the node (as well as the image) will always be */
+/* kept in the cache until you call @FTC_Node_Unref to `release' it. */
+/* */
+/* If `anode' is NULL, the cache node is left unchanged, which means */
+/* that the bitmap could be flushed out of the cache on the next */
+/* call to one of the caching sub-system APIs. Don't assume that it */
+/* is persistent! */
+/* */
+FT_EXPORT( FT_Error )
+FTC_SBitCache_LookupScaler( FTC_SBitCache cache,
+ FTC_Scaler scaler,
+ FT_ULong load_flags,
+ FT_UInt gindex,
+ FTC_SBit *sbit,
+ FTC_Node *anode );
+
+
+/* */
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
- /*@***********************************************************************/
- /* */
- /* <Struct> */
- /* FTC_FontRec */
- /* */
- /* <Description> */
- /* A simple structure used to describe a given `font' to the cache */
- /* manager. Note that a `font' is the combination of a given face */
- /* with a given character size. */
- /* */
- /* <Fields> */
- /* face_id :: The ID of the face to use. */
- /* */
- /* pix_width :: The character width in integer pixels. */
- /* */
- /* pix_height :: The character height in integer pixels. */
- /* */
- typedef struct FTC_FontRec_
- {
+/*@***********************************************************************/
+/* */
+/* <Struct> */
+/* FTC_FontRec */
+/* */
+/* <Description> */
+/* A simple structure used to describe a given `font' to the cache */
+/* manager. Note that a `font' is the combination of a given face */
+/* with a given character size. */
+/* */
+/* <Fields> */
+/* face_id :: The ID of the face to use. */
+/* */
+/* pix_width :: The character width in integer pixels. */
+/* */
+/* pix_height :: The character height in integer pixels. */
+/* */
+typedef struct FTC_FontRec_ {
FTC_FaceID face_id;
FT_UShort pix_width;
FT_UShort pix_height;
- } FTC_FontRec;
+} FTC_FontRec;
- /* */
+/* */
#define FTC_FONT_COMPARE( f1, f2 ) \
@@ -1107,30 +1103,30 @@ FT_BEGIN_HEADER
(f1)->pix_width == (f2)->pix_width && \
(f1)->pix_height == (f2)->pix_height )
- /* this macro is incompatible with LLP64, should not be used */
+/* this macro is incompatible with LLP64, should not be used */
#define FTC_FONT_HASH( f ) \
(FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \
((f)->pix_width << 8) ^ \
((f)->pix_height) )
- typedef FTC_FontRec* FTC_Font;
+typedef FTC_FontRec* FTC_Font;
- FT_EXPORT( FT_Error )
- FTC_Manager_Lookup_Face( FTC_Manager manager,
- FTC_FaceID face_id,
- FT_Face *aface );
+FT_EXPORT( FT_Error )
+FTC_Manager_Lookup_Face( FTC_Manager manager,
+ FTC_FaceID face_id,
+ FT_Face *aface );
- FT_EXPORT( FT_Error )
- FTC_Manager_Lookup_Size( FTC_Manager manager,
- FTC_Font font,
- FT_Face *aface,
- FT_Size *asize );
+FT_EXPORT( FT_Error )
+FTC_Manager_Lookup_Size( FTC_Manager manager,
+ FTC_Font font,
+ FT_Face *aface,
+ FT_Size *asize );
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
- /* */
+/* */
FT_END_HEADER
OpenPOWER on IntegriCloud