亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ftcglyph.h

?? 智能設(shè)備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? H
字號(hào):
/***************************************************************************/
/*                                                                         */
/*  ftcglyph.h                                                             */
/*                                                                         */
/*    FreeType abstract glyph cache (specification).                       */
/*                                                                         */
/*  Copyright 2000-2001, 2003, 2004, 2006 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.                                        */
/*                                                                         */
/***************************************************************************/


  /*
   *
   *  FTC_GCache is an _abstract_ cache object optimized to store glyph
   *  data.  It works as follows:
   *
   *   - It manages FTC_GNode objects. Each one of them can hold one or more
   *     glyph `items'.  Item types are not specified in the FTC_GCache but
   *     in classes that extend it.
   *
   *   - Glyph attributes, like face ID, character size, render mode, etc.,
   *     can be grouped into abstract `glyph families'.  This avoids storing
   *     the attributes within the FTC_GCache, since it is likely that many
   *     FTC_GNodes will belong to the same family in typical uses.
   *
   *   - Each FTC_GNode is thus an FTC_Node with two additional fields:
   *
   *       * gindex: A glyph index, or the first index in a glyph range.
   *       * family: A pointer to a glyph `family'.
   *
   *   - Family types are not fully specific in the FTC_Family type, but
   *     by classes that extend it.
   *
   *  Note that both FTC_ImageCache and FTC_SBitCache extend FTC_GCache.
   *  They share an FTC_Family sub-class called FTC_BasicFamily which is
   *  used to store the following data: face ID, pixel/point sizes, load
   *  flags.  For more details see the file `src/cache/ftcbasic.c'.
   *
   *  Client applications can extend FTC_GNode with their own FTC_GNode
   *  and FTC_Family sub-classes to implement more complex caches (e.g.,
   *  handling automatic synthesis, like obliquing & emboldening, colored
   *  glyphs, etc.).
   *
   *  See also the FTC_ICache & FTC_SCache classes in `ftcimage.h' and
   *  `ftcsbits.h', which both extend FTC_GCache with additional
   *  optimizations.
   *
   *  A typical FTC_GCache implementation must provide at least the
   *  following:
   *
   *  - FTC_GNode sub-class, e.g. MyNode, with relevant methods:
   *        my_node_new            (must call FTC_GNode_Init)
   *        my_node_free           (must call FTC_GNode_Done)
   *        my_node_compare        (must call FTC_GNode_Compare)
   *        my_node_remove_faceid  (must call ftc_gnode_unselect in case
   *                                of match)
   *
   *  - FTC_Family sub-class, e.g. MyFamily, with relevant methods:
   *        my_family_compare
   *        my_family_init
   *        my_family_reset (optional)
   *        my_family_done
   *
   *  - FTC_GQuery sub-class, e.g. MyQuery, to hold cache-specific query
   *    data.
   *
   *  - Constant structures for a FTC_GNodeClass.
   *
   *  - MyCacheNew() can be implemented easily as a call to the convenience
   *    function FTC_GCache_New.
   *
   *  - MyCacheLookup with a call to FTC_GCache_Lookup.  This function will
   *    automatically:
   *
   *    - Search for the corresponding family in the cache, or create
   *      a new one if necessary.  Put it in FTC_GQUERY(myquery).family
   *
   *    - Call FTC_Cache_Lookup.
   *
   *    If it returns NULL, you should create a new node, then call
   *    ftc_cache_add as usual.
   */


  /*************************************************************************/
  /*                                                                       */
  /* Important: The functions defined in this file are only used to        */
  /*            implement an abstract glyph cache class.  You need to      */
  /*            provide additional logic to implement a complete cache.    */
  /*                                                                       */
  /*************************************************************************/


  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /*********                                                       *********/
  /*********             WARNING, THIS IS BETA CODE.               *********/
  /*********                                                       *********/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/


#ifndef __FTCGLYPH_H__
#define __FTCGLYPH_H__


#include <ft2build.h>
#include "ftcmanag.h"


FT_BEGIN_HEADER


 /*
  *  We can group glyphs into `families'.  Each family correspond to a
  *  given face ID, character size, transform, etc.
  *
  *  Families are implemented as MRU list nodes.  They are
  *  reference-counted.
  */

  typedef struct  FTC_FamilyRec_
  {
    FTC_MruNodeRec    mrunode;
    FT_UInt           num_nodes; /* current number of nodes in this family */
    FTC_Cache         cache;
    FTC_MruListClass  clazz;

  } FTC_FamilyRec, *FTC_Family;

#define  FTC_FAMILY(x)    ( (FTC_Family)(x) )
#define  FTC_FAMILY_P(x)  ( (FTC_Family*)(x) )


  typedef struct  FTC_GNodeRec_
  {
    FTC_NodeRec      node;
    FTC_Family       family;
    FT_UInt          gindex;

  } FTC_GNodeRec, *FTC_GNode;

#define FTC_GNODE( x )    ( (FTC_GNode)(x) )
#define FTC_GNODE_P( x )  ( (FTC_GNode*)(x) )


  typedef struct  FTC_GQueryRec_
  {
    FT_UInt      gindex;
    FTC_Family   family;

  } FTC_GQueryRec, *FTC_GQuery;

#define FTC_GQUERY( x )  ( (FTC_GQuery)(x) )


  /*************************************************************************/
  /*                                                                       */
  /* 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.                                           */
  /*                                                                       */

  /* must be called by derived FTC_Node_InitFunc routines */
  FT_LOCAL( void )
  FTC_GNode_Init( FTC_GNode   node,
                  FT_UInt     gindex,  /* glyph index for node */
                  FTC_Family  family );

  /* returns TRUE iff the query's glyph index correspond to the node;  */
  /* this assumes that the `family' and `hash' fields of the query are */
  /* already correctly set                                             */
  FT_LOCAL( FT_Bool )
  FTC_GNode_Compare( FTC_GNode   gnode,
                     FTC_GQuery  gquery );

  /* call this function to clear a node's family -- this is necessary */
  /* to implement the `node_remove_faceid' cache method correctly     */
  FT_LOCAL( void )
  FTC_GNode_UnselectFamily( FTC_GNode  gnode,
                            FTC_Cache  cache );

  /* must be called by derived FTC_Node_DoneFunc routines */
  FT_LOCAL( void )
  FTC_GNode_Done( FTC_GNode  node,
                  FTC_Cache  cache );


  FT_LOCAL( void )
  FTC_Family_Init( FTC_Family  family,
                   FTC_Cache   cache );

  typedef struct FTC_GCacheRec_
  {
    FTC_CacheRec    cache;
    FTC_MruListRec  families;

  } FTC_GCacheRec, *FTC_GCache;

#define FTC_GCACHE( x )  ((FTC_GCache)(x))


#if 0
  /* can be used as @FTC_Cache_InitFunc */
  FT_LOCAL( FT_Error )
  FTC_GCache_Init( FTC_GCache  cache );
#endif


#if 0
  /* can be used as @FTC_Cache_DoneFunc */
  FT_LOCAL( void )
  FTC_GCache_Done( FTC_GCache  cache );
#endif


  /* the glyph cache class adds fields for the family implementation */
  typedef struct  FTC_GCacheClassRec_
  {
    FTC_CacheClassRec  clazz;
    FTC_MruListClass   family_class;

  } FTC_GCacheClassRec;

  typedef const FTC_GCacheClassRec*   FTC_GCacheClass;

#define FTC_GCACHE_CLASS( x )  ((FTC_GCacheClass)(x))

#define FTC_CACHE__GCACHE_CLASS( x ) \
          FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class )
#define FTC_CACHE__FAMILY_CLASS( x ) \
          ( (FTC_MruListClass)FTC_CACHE__GCACHE_CLASS( x )->family_class )


  /* convenience function; use it instead of FTC_Manager_Register_Cache */
  FT_LOCAL( FT_Error )
  FTC_GCache_New( FTC_Manager       manager,
                  FTC_GCacheClass   clazz,
                  FTC_GCache       *acache );

#ifndef FTC_INLINE
  FT_LOCAL( FT_Error )
  FTC_GCache_Lookup( FTC_GCache   cache,
                     FT_UInt32    hash,
                     FT_UInt      gindex,
                     FTC_GQuery   query,
                     FTC_Node    *anode );
#endif


  /* */


#define FTC_FAMILY_FREE( family, cache )                      \
          FTC_MruList_Remove( &FTC_GCACHE((cache))->families, \
                              (FTC_MruNode)(family) )


#ifdef FTC_INLINE

#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash,                \
                               gindex, query, node, error )                 \
  FT_BEGIN_STMNT                                                            \
    FTC_GCache               _gcache   = FTC_GCACHE( cache );               \
    FTC_GQuery               _gquery   = (FTC_GQuery)( query );             \
    FTC_MruNode_CompareFunc  _fcompare = (FTC_MruNode_CompareFunc)(famcmp); \
                                                                            \
                                                                            \
    _gquery->gindex = (gindex);                                             \
                                                                            \
    FTC_MRULIST_LOOKUP_CMP( &_gcache->families, _gquery, _fcompare,         \
                            _gquery->family, error );                       \
    if ( !error )                                                           \
    {                                                                       \
      FTC_Family  _gqfamily = _gquery->family;                              \
                                                                            \
                                                                            \
      _gqfamily->num_nodes++;                                               \
                                                                            \
      FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error );     \
                                                                            \
      if ( --_gqfamily->num_nodes == 0 )                                    \
        FTC_FAMILY_FREE( _gqfamily, _gcache );                              \
    }                                                                       \
  FT_END_STMNT
  /* */

#else /* !FTC_INLINE */

#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash,               \
                               gindex, query, node, error )                \
   FT_BEGIN_STMNT                                                          \
     error = FTC_GCache_Lookup( FTC_GCACHE( cache ), hash, gindex,         \
                                FTC_GQUERY( query ), (FTC_Node*)&(node) ); \
   FT_END_STMNT

#endif /* !FTC_INLINE */


FT_END_HEADER


#endif /* __FTCGLYPH_H__ */


/* END */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片app| 欧美韩国一区二区| 欧美日韩成人高清| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲午夜久久久久久久久电影网 | 日韩av一级片| 日韩av在线播放中文字幕| 丝袜亚洲另类欧美综合| 蜜臀精品久久久久久蜜臀| 免费观看在线色综合| 久久精品999| 国产精品91一区二区| 国产91精品在线观看| 成人av免费在线观看| 波多野结衣在线aⅴ中文字幕不卡| 成人一区二区三区中文字幕| 97久久久精品综合88久久| 在线观看一区二区视频| 欧美美女喷水视频| 欧美电视剧在线观看完整版| 久久一二三国产| 国产精品久久久久三级| 一区二区在线观看视频| 性做久久久久久久久| 精品影视av免费| 成人午夜激情在线| 在线观看欧美精品| 欧美一区二区三区白人| 国产欧美一区在线| 夜夜揉揉日日人人青青一国产精品| 亚洲大片精品永久免费| 激情伊人五月天久久综合| 成人精品免费看| 欧美性生活久久| 久久人人97超碰com| 亚洲激情五月婷婷| 久久成人免费电影| 成人av电影在线网| 欧美疯狂性受xxxxx喷水图片| 26uuu精品一区二区在线观看| 日韩一区在线播放| 蜜桃精品视频在线| caoporm超碰国产精品| 欧美精品在线一区二区三区| 久久久激情视频| 亚洲国产成人tv| 国产91精品露脸国语对白| 欧美日韩在线免费视频| 久久综合色之久久综合| 夜夜嗨av一区二区三区网页| 国产呦精品一区二区三区网站| 99久久综合狠狠综合久久| 678五月天丁香亚洲综合网| 国产精品久久久久久久久久免费看| 亚洲一卡二卡三卡四卡无卡久久| 国产一区二区不卡| 欧美三级在线播放| 图片区小说区国产精品视频| 国产精品99久久久久久久女警| 在线观看视频一区二区欧美日韩| 久久看人人爽人人| 日日欢夜夜爽一区| 99国产精品久久久久久久久久久| 欧美一区二区视频在线观看2020| 成人免费一区二区三区视频| 国产一区二区在线观看免费| 欧美日韩一区中文字幕| 国产精品美日韩| 久久国产精品无码网站| 欧美三级乱人伦电影| 一区在线观看视频| 国产精品18久久久久久久久| 4438成人网| 亚洲国产美国国产综合一区二区| 成人av免费在线观看| 久久久91精品国产一区二区三区| 日本强好片久久久久久aaa| 色综合欧美在线视频区| 中文字幕av一区二区三区| 精品一区二区三区日韩| 91麻豆精品国产综合久久久久久| 亚洲欧美二区三区| 成人动漫视频在线| 久久久久久久久岛国免费| 免费高清视频精品| 91精品国产免费| 天天操天天综合网| 欧美综合色免费| 亚洲免费在线播放| 91麻豆国产福利精品| 国产精品天美传媒| 国产成人av电影在线观看| 久久伊人蜜桃av一区二区| 美女视频黄久久| 欧美一区二区在线视频| 日日摸夜夜添夜夜添国产精品 | 亚洲精品国产精华液| 本田岬高潮一区二区三区| 中文字幕国产一区| 粉嫩一区二区三区在线看| 久久久国产精品不卡| 国内精品久久久久影院薰衣草| 欧美岛国在线观看| 国产又黄又大久久| 国产色婷婷亚洲99精品小说| 国产精品白丝av| 国产精品国产三级国产普通话三级 | 欧美本精品男人aⅴ天堂| 蜜桃久久精品一区二区| 精品国产精品一区二区夜夜嗨| 美女尤物国产一区| 欧美精品一区视频| 国产成人一区二区精品非洲| 国产精品视频你懂的| 91在线观看地址| 亚洲综合色噜噜狠狠| 欧美日韩国产bt| 另类综合日韩欧美亚洲| 久久亚洲精精品中文字幕早川悠里 | 亚洲一二三四久久| 欧美另类久久久品| 久久97超碰国产精品超碰| 久久这里只有精品首页| 菠萝蜜视频在线观看一区| 一区二区三区不卡视频 | 亚洲欧美激情插| 在线成人免费观看| 九九九精品视频| 中文字幕一区二区三区视频 | 久久久精品2019中文字幕之3| 成人av片在线观看| 亚洲成人av福利| 精品区一区二区| 成人免费视频一区| 亚洲亚洲人成综合网络| 精品久久久久99| 91在线无精精品入口| 偷拍一区二区三区| 国产欧美一二三区| 欧美性大战久久久| 国产麻豆精品在线观看| 亚洲欧美经典视频| 精品国产一区二区三区不卡 | 在线观看一区二区精品视频| 日本不卡一区二区| 国产精品久久久久影院亚瑟| 欧美午夜精品一区二区三区| 久久99精品视频| 有坂深雪av一区二区精品| 欧美一区二区三区免费在线看| 丁香六月综合激情| 三级亚洲高清视频| 日本一区二区不卡视频| 欧美美女一区二区| 成人av在线影院| 久久精品噜噜噜成人88aⅴ| 国产精品动漫网站| 日韩免费成人网| 在线国产电影不卡| 国产91精品精华液一区二区三区| 五月天丁香久久| 国产精品福利电影一区二区三区四区| 337p亚洲精品色噜噜噜| 成人白浆超碰人人人人| 蜜桃久久精品一区二区| 一区二区视频在线看| 国产视频亚洲色图| 欧美一区二区三区电影| 欧美在线一区二区| www.亚洲精品| 国产剧情一区在线| 日韩国产精品大片| 亚洲黄色小说网站| 国产精品美女久久久久久| 欧美精品一区二区三区久久久| 精品视频一区 二区 三区| 成人理论电影网| 国产在线不卡视频| 另类小说综合欧美亚洲| 香蕉加勒比综合久久| 亚洲欧美偷拍三级| 国产精品美女一区二区三区| 久久人人爽爽爽人久久久| 日韩一区二区视频| 欧美日韩激情一区二区| 色中色一区二区| 99视频精品在线| 成人毛片在线观看| 国产凹凸在线观看一区二区| 国产一区二区影院| 狠狠色丁香久久婷婷综| 久久黄色级2电影| 日韩电影免费在线观看网站| 亚洲图片欧美综合| 亚洲综合视频在线| 一区二区三区四区乱视频| 国产精品久久久久桃色tv| 中文字幕不卡一区| 日本一区二区久久| 国产精品灌醉下药二区|