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

📄 ftcbasic.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 2 页
字号:
    query.attrs.scaler.y_res = 0;    hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + gindex;#if 1  /* inlining is about 50% faster! */    FTC_GCACHE_LOOKUP_CMP( cache,                           ftc_basic_family_compare,                           FTC_GNode_Compare,                           hash, gindex,                           &query,                           node,                           error );#else    error = FTC_GCache_Lookup( FTC_GCACHE( cache ),                               hash, gindex,                               FTC_GQUERY( &query ),                               (FTC_Node*) &node );#endif    if ( !error )    {      *aglyph = FTC_INODE( node )->glyph;      if ( anode )      {        *anode = FTC_NODE( node );        FTC_NODE( node )->ref_count++;      }    }  Exit:    return error;  }#ifdef FT_CONFIG_OPTION_OLD_INTERNALS  /* yet another backwards-legacy structure */  typedef struct  FTC_OldImage_Desc_  {    FTC_FontRec  font;    FT_UInt      image_type;  } FTC_OldImage_Desc;#define FTC_OLD_IMAGE_FORMAT( x )  ( (x) & 7 )#define ftc_old_image_format_bitmap    0x0000#define ftc_old_image_format_outline   0x0001#define ftc_old_image_format_mask      0x000F#define ftc_old_image_flag_monochrome  0x0010#define ftc_old_image_flag_unhinted    0x0020#define ftc_old_image_flag_autohinted  0x0040#define ftc_old_image_flag_unscaled    0x0080#define ftc_old_image_flag_no_sbits    0x0100  /* monochrome bitmap */#define ftc_old_image_mono             ftc_old_image_format_bitmap   | \                                       ftc_old_image_flag_monochrome  /* anti-aliased bitmap */#define ftc_old_image_grays            ftc_old_image_format_bitmap  /* scaled outline */#define ftc_old_image_outline          ftc_old_image_format_outline  static void  ftc_image_type_from_old_desc( FTC_ImageType       typ,                                FTC_OldImage_Desc*  desc )  {    typ->face_id = desc->font.face_id;    typ->width   = desc->font.pix_width;    typ->height  = desc->font.pix_height;    /* convert image type flags to load flags */    {      FT_UInt  load_flags = FT_LOAD_DEFAULT;      FT_UInt  type       = desc->image_type;      /* determine load flags, depending on the font description's */      /* image type                                                */      if ( FTC_OLD_IMAGE_FORMAT( type ) == ftc_old_image_format_bitmap )      {        if ( type & ftc_old_image_flag_monochrome )          load_flags |= FT_LOAD_MONOCHROME;        /* disable embedded bitmaps loading if necessary */        if ( type & ftc_old_image_flag_no_sbits )          load_flags |= FT_LOAD_NO_BITMAP;      }      else      {        /* we want an outline, don't load embedded bitmaps */        load_flags |= FT_LOAD_NO_BITMAP;        if ( type & ftc_old_image_flag_unscaled )          load_flags |= FT_LOAD_NO_SCALE;      }      /* always render glyphs to bitmaps */      load_flags |= FT_LOAD_RENDER;      if ( type & ftc_old_image_flag_unhinted )        load_flags |= FT_LOAD_NO_HINTING;      if ( type & ftc_old_image_flag_autohinted )        load_flags |= FT_LOAD_FORCE_AUTOHINT;      typ->flags = load_flags;    }  }  FT_EXPORT( FT_Error )  FTC_Image_Cache_New( FTC_Manager      manager,                       FTC_ImageCache  *acache );  FT_EXPORT( FT_Error )  FTC_Image_Cache_Lookup( FTC_ImageCache      icache,                          FTC_OldImage_Desc*  desc,                          FT_UInt             gindex,                          FT_Glyph           *aglyph );  FT_EXPORT_DEF( FT_Error )  FTC_Image_Cache_New( FTC_Manager      manager,                       FTC_ImageCache  *acache )  {    return FTC_ImageCache_New( manager, (FTC_ImageCache*)acache );  }  FT_EXPORT_DEF( FT_Error )  FTC_Image_Cache_Lookup( FTC_ImageCache      icache,                          FTC_OldImage_Desc*  desc,                          FT_UInt             gindex,                          FT_Glyph           *aglyph )  {    FTC_ImageTypeRec  type0;    if ( !desc )      return FTC_Err_Invalid_Argument;    ftc_image_type_from_old_desc( &type0, desc );    return FTC_ImageCache_Lookup( (FTC_ImageCache)icache,                                   &type0,                                   gindex,                                   aglyph,                                   NULL );  }#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ /*  *  * basic small bitmap cache  *  */  FT_CALLBACK_TABLE_DEF  const FTC_SFamilyClassRec  ftc_basic_sbit_family_class =  {    {      sizeof( FTC_BasicFamilyRec ),      ftc_basic_family_compare,      ftc_basic_family_init,      0,                            /* FTC_MruNode_ResetFunc */      0                             /* FTC_MruNode_DoneFunc  */    },    ftc_basic_family_get_count,    ftc_basic_family_load_bitmap  };  FT_CALLBACK_TABLE_DEF  const FTC_GCacheClassRec  ftc_basic_sbit_cache_class =  {    {      ftc_snode_new,      ftc_snode_weight,      ftc_snode_compare,      ftc_basic_gnode_compare_faceid,      ftc_snode_free,      sizeof ( FTC_GCacheRec ),      ftc_gcache_init,      ftc_gcache_done    },    (FTC_MruListClass)&ftc_basic_sbit_family_class  };  /* documentation is in ftcache.h */  FT_EXPORT_DEF( FT_Error )  FTC_SBitCache_New( FTC_Manager     manager,                     FTC_SBitCache  *acache )  {    return FTC_GCache_New( manager, &ftc_basic_sbit_cache_class,                           (FTC_GCache*)acache );  }  /* documentation is in ftcache.h */  FT_EXPORT_DEF( FT_Error )  FTC_SBitCache_Lookup( FTC_SBitCache  cache,                        FTC_ImageType  type,                        FT_UInt        gindex,                        FTC_SBit      *ansbit,                        FTC_Node      *anode )  {    FT_Error           error;    FTC_BasicQueryRec  query;    FTC_SNode          node = 0; /* make compiler happy */    FT_UInt32          hash;    if ( anode )      *anode = NULL;    /* other argument checks delayed to FTC_Cache_Lookup */    if ( !ansbit )      return FTC_Err_Invalid_Argument;    *ansbit = NULL;#ifdef FT_CONFIG_OPTION_OLD_INTERNALS    /*  This one is a major hack used to detect whether we are passed a     *  regular FTC_ImageType handle, or a legacy FTC_OldImageDesc one.     */    if ( type->width >= 0x10000 )    {      FTC_OldImageDesc  desc = (FTC_OldImageDesc)type;      query.attrs.scaler.face_id = desc->font.face_id;      query.attrs.scaler.width   = desc->font.pix_width;      query.attrs.scaler.height  = desc->font.pix_height;      query.attrs.load_flags     = desc->flags;    }    else#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */    {      query.attrs.scaler.face_id = type->face_id;      query.attrs.scaler.width   = type->width;      query.attrs.scaler.height  = type->height;      query.attrs.load_flags     = type->flags;    }    query.attrs.scaler.pixel = 1;    query.attrs.scaler.x_res = 0;  /* make compilers happy */    query.attrs.scaler.y_res = 0;    /* beware, the hash must be the same for all glyph ranges! */    hash = FTC_BASIC_ATTR_HASH( &query.attrs ) +           gindex / FTC_SBIT_ITEMS_PER_NODE;#if 1  /* inlining is about 50% faster! */    FTC_GCACHE_LOOKUP_CMP( cache,                           ftc_basic_family_compare,                           FTC_SNode_Compare,                           hash, gindex,                           &query,                           node,                           error );#else    error = FTC_GCache_Lookup( FTC_GCACHE( cache ),                               hash,                               gindex,                               FTC_GQUERY( &query ),                               (FTC_Node*)&node );#endif    if ( error )      goto Exit;    *ansbit = node->sbits + ( gindex - FTC_GNODE( node )->gindex );    if ( anode )    {      *anode = FTC_NODE( node );      FTC_NODE( node )->ref_count++;    }  Exit:    return error;  }#ifdef FT_CONFIG_OPTION_OLD_INTERNALS  FT_EXPORT( FT_Error )  FTC_SBit_Cache_New( FTC_Manager     manager,                      FTC_SBitCache  *acache );  FT_EXPORT( FT_Error )  FTC_SBit_Cache_Lookup( FTC_SBitCache       cache,                         FTC_OldImage_Desc*  desc,                         FT_UInt             gindex,                         FTC_SBit           *ansbit );  FT_EXPORT_DEF( FT_Error )  FTC_SBit_Cache_New( FTC_Manager     manager,                      FTC_SBitCache  *acache )  {    return FTC_SBitCache_New( manager, (FTC_SBitCache*)acache );  }  FT_EXPORT_DEF( FT_Error )  FTC_SBit_Cache_Lookup( FTC_SBitCache       cache,                         FTC_OldImage_Desc*  desc,                         FT_UInt             gindex,                         FTC_SBit           *ansbit )  {    FTC_ImageTypeRec  type0;    if ( !desc )      return FT_Err_Invalid_Argument;    ftc_image_type_from_old_desc( &type0, desc );    return FTC_SBitCache_Lookup( (FTC_SBitCache)cache,                                  &type0,                                  gindex,                                  ansbit,                                  NULL );  }#endif /* FT_CONFIG_OPTION_OLD_INTERNALS *//* END */

⌨️ 快捷键说明

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