ftcache.h | ftcache.h | |||
---|---|---|---|---|
/************************************************************************** */ | /************************************************************************** */ | |||
/* */ | /* */ | |||
/* ftcache.h */ | /* ftcache.h */ | |||
/* */ | /* */ | |||
/* FreeType Cache subsystem (specification). */ | /* FreeType Cache subsystem (specification). */ | |||
/* */ | /* */ | |||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ | /* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 by */ | |||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ | /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | |||
/* */ | /* */ | |||
/* This file is part of the FreeType project, and may only be used, */ | /* This file is part of the FreeType project, and may only be used, */ | |||
/* modified, and distributed under the terms of the FreeType project */ | /* modified, and distributed under the terms of the FreeType project */ | |||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |||
/* this file you indicate that you have read the license and */ | /* this file you indicate that you have read the license and */ | |||
/* understand and accept it fully. */ | /* understand and accept it fully. */ | |||
/* */ | /* */ | |||
/************************************************************************** */ | /************************************************************************** */ | |||
skipping to change at line 55 | skipping to change at line 55 | |||
* The cache is highly portable and thus doesn't know anything about th e | * The cache is highly portable and thus doesn't know anything about th e | |||
* fonts installed on your system, or how to access them. This implies | * fonts installed on your system, or how to access them. This implies | |||
* the following scheme: | * the following scheme: | |||
* | * | |||
* First, available or installed font faces are uniquely identified by | * First, available or installed font faces are uniquely identified by | |||
* @FTC_FaceID values, provided to the cache by the client. Note that | * @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 | * the cache only stores and compares these values, and doesn't try to | |||
* interpret them in any way. | * interpret them in any way. | |||
* | * | |||
* Second, the cache calls, only when needed, a client-provided functio n | * Second, the cache calls, only when needed, a client-provided functio n | |||
* to convert a @FTC_FaceID into a new @FT_Face object. The latter is | * to convert an @FTC_FaceID into a new @FT_Face object. The latter is | |||
* then completely managed by the cache, including its termination | * then completely managed by the cache, including its termination | |||
* through @FT_Done_Face. | * 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 | * 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 | * 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 | * used to call @FT_New_Face. However, more complex schemes are also | |||
* possible. | * possible. | |||
* | * | |||
* Note that for the cache to work correctly, the face ID values must b e | * Note that for the cache to work correctly, the face ID values must b e | |||
* *persistent*, which means that the contents they point to should not | * *persistent*, which means that the contents they point to should not | |||
* change at runtime, or that their value should not become invalid. | * change at runtime, or that their value should not become invalid. | |||
* | * | |||
skipping to change at line 207 | skipping to change at line 210 | |||
* transformation through @FT_Set_Transform! | * transformation through @FT_Set_Transform! | |||
*/ | */ | |||
typedef FT_Error | typedef FT_Error | |||
(*FTC_Face_Requester)( FTC_FaceID face_id, | (*FTC_Face_Requester)( FTC_FaceID face_id, | |||
FT_Library library, | FT_Library library, | |||
FT_Pointer request_data, | FT_Pointer request_data, | |||
FT_Face* aface ); | FT_Face* aface ); | |||
/* */ | /* */ | |||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS | ||||
/* these macros are incompatible with LLP64, should not be used */ | ||||
#define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) ) | #define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) ) | |||
#define FTC_FACE_ID_HASH( i ) \ | #define FTC_FACE_ID_HASH( i ) \ | |||
((FT_UInt32)(( FT_POINTER_TO_ULONG( i ) >> 3 ) ^ \ | ((FT_UInt32)(( FT_POINTER_TO_ULONG( i ) >> 3 ) ^ \ | |||
( FT_POINTER_TO_ULONG( i ) << 7 ) ) ) | ( FT_POINTER_TO_ULONG( i ) << 7 ) ) ) | |||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ | ||||
/************************************************************************ */ | /************************************************************************ */ | |||
/************************************************************************ */ | /************************************************************************ */ | |||
/************************************************************************ */ | /************************************************************************ */ | |||
/***** **** */ | /***** **** */ | |||
/***** CACHE MANAGER OBJECT **** */ | /***** CACHE MANAGER OBJECT **** */ | |||
/***** **** */ | /***** **** */ | |||
/************************************************************************ */ | /************************************************************************ */ | |||
/************************************************************************ */ | /************************************************************************ */ | |||
/************************************************************************ */ | /************************************************************************ */ | |||
skipping to change at line 256 | skipping to change at line 265 | |||
/************************************************************************ */ | /************************************************************************ */ | |||
/* */ | /* */ | |||
/* <Type> */ | /* <Type> */ | |||
/* FTC_Node */ | /* FTC_Node */ | |||
/* */ | /* */ | |||
/* <Description> */ | /* <Description> */ | |||
/* An opaque handle to a cache node object. Each cache node is */ | /* An opaque handle to a cache node object. Each cache node is */ | |||
/* reference-counted. A node with a count of~0 might be flushed */ | /* reference-counted. A node with a count of~0 might be flushed */ | |||
/* out of a full cache whenever a lookup request is performed. */ | /* out of a full cache whenever a lookup request is performed. */ | |||
/* */ | /* */ | |||
/* If you lookup nodes, you have the ability to `acquire' them, i.e., | /* If you look up nodes, you have the ability to `acquire' them, | |||
*/ | */ | |||
/* to increment their reference count. This will prevent the node | /* i.e., to increment their reference count. This will prevent the | |||
*/ | */ | |||
/* from being flushed out of the cache until you explicitly `release' | /* node from being flushed out of the cache until you explicitly | |||
*/ | */ | |||
/* it (see @FTC_Node_Unref). | /* `release' it (see @FTC_Node_Unref). | |||
*/ | */ | |||
/* */ | /* */ | |||
/* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ | /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ | |||
/* */ | /* */ | |||
typedef struct FTC_NodeRec_* FTC_Node; | typedef struct FTC_NodeRec_* FTC_Node; | |||
/************************************************************************ */ | /************************************************************************ */ | |||
/* */ | /* */ | |||
/* <Function> */ | /* <Function> */ | |||
/* FTC_Manager_New */ | /* FTC_Manager_New */ | |||
/* */ | /* */ | |||
skipping to change at line 672 | skipping to change at line 681 | |||
*/ | */ | |||
typedef struct FTC_ImageTypeRec_* FTC_ImageType; | typedef struct FTC_ImageTypeRec_* FTC_ImageType; | |||
/* */ | /* */ | |||
#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ | #define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ | |||
( (d1)->face_id == (d2)->face_id && \ | ( (d1)->face_id == (d2)->face_id && \ | |||
(d1)->width == (d2)->width && \ | (d1)->width == (d2)->width && \ | |||
(d1)->flags == (d2)->flags ) | (d1)->flags == (d2)->flags ) | |||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS | ||||
/* this macro is incompatible with LLP64, should not be used */ | ||||
#define FTC_IMAGE_TYPE_HASH( d ) \ | #define FTC_IMAGE_TYPE_HASH( d ) \ | |||
(FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \ | (FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \ | |||
( (d)->width << 8 ) ^ (d)->height ^ \ | ( (d)->width << 8 ) ^ (d)->height ^ \ | |||
( (d)->flags << 4 ) ) | ( (d)->flags << 4 ) ) | |||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ | ||||
/************************************************************************ */ | /************************************************************************ */ | |||
/* */ | /* */ | |||
/* <Type> */ | /* <Type> */ | |||
/* FTC_ImageCache */ | /* FTC_ImageCache */ | |||
/* */ | /* */ | |||
/* <Description> */ | /* <Description> */ | |||
/* A handle to an glyph image cache object. They are designed to */ | /* A handle to an glyph image cache object. They are designed to */ | |||
/* hold many distinct glyph images while not exceeding a certain */ | /* hold many distinct glyph images while not exceeding a certain */ | |||
/* memory threshold. */ | /* memory threshold. */ | |||
/* */ | /* */ | |||
skipping to change at line 1055 | skipping to change at line 1070 | |||
} FTC_FontRec; | } FTC_FontRec; | |||
/* */ | /* */ | |||
#define FTC_FONT_COMPARE( f1, f2 ) \ | #define FTC_FONT_COMPARE( f1, f2 ) \ | |||
( (f1)->face_id == (f2)->face_id && \ | ( (f1)->face_id == (f2)->face_id && \ | |||
(f1)->pix_width == (f2)->pix_width && \ | (f1)->pix_width == (f2)->pix_width && \ | |||
(f1)->pix_height == (f2)->pix_height ) | (f1)->pix_height == (f2)->pix_height ) | |||
/* this macro is incompatible with LLP64, should not be used */ | ||||
#define FTC_FONT_HASH( f ) \ | #define FTC_FONT_HASH( f ) \ | |||
(FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ | (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ | |||
((f)->pix_width << 8) ^ \ | ((f)->pix_width << 8) ^ \ | |||
((f)->pix_height) ) | ((f)->pix_height) ) | |||
typedef FTC_FontRec* FTC_Font; | typedef FTC_FontRec* FTC_Font; | |||
FT_EXPORT( FT_Error ) | FT_EXPORT( FT_Error ) | |||
FTC_Manager_Lookup_Face( FTC_Manager manager, | FTC_Manager_Lookup_Face( FTC_Manager manager, | |||
FTC_FaceID face_id, | FTC_FaceID face_id, | |||
End of changes. 9 change blocks. | ||||
11 lines changed or deleted | 27 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |