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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ftcmanag.c

?? 智能設備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************/
/*                                                                         */
/*  ftcmanag.c                                                             */
/*                                                                         */
/*    FreeType Cache Manager (body).                                       */
/*                                                                         */
/*  Copyright 2000-2001, 2002, 2003, 2004, 2005, 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.                                        */
/*                                                                         */
/***************************************************************************/


#include <ft2build.h>
#include FT_CACHE_H
#include "ftcmanag.h"
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DEBUG_H
#include FT_SIZES_H

#include "ftccback.h"
#include "ftcerror.h"


#undef  FT_COMPONENT
#define FT_COMPONENT  trace_cache

#define FTC_LRU_GET_MANAGER( lru )  ( (FTC_Manager)(lru)->user_data )


  static FT_Error
  ftc_scaler_lookup_size( FTC_Manager  manager,
                          FTC_Scaler   scaler,
                          FT_Size     *asize )
  {
    FT_Face   face;
    FT_Size   size = NULL;
    FT_Error  error;


    error = FTC_Manager_LookupFace( manager, scaler->face_id, &face );
    if ( error )
      goto Exit;

    error = FT_New_Size( face, &size );
    if ( error )
      goto Exit;

    FT_Activate_Size( size );

    if ( scaler->pixel )
      error = FT_Set_Pixel_Sizes( face, scaler->width, scaler->height );
    else
      error = FT_Set_Char_Size( face, scaler->width, scaler->height,
                                scaler->x_res, scaler->y_res );
    if ( error )
    {
      FT_Done_Size( size );
      size = NULL;
    }

  Exit:
    *asize = size;
    return error;
  }


  typedef struct  FTC_SizeNodeRec_
  {
    FTC_MruNodeRec  node;
    FT_Size         size;
    FTC_ScalerRec   scaler;

  } FTC_SizeNodeRec, *FTC_SizeNode;


  FT_CALLBACK_DEF( void )
  ftc_size_node_done( FTC_MruNode  ftcnode,
                      FT_Pointer   data )
  {
    FTC_SizeNode  node = (FTC_SizeNode)ftcnode;
    FT_Size       size = node->size;
    FT_UNUSED( data );


    if ( size )
      FT_Done_Size( size );
  }


  FT_CALLBACK_DEF( FT_Bool )
  ftc_size_node_compare( FTC_MruNode  ftcnode,
                         FT_Pointer   ftcscaler )
  {
    FTC_SizeNode  node    = (FTC_SizeNode)ftcnode;
    FTC_Scaler    scaler  = (FTC_Scaler)ftcscaler;
    FTC_Scaler    scaler0 = &node->scaler;


    if ( FTC_SCALER_COMPARE( scaler0, scaler ) )
    {
      FT_Activate_Size( node->size );
      return 1;
    }
    return 0;
  }


  FT_CALLBACK_DEF( FT_Error )
  ftc_size_node_init( FTC_MruNode  ftcnode,
                      FT_Pointer   ftcscaler,
                      FT_Pointer   ftcmanager )
  {
    FTC_SizeNode  node    = (FTC_SizeNode)ftcnode;
    FTC_Scaler    scaler  = (FTC_Scaler)ftcscaler;
    FTC_Manager   manager = (FTC_Manager)ftcmanager;


    node->scaler = scaler[0];

    return ftc_scaler_lookup_size( manager, scaler, &node->size );
  }


  FT_CALLBACK_DEF( FT_Error )
  ftc_size_node_reset( FTC_MruNode  ftcnode,
                       FT_Pointer   ftcscaler,
                       FT_Pointer   ftcmanager )
  {
    FTC_SizeNode  node    = (FTC_SizeNode)ftcnode;
    FTC_Scaler    scaler  = (FTC_Scaler)ftcscaler;
    FTC_Manager   manager = (FTC_Manager)ftcmanager;


    FT_Done_Size( node->size );

    node->scaler = scaler[0];

    return ftc_scaler_lookup_size( manager, scaler, &node->size );
  }


  FT_CALLBACK_TABLE_DEF
  const FTC_MruListClassRec  ftc_size_list_class =
  {
    sizeof ( FTC_SizeNodeRec ),
    ftc_size_node_compare,
    ftc_size_node_init,
    ftc_size_node_reset,
    ftc_size_node_done
  };


  /* helper function used by ftc_face_node_done */
  static FT_Bool
  ftc_size_node_compare_faceid( FTC_MruNode  ftcnode,
                                FT_Pointer   ftcface_id )
  {
    FTC_SizeNode  node    = (FTC_SizeNode)ftcnode;
    FTC_FaceID    face_id = (FTC_FaceID)ftcface_id;


    return FT_BOOL( node->scaler.face_id == face_id );
  }


  /* documentation is in ftcache.h */

  FT_EXPORT_DEF( FT_Error )
  FTC_Manager_LookupSize( FTC_Manager  manager,
                          FTC_Scaler   scaler,
                          FT_Size     *asize )
  {
    FT_Error      error;
    FTC_SizeNode  node;


    if ( asize == NULL )
      return FTC_Err_Bad_Argument;

    *asize = NULL;

    if ( !manager )
      return FTC_Err_Invalid_Cache_Handle;

#ifdef FTC_INLINE

    FTC_MRULIST_LOOKUP_CMP( &manager->sizes, scaler, ftc_size_node_compare,
                            node, error );

#else
    error = FTC_MruList_Lookup( &manager->sizes, scaler, (FTC_MruNode*)&node );
#endif

    if ( !error )
      *asize = node->size;

    return error;
  }


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                    FACE MRU IMPLEMENTATION                    *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  typedef struct  FTC_FaceNodeRec_
  {
    FTC_MruNodeRec  node;
    FTC_FaceID      face_id;
    FT_Face         face;

  } FTC_FaceNodeRec, *FTC_FaceNode;


  FT_CALLBACK_DEF( FT_Error )
  ftc_face_node_init( FTC_MruNode  ftcnode,
                      FT_Pointer   ftcface_id,
                      FT_Pointer   ftcmanager )
  {
    FTC_FaceNode  node    = (FTC_FaceNode)ftcnode;
    FTC_FaceID    face_id = (FTC_FaceID)ftcface_id;
    FTC_Manager   manager = (FTC_Manager)ftcmanager;
    FT_Error      error;


    node->face_id = face_id;

    error = manager->request_face( face_id,
                                   manager->library,
                                   manager->request_data,
                                   &node->face );
    if ( !error )
    {
      /* destroy initial size object; it will be re-created later */
      if ( node->face->size )
        FT_Done_Size( node->face->size );
    }

    return error;
  }


  FT_CALLBACK_DEF( void )
  ftc_face_node_done( FTC_MruNode  ftcnode,
                      FT_Pointer   ftcmanager )
  {
    FTC_FaceNode  node    = (FTC_FaceNode)ftcnode;
    FTC_Manager   manager = (FTC_Manager)ftcmanager;


    /* we must begin by removing all scalers for the target face */
    /* from the manager's list                                   */
    FTC_MruList_RemoveSelection( &manager->sizes,
                                 ftc_size_node_compare_faceid,
                                 node->face_id );

    /* all right, we can discard the face now */
    FT_Done_Face( node->face );
    node->face    = NULL;
    node->face_id = NULL;
  }


  FT_CALLBACK_DEF( FT_Bool )
  ftc_face_node_compare( FTC_MruNode  ftcnode,
                         FT_Pointer   ftcface_id )
  {
    FTC_FaceNode  node    = (FTC_FaceNode)ftcnode;
    FTC_FaceID    face_id = (FTC_FaceID)ftcface_id;


    return FT_BOOL( node->face_id == face_id );
  }


  FT_CALLBACK_TABLE_DEF
  const FTC_MruListClassRec  ftc_face_list_class =
  {
    sizeof ( FTC_FaceNodeRec),

    ftc_face_node_compare,
    ftc_face_node_init,
    0,                          /* FTC_MruNode_ResetFunc */
    ftc_face_node_done
  };


  /* documentation is in ftcache.h */

  FT_EXPORT_DEF( FT_Error )
  FTC_Manager_LookupFace( FTC_Manager  manager,
                          FTC_FaceID   face_id,
                          FT_Face     *aface )
  {
    FT_Error      error;
    FTC_FaceNode  node;


    if ( aface == NULL )
      return FTC_Err_Bad_Argument;

    *aface = NULL;

    if ( !manager )
      return FTC_Err_Invalid_Cache_Handle;

    /* we break encapsulation for the sake of speed */
#ifdef FTC_INLINE

    FTC_MRULIST_LOOKUP_CMP( &manager->faces, face_id, ftc_face_node_compare,
                            node, error );

#else
    error = FTC_MruList_Lookup( &manager->faces, face_id, (FTC_MruNode*)&node );
#endif

    if ( !error )
      *aface = node->face;

    return error;
  }


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                    CACHE MANAGER ROUTINES                     *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/


  /* documentation is in ftcache.h */

  FT_EXPORT_DEF( FT_Error )
  FTC_Manager_New( FT_Library          library,
                   FT_UInt             max_faces,
                   FT_UInt             max_sizes,
                   FT_ULong            max_bytes,
                   FTC_Face_Requester  requester,
                   FT_Pointer          req_data,
                   FTC_Manager        *amanager )
  {
    FT_Error     error;
    FT_Memory    memory;
    FTC_Manager  manager = 0;


    if ( !library )
      return FTC_Err_Invalid_Library_Handle;

    memory = library->memory;

    if ( FT_NEW( manager ) )
      goto Exit;

    if ( max_faces == 0 )
      max_faces = FTC_MAX_FACES_DEFAULT;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区开放时间 | 国产区在线观看成人精品| 欧美性大战xxxxx久久久| 一本到不卡免费一区二区| 色婷婷综合视频在线观看| 精品成人一区二区三区四区| 91精品国产一区二区三区香蕉| 欧美日韩亚洲丝袜制服| 欧美一区二区三区白人| 一区二区三区资源| 亚洲va在线va天堂| 麻豆91在线播放免费| 经典一区二区三区| 国产精品66部| 色综合色综合色综合| 久久精品视频在线看| 日韩毛片在线免费观看| 亚洲成年人影院| 色av成人天堂桃色av| **欧美大码日韩| 亚洲第一主播视频| 99re热视频精品| 欧美影院午夜播放| 国产精品久久久久久久久免费相片| 亚洲一区二区三区四区在线观看 | 一本一本大道香蕉久在线精品 | 在线精品视频小说1| 欧美日韩国产中文| 久久伊99综合婷婷久久伊| 国产精品国产三级国产有无不卡| 激情综合网最新| 精品乱人伦小说| 亚洲另类春色校园小说| 91最新地址在线播放| 亚洲国产高清不卡| 天天色天天爱天天射综合| 国产成人av在线影院| 欧美天天综合网| 亚洲一区二区视频在线| 欧美日韩国产天堂| 石原莉奈一区二区三区在线观看| 国产精品69久久久久水密桃| 久久久亚洲国产美女国产盗摄 | www国产精品av| 国产一区免费电影| 欧美日韩免费一区二区三区视频| 亚洲黄色在线视频| 欧美三级蜜桃2在线观看| 午夜影院在线观看欧美| 欧美人狂配大交3d怪物一区| 爽好久久久欧美精品| 91精品国产色综合久久ai换脸 | 午夜国产不卡在线观看视频| 在线成人高清不卡| 亚洲欧洲一区二区在线播放| 91在线免费播放| 一区二区三区欧美亚洲| 欧美日精品一区视频| 天天影视色香欲综合网老头| 欧美一级高清大全免费观看| 亚洲一二三专区| 欧美精品丝袜久久久中文字幕| 青青草国产精品亚洲专区无| 欧美日韩情趣电影| 麻豆精品一区二区| 久久精子c满五个校花| aaa欧美色吧激情视频| 国产日韩在线不卡| 99re8在线精品视频免费播放| 性感美女久久精品| 欧美mv和日韩mv的网站| 大美女一区二区三区| 精品999久久久| av在线综合网| 亚洲高清视频中文字幕| 在线观看日韩一区| 蓝色福利精品导航| 精品成a人在线观看| 91丨国产丨九色丨pron| 欧美激情自拍偷拍| 精品视频1区2区| 国产一区二区三区免费播放| 亚洲视频一区在线观看| 欧美一区二区三区在线| 国产成人av福利| 精品国产乱码久久久久久久久 | 99久久婷婷国产综合精品电影 | 日韩中文字幕av电影| 久久蜜桃av一区二区天堂| 91在线一区二区三区| 日产精品久久久久久久性色| 欧美日韩一区二区电影| 国精产品一区一区三区mba桃花 | |精品福利一区二区三区| 欧美卡1卡2卡| 成人a区在线观看| 中文字幕亚洲在| 欧美妇女性影城| 91在线高清观看| 久久99精品国产麻豆婷婷| 亚洲欧美激情插| 91国产精品成人| 国产精品一级片| 天堂久久久久va久久久久| 欧美国产激情一区二区三区蜜月 | 国产成人精品三级麻豆| 天天色天天操综合| 亚洲三级在线看| 亚洲精品一区二区三区精华液| 色天天综合久久久久综合片| 国产在线精品一区二区夜色| 亚洲mv大片欧洲mv大片精品| 中文字幕不卡在线| 精品三级在线看| 欧美精品视频www在线观看| av亚洲精华国产精华| 精久久久久久久久久久| 丝袜脚交一区二区| 亚洲伦理在线免费看| 国产日产欧美一区二区三区| 欧美一级片在线看| 欧亚一区二区三区| 99精品热视频| 国产精品123| 久久成人免费网站| 亚洲午夜精品在线| 亚洲人成网站色在线观看| 国产调教视频一区| 精品精品国产高清一毛片一天堂| 欧美区视频在线观看| 色网站国产精品| 99国产欧美另类久久久精品| 国产裸体歌舞团一区二区| 免费在线看成人av| 亚洲一二三四在线观看| 一区二区三区蜜桃网| 18涩涩午夜精品.www| 国产精品久久午夜| 国产精品天天看| 欧美色综合天天久久综合精品| 不卡免费追剧大全电视剧网站| 国产最新精品免费| 久久爱www久久做| 精品一区二区在线视频| 日韩不卡一区二区三区| 婷婷激情综合网| 亚洲成人www| 午夜精品久久久久久久久久久| 夜夜操天天操亚洲| 一区二区三区在线观看视频| 亚洲欧洲一区二区在线播放| 国产精品成人一区二区艾草 | wwwwxxxxx欧美| 日韩精品一区二区三区三区免费| 不卡电影免费在线播放一区| 国产激情91久久精品导航 | 亚洲bdsm女犯bdsm网站| 亚洲福利电影网| 亚洲va欧美va天堂v国产综合| 亚洲一区视频在线观看视频| 一区二区三区四区中文字幕| 一区二区三区在线视频免费| 亚洲永久免费视频| 亚洲午夜羞羞片| 日韩中文欧美在线| 美女爽到高潮91| 精品一区二区精品| 国产在线精品一区二区夜色| 国产精品 欧美精品| 粉嫩av一区二区三区粉嫩| 成人在线综合网| 99综合影院在线| 色屁屁一区二区| 欧美日韩国产a| 欧美tk—视频vk| 国产校园另类小说区| 国产精品你懂的在线| 亚洲理论在线观看| 日日夜夜一区二区| 精品制服美女久久| 国产激情视频一区二区三区欧美 | 色94色欧美sute亚洲线路一久| 欧美在线免费播放| 欧美老年两性高潮| 欧美白人最猛性xxxxx69交| 欧美极品少妇xxxxⅹ高跟鞋| 日韩美女久久久| 日韩 欧美一区二区三区| 国产在线精品一区二区三区不卡| 成人性生交大片免费看视频在线| 91在线云播放| 日韩一级片在线观看| 久久久99精品免费观看| 亚洲美女精品一区| 日韩成人一级大片| 国产91在线观看| 欧美系列一区二区| 欧美精品一区二区三区在线 | 欧美精彩视频一区二区三区| 亚洲乱码一区二区三区在线观看|