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

📄 ftcchunk.h

📁 qt-embedded-2.3.8.tar.gz源码
💻 H
字号:
/***************************************************************************//*                                                                         *//*  ftcchunk.h                                                             *//*                                                                         *//*    FreeType chunk cache (specification).                                *//*                                                                         *//*  Copyright 2000 by                                                      *//*  David Turner, Robert Wilhelm, and Werner Lemberg.                      *//*                                                                         *//*  This file is part of the FreeType project, and may only be used,       *//*  modified, and distributed under the terms of the FreeType project      *//*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     *//*  this file you indicate that you have read the license and              *//*  understand and accept it fully.                                        *//*                                                                         *//***************************************************************************/  /*************************************************************************/  /*                                                                       */  /* Important: The functions defined in this file are only used to        */  /*            implement an abstract chunk cache class.  You need to      */  /*            provide additional logic to implement a complete cache.    */  /*            For example, see `ftcmetrx.h' and `ftcmetrx.c' which       */  /*            implement a glyph metrics cache based on this code.        */  /*                                                                       */  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*********                                                       *********/  /*********             WARNING, THIS IS BETA CODE.               *********/  /*********                                                       *********/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/#ifndef __FTCCHUNK_H__#define __FTCCHUNK_H__#ifndef    FT_BUILD_H#  define  FT_BUILD_H    <freetype/config/ftbuild.h>#endif#include   "freetype/config/ftbuild.h"#include   "freetype/ftcache.h"#include   "freetype/cache/ftcmanag.h"FT_BEGIN_HEADER  /* maximum number of chunk sets in a given chunk cache */#define  FTC_MAX_CHUNK_SETS  16  typedef struct FTC_ChunkNodeRec_*    FTC_ChunkNode;  typedef struct FTC_ChunkSetRec_*     FTC_ChunkSet;  typedef struct FTC_Chunk_CacheRec_*  FTC_Chunk_Cache;  typedef struct  FTC_ChunkNodeRec_  {    FTC_CacheNodeRec  root;    FTC_ChunkSet      cset;    FT_UShort         cset_index;    FT_UShort         num_elements;    FT_Byte*          elements;  } FTC_ChunkNodeRec;#define FTC_CHUNKNODE_TO_LRUNODE( x )  ((FT_ListNode)( x ))#define FTC_LRUNODE_TO_CHUNKNODE( x )  ((FTC_ChunkNode)( x ))  /*************************************************************************/  /*                                                                       */  /*  chunk set methods                                                    */  /*                                                                       */  /* used to set "element_max", "element_count" and "element_size" */  typedef FT_Error  (*FTC_ChunkSet_SizesFunc)  ( FTC_ChunkSet  cset,                                                 FT_Pointer    type );  typedef FT_Error  (*FTC_ChunkSet_InitFunc)   ( FTC_ChunkSet  cset,                                                 FT_Pointer    type );  typedef void      (*FTC_ChunkSet_DoneFunc)   ( FTC_ChunkSet  cset );  typedef FT_Bool   (*FTC_ChunkSet_CompareFunc)( FTC_ChunkSet  cset,                                                 FT_Pointer    type );  typedef FT_Error  (*FTC_ChunkSet_NewNodeFunc)    ( FTC_ChunkSet    cset,                                                     FT_UInt         index,                                                     FTC_ChunkNode*  anode );  typedef void      (*FTC_ChunkSet_DestroyNodeFunc)( FTC_ChunkNode   node );  typedef FT_ULong  (*FTC_ChunkSet_SizeNodeFunc)   ( FTC_ChunkNode   node );  typedef struct  FTC_ChunkSet_Class_  {    FT_UInt                       cset_byte_size;    FTC_ChunkSet_InitFunc         init;    FTC_ChunkSet_DoneFunc         done;    FTC_ChunkSet_CompareFunc      compare;    FTC_ChunkSet_SizesFunc        sizes;    FTC_ChunkSet_NewNodeFunc      new_node;    FTC_ChunkSet_SizeNodeFunc     size_node;    FTC_ChunkSet_DestroyNodeFunc  destroy_node;  } FTC_ChunkSet_Class;  typedef struct  FTC_ChunkSetRec_  {    FTC_Chunk_Cache      cache;    FTC_Manager          manager;    FT_Memory            memory;    FTC_ChunkSet_Class*  clazz;    FT_UInt              cset_index;     /* index in parent cache    */    FT_UInt              element_max;    /* maximum number of elements   */    FT_UInt              element_size;   /* element size in bytes        */    FT_UInt              element_count;  /* number of elements per chunk */    FT_UInt              num_chunks;    FTC_ChunkNode*       chunks;  } FTC_ChunkSetRec;  /* the abstract chunk cache class */  typedef struct  FTC_Chunk_Cache_Class_  {    FTC_Cache_Class      root;    FTC_ChunkSet_Class*  cset_class;  } FTC_Chunk_Cache_Class;  /* the abstract chunk cache object */  typedef struct  FTC_Chunk_CacheRec_  {    FTC_CacheRec              root;    FT_Lru                    csets_lru;   /* static chunk set lru list */    FTC_ChunkSet              last_cset;   /* small cache :-)           */    FTC_ChunkSet_CompareFunc  compare;     /* useful shortcut           */  } FTC_Chunk_CacheRec;  /*************************************************************************/  /*                                                                       */  /* These functions are exported so that they can be called from          */  /* user-provided cache classes; otherwise, they are really part of the   */  /* cache sub-system internals.                                           */  /*                                                                       */  FT_EXPORT( FT_Error )  FTC_ChunkNode_Init( FTC_ChunkNode  node,                                             FTC_ChunkSet   cset,                                             FT_UInt        index,                                             FT_Bool        alloc );#define FTC_ChunkNode_Ref( n ) \          FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count++#define FTC_ChunkNode_Unref( n ) \          FTC_CACHENODE_TO_DATA_P( &(n)->root )->ref_count--  /* chunk set objects */  FT_EXPORT( void )      FTC_ChunkNode_Destroy( FTC_ChunkNode    node );  FT_EXPORT( FT_Error )  FTC_ChunkSet_New     ( FTC_Chunk_Cache  cache,                                                FT_Pointer       type,                                                FTC_ChunkSet    *aset );  FT_EXPORT( FT_Error )  FTC_ChunkSet_Lookup_Node(                           FTC_ChunkSet    cset,                           FT_UInt         glyph_index,                           FTC_ChunkNode*  anode,                           FT_UInt        *anindex );  /* chunk cache objects */  FT_EXPORT( FT_Error )  FTC_Chunk_Cache_Init  ( FTC_Chunk_Cache  cache );  FT_EXPORT( void )      FTC_Chunk_Cache_Done  ( FTC_Chunk_Cache  cache );  FT_EXPORT( FT_Error )  FTC_Chunk_Cache_Lookup( FTC_Chunk_Cache  cache,                                                 FT_Pointer       type,                                                 FT_UInt          gindex,                                                 FTC_ChunkNode   *anode,                                                 FT_UInt         *aindex );FT_END_HEADER#endif /* __FTCCHUNK_H__ *//* END */

⌨️ 快捷键说明

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