⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftcore.h

📁 支持ttf字体转换的工具
💻 H
字号:
#ifndef __FT_CORE_H__#define __FT_CORE_H__#include <ft2build.h>#include FT_TYPES_H#include FT_SYSTEM_MEMORY_HFT_BEGIN_HEADER /**************************************************************************/ /**************************************************************************/ /*****                                                                *****/ /*****                  C L E A N U P   S T A C K                     *****/ /*****                                                                *****/ /**************************************************************************/ /**************************************************************************/ /************************************************************************  *  * @functype: FT_CleanupFunc  *  * @description:  *   a function used to cleanup a given item on the cleanup stack  *  * @input:  *   item      :: target item pointer  *   item_data :: optional argument to cleanup routine  */  typedef void  (*FT_CleanupFunc)( FT_Pointer  item,                                   FT_Pointer  item_data ); /************************************************************************  *  * @type: FT_XHandler  *  * @description:  *   handle to an exception-handler structure for the FreeType  *   exception sub-system  *  * @note:  *   exception handlers are allocated on the stack within a  *   @FT_XTRY macro. Do not try to access them directly.  */  typedef struct FT_XHandlerRec_*  FT_XHandler;/* the size of a cleanup chunk in bytes is FT_CLEANUP_CHUNK_SIZE*12 + 4 *//* this must be a small power of 2 whenever possible..                  *//*                                                                      *//* with a value of 5, we have a byte size of 64 bytes per chunk..       *//*                                                                      */#define  FT_CLEANUP_CHUNK_SIZE   5  typedef struct FT_CleanupItemRec_  {    FT_Pointer      item;    FT_CleanupFunc  item_func;    FT_Pointer      item_data;  } FT_CleanupItemRec;  typedef struct FT_CleanupChunkRec_*   FT_CleanupChunk;  typedef struct FT_CleanupChunkRec_  {    FT_CleanupChunk    link;    FT_CleanupItemRec  items[ FT_CLEANUP_CHUNK_SIZE ];  } FT_CleanupChunkRec;  typedef struct FT_CleanupStackRec_  {    FT_CleanupItem     top;    FT_CleanupItem     limit;    FT_CleanupChunk    chunk;    FT_CleanupChunkRec chunk_0;  /* avoids stupid dynamic allocation */    FT_Memory          memory;  } FT_CleanupStackRec, *FT_CleanupStack;  FT_BASE( void )  ft_cleanup_stack_push( FT_CleanupStack  stack,                         FT_Pointer       item,                         FT_CleanupFunc   item_func,                         FT_Pointer       item_data );  FT_BASE( void )  ft_cleanup_stack_pop( FT_CleanupStack   stack,                        FT_Int            destroy );  FT_BASE( FT_CleanupItem )  ft_cleanup_stack_peek( FT_CleanupStack  stack );  FT_BASE( void )  ft_cleanup_throw( FT_CleanupStack  stack,                    FT_Error         error ); /**************************************************************************/ /**************************************************************************/ /*****                                                                *****/ /*****                 M E M O R Y   M A N A G E R                    *****/ /*****                                                                *****/ /**************************************************************************/ /**************************************************************************/  typedef struct FT_MemoryRec_  {    FT_Memory_AllocFunc     mem_alloc;   /* shortcut to funcs->mem_alloc */    FT_Memory_FreeFunc      mem_free;    /* shortcut to funcs->mem_free  */    FT_Pointer              mem_data;    const FT_Memory_Funcs   mem_funcs;    FT_CleanupStackRec      cleanup_stack;    FT_Pointer              meta_class;  } FT_MemoryRec;#define  FT_MEMORY(x)  ((FT_Memory)(x))#define  FT_MEMORY__ALLOC(x)       FT_MEMORY(x)->mem_alloc#define  FT_MEMORY__FREE(x)        FT_MEMORY(x)->mem_free#define  FT_MEMORY__REALLOC(x)     FT_MEMORY(x)->mem_funcs->mem_realloc#define  FT_MEMORY__CLEANUP(x)     (&FT_MEMORY(x)->cleanup_stack)#define  FT_MEMORY__META_CLASS(x)  ((FT_MetaClass)(FT_MEMORY(x)->meta_class)) /**************************************************************************/ /**************************************************************************/ /*****                                                                *****/ /*****             E X C E P T I O N   H A N D L I N G                *****/ /*****                                                                *****/ /**************************************************************************/ /**************************************************************************/ /************************************************************************  *  * @struct: FT_XHandlerRec  *  * @description:  *   exception handler structure  *  * @fields:  *   previous   :: previous handler in chain.  *   jum_buffer :: processor state used by setjmp/longjmp to implement  *                 exception control transfer  *   error      :: exception error code  *   mark       :: top of cleanup stack when @FT_XTRY is used  */  typedef struct FT_XHandlerRec_  {    FT_XHandler        previous;    ft_jmp_buf         jump_buffer;    volatile FT_Error  error;    FT_Pointer         mark;  } FT_XHandlerRec;  FT_BASE( void )  ft_xhandler_enter( FT_XHandler  xhandler,                     FT_Memory    memory );  FT_BASE( void )  ft_xhandler_exit( FT_XHandler  xhandler );FT_END_HEADER#endif /* __FT_CORE_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -