📄 ftobjs.h
字号:
/*************************************************************************/ /* */ /* <Struct> */ /* FT_Slot_InternalRec */ /* */ /* <Description> */ /* This structure contains the internal fields of each FT_GlyphSlot */ /* object. These fields may change between different releases of */ /* FreeType. */ /* */ /* <Fields> */ /* loader :: The glyph loader object used to load outlines */ /* into the glyph slot. */ /* */ /* flags :: Possible values are zero or */ /* FT_GLYPH_OWN_BITMAP. The latter indicates */ /* that the FT_GlyphSlot structure owns the */ /* bitmap buffer. */ /* */ /* glyph_transformed :: Boolean. Set to TRUE when the loaded glyph */ /* must be transformed through a specific */ /* font transformation. This is _not_ the same */ /* as the face transform set through */ /* FT_Set_Transform(). */ /* */ /* glyph_matrix :: The 2x2 matrix corresponding to the glyph */ /* transformation, if necessary. */ /* */ /* glyph_delta :: The 2d translation vector corresponding to */ /* the glyph transformation, if necessary. */ /* */ /* glyph_hints :: Format-specific glyph hints management. */ /* */#define FT_GLYPH_OWN_BITMAP 0x1 typedef struct FT_Slot_InternalRec_ { FT_GlyphLoader loader; FT_UInt flags; FT_Bool glyph_transformed; FT_Matrix glyph_matrix; FT_Vector glyph_delta; void* glyph_hints; } FT_GlyphSlot_InternalRec;#if 0 /*************************************************************************/ /* */ /* <Struct> */ /* FT_Size_InternalRec */ /* */ /* <Description> */ /* This structure contains the internal fields of each FT_Size */ /* object. Currently, it's empty. */ /* */ /*************************************************************************/ typedef struct FT_Size_InternalRec_ { /* empty */ } FT_Size_InternalRec;#endif /*************************************************************************/ /*************************************************************************/ /**** ****/ /**** ****/ /**** M O D U L E S ****/ /**** ****/ /**** ****/ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /* */ /* <Struct> */ /* FT_ModuleRec */ /* */ /* <Description> */ /* A module object instance. */ /* */ /* <Fields> */ /* clazz :: A pointer to the module's class. */ /* */ /* library :: A handle to the parent library object. */ /* */ /* memory :: A handle to the memory manager. */ /* */ /* generic :: A generic structure for user-level extensibility (?). */ /* */ typedef struct FT_ModuleRec_ { FT_Module_Class* clazz; FT_Library library; FT_Memory memory; FT_Generic generic; } FT_ModuleRec; /* typecast an object to a FT_Module */#define FT_MODULE( x ) ((FT_Module)( x ))#define FT_MODULE_CLASS( x ) FT_MODULE( x )->clazz#define FT_MODULE_LIBRARY( x ) FT_MODULE( x )->library#define FT_MODULE_MEMORY( x ) FT_MODULE( x )->memory#define FT_MODULE_IS_DRIVER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_FONT_DRIVER )#define FT_MODULE_IS_RENDERER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_RENDERER )#define FT_MODULE_IS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_HINTER )#define FT_MODULE_IS_STYLER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_STYLER )#define FT_DRIVER_IS_SCALABLE( x ) ( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_DRIVER_SCALABLE )#define FT_DRIVER_USES_OUTLINES( x ) !( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_DRIVER_NO_OUTLINES )#define FT_DRIVER_HAS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ FT_MODULE_DRIVER_HAS_HINTER ) /*************************************************************************/ /* */ /* <Function> */ /* FT_Get_Module_Interface */ /* */ /* <Description> */ /* Finds a module and returns its specific interface as a typeless */ /* pointer. */ /* */ /* <Input> */ /* library :: A handle to the library object. */ /* */ /* module_name :: The module's name (as an ASCII string). */ /* */ /* <Return> */ /* A module-specific interface if available, 0 otherwise. */ /* */ /* <Note> */ /* You should better be familiar with FreeType internals to know */ /* which module to look for, and what its interface is :-) */ /* */ FT_BASE( const void* ) FT_Get_Module_Interface( FT_Library library, const char* mod_name ); FT_BASE( FT_Pointer ) ft_module_get_service( FT_Module module, const char* service_id ); /* */ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /**** ****/ /**** ****/ /**** FACE, SIZE & GLYPH SLOT OBJECTS ****/ /**** ****/ /**** ****/ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /* a few macros used to perform easy typecasts with minimal brain damage */#define FT_FACE( x ) ((FT_Face)(x))#define FT_SIZE( x ) ((FT_Size)(x))#define FT_SLOT( x ) ((FT_GlyphSlot)(x))#define FT_FACE_DRIVER( x ) FT_FACE( x )->driver#define FT_FACE_LIBRARY( x ) FT_FACE_DRIVER( x )->root.library#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory#define FT_FACE_STREAM( x ) FT_FACE( x )->stream#define FT_SIZE_FACE( x ) FT_SIZE( x )->face#define FT_SLOT_FACE( x ) FT_SLOT( x )->face#define FT_FACE_SLOT( x ) FT_FACE( x )->glyph#define FT_FACE_SIZE( x ) FT_FACE( x )->size /*************************************************************************/ /* */ /* <Function> */ /* FT_New_GlyphSlot */ /* */ /* <Description> */ /* It is sometimes useful to have more than one glyph slot for a */ /* given face object. This function is used to create additional */ /* slots. All of them are automatically discarded when the face is */ /* destroyed. */ /* */ /* <Input> */ /* face :: A handle to a parent face object. */ /* */ /* <Output> */ /* aslot :: A handle to a new glyph slot object. */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ FT_BASE( FT_Error ) FT_New_GlyphSlot( FT_Face face, FT_GlyphSlot *aslot ); /*************************************************************************/ /* */ /* <Function> */ /* FT_Done_GlyphSlot */ /* */ /* <Description> */ /* Destroys a given glyph slot. Remember however that all slots are */ /* automatically destroyed with its parent. Using this function is */ /* not always mandatory. */ /* */ /* <Input> */ /* slot :: A handle to a target glyph slot. */ /* */ FT_BASE( void ) FT_Done_GlyphSlot( FT_GlyphSlot slot ); /* */#define FT_REQUEST_WIDTH( req ) \ ( (req)->horiResolution \ ? (FT_Pos)( (req)->width * (req)->horiResolution + 36 ) / 72 \ : (req)->width )#define FT_REQUEST_HEIGHT( req ) \ ( (req)->vertResolution \ ? (FT_Pos)( (req)->height * (req)->vertResolution + 36 ) / 72 \ : (req)->height ) /* Set the metrics according to a bitmap strike. */ FT_BASE( void ) FT_Select_Metrics( FT_Face face, FT_ULong strike_index ); /* Set the metrics according to a size request. */ FT_BASE( void ) FT_Request_Metrics( FT_Face face, FT_Size_Request req ); /* Match a size request against `available_sizes'. */ FT_BASE( FT_Error ) FT_Match_Size( FT_Face face, FT_Size_Request req, FT_Bool ignore_width, FT_ULong* size_index ); /* Use the horizontal metrics to synthesize the vertical metrics. */ /* If `advance' is zero, it is also synthesized. */ FT_BASE( void ) ft_synthesize_vertical_metrics( FT_Glyph_Metrics* metrics, FT_Pos advance ); /* Free the bitmap of a given glyphslot when needed (i.e., only when it */ /* was allocated with ft_glyphslot_alloc_bitmap). */ FT_BASE( void ) ft_glyphslot_free_bitmap( FT_GlyphSlot slot ); /* Allocate a new bitmap buffer in a glyph slot. */ FT_BASE( FT_Error ) ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -