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

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

?? ttinterp.c

?? a very goog book
?? C
?? 第 1 頁 / 共 5 頁
字號:
/***************************************************************************//*                                                                         *//*  ttinterp.c                                                             *//*                                                                         *//*    TrueType bytecode interpreter (body).                                *//*                                                                         *//*  Copyright 1996-2001, 2002 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_INTERNAL_DEBUG_H#include FT_INTERNAL_CALC_H#include FT_TRIGONOMETRY_H#include FT_SYSTEM_H#include "ttinterp.h"#include "tterrors.h"#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER#define TT_MULFIX  FT_MulFix#define TT_MULDIV  FT_MulDiv#define TT_INT64   FT_Int64  /*************************************************************************/  /*                                                                       */  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */  /* messages during execution.                                            */  /*                                                                       */#undef  FT_COMPONENT#define FT_COMPONENT  trace_ttinterp#undef  NO_APPLE_PATENT#define APPLE_THRESHOLD  0x4000000L  /*************************************************************************/  /*                                                                       */  /* In order to detect infinite loops in the code, we set up a counter    */  /* within the run loop.  A single stroke of interpretation is now        */  /* limitet to a maximal number of opcodes defined below.                 */  /*                                                                       */#define MAX_RUNNABLE_OPCODES  1000000L  /*************************************************************************/  /*                                                                       */  /* There are two kinds of implementations:                               */  /*                                                                       */  /* a. static implementation                                              */  /*                                                                       */  /*    The current execution context is a static variable, which fields   */  /*    are accessed directly by the interpreter during execution.  The    */  /*    context is named `cur'.                                            */  /*                                                                       */  /*    This version is non-reentrant, of course.                          */  /*                                                                       */  /* b. indirect implementation                                            */  /*                                                                       */  /*    The current execution context is passed to _each_ function as its  */  /*    first argument, and each field is thus accessed indirectly.        */  /*                                                                       */  /*    This version is fully re-entrant.                                  */  /*                                                                       */  /* The idea is that an indirect implementation may be slower to execute  */  /* on low-end processors that are used in some systems (like 386s or     */  /* even 486s).                                                           */  /*                                                                       */  /* As a consequence, the indirect implementation is now the default, as  */  /* its performance costs can be considered negligible in our context.    */  /* Note, however, that we kept the same source with macros because:      */  /*                                                                       */  /* - The code is kept very close in design to the Pascal code used for   */  /*   development.                                                        */  /*                                                                       */  /* - It's much more readable that way!                                   */  /*                                                                       */  /* - It's still open to experimentation and tuning.                      */  /*                                                                       */  /*************************************************************************/#ifndef TT_CONFIG_OPTION_STATIC_INTERPRETER     /* indirect implementation */#define CUR  (*exc)                             /* see ttobjs.h */#else                                           /* static implementation */#define CUR  cur  static  TT_ExecContextRec  cur;   /* static exec. context variable */  /* apparently, we have a _lot_ of direct indexing when accessing  */  /* the static `cur', which makes the code bigger (due to all the  */  /* four bytes addresses).                                         */#endif /* TT_CONFIG_OPTION_STATIC_INTERPRETER */  /*************************************************************************/  /*                                                                       */  /* The instruction argument stack.                                       */  /*                                                                       */#define INS_ARG  EXEC_OP_ FT_Long*  args    /* see ttobjs.h for EXEC_OP_ */  /*************************************************************************/  /*                                                                       */  /* This macro is used whenever `exec' is unused in a function, to avoid  */  /* stupid warnings from pedantic compilers.                              */  /*                                                                       */#define FT_UNUSED_EXEC  FT_UNUSED( CUR )  /*************************************************************************/  /*                                                                       */  /* This macro is used whenever `args' is unused in a function, to avoid  */  /* stupid warnings from pedantic compilers.                              */  /*                                                                       */#define FT_UNUSED_ARG  FT_UNUSED_EXEC; FT_UNUSED( args )  /*************************************************************************/  /*                                                                       */  /* The following macros hide the use of EXEC_ARG and EXEC_ARG_ to        */  /* increase readabilty of the code.                                      */  /*                                                                       */  /*************************************************************************/#define SKIP_Code() \          SkipCode( EXEC_ARG )#define GET_ShortIns() \          GetShortIns( EXEC_ARG )#define NORMalize( x, y, v ) \          Normalize( EXEC_ARG_ x, y, v )#define SET_SuperRound( scale, flags ) \          SetSuperRound( EXEC_ARG_ scale, flags )#define ROUND_None( d, c ) \          Round_None( EXEC_ARG_ d, c )#define INS_Goto_CodeRange( range, ip ) \          Ins_Goto_CodeRange( EXEC_ARG_ range, ip )#define CUR_Func_project( x, y ) \          CUR.func_project( EXEC_ARG_ x, y )#define CUR_Func_move( z, p, d ) \          CUR.func_move( EXEC_ARG_ z, p, d )#define CUR_Func_dualproj( x, y ) \          CUR.func_dualproj( EXEC_ARG_ x, y )#define CUR_Func_freeProj( x, y ) \          CUR.func_freeProj( EXEC_ARG_ x, y )#define CUR_Func_round( d, c ) \          CUR.func_round( EXEC_ARG_ d, c )#define CUR_Func_read_cvt( index ) \          CUR.func_read_cvt( EXEC_ARG_ index )#define CUR_Func_write_cvt( index, val ) \          CUR.func_write_cvt( EXEC_ARG_ index, val )#define CUR_Func_move_cvt( index, val ) \          CUR.func_move_cvt( EXEC_ARG_ index, val )#define CURRENT_Ratio() \          Current_Ratio( EXEC_ARG )#define CURRENT_Ppem() \          Current_Ppem( EXEC_ARG )#define CUR_Ppem() \          Cur_PPEM( EXEC_ARG )#define INS_SxVTL( a, b, c, d ) \          Ins_SxVTL( EXEC_ARG_ a, b, c, d )#define COMPUTE_Funcs() \          Compute_Funcs( EXEC_ARG )#define COMPUTE_Round( a ) \          Compute_Round( EXEC_ARG_ a )#define COMPUTE_Point_Displacement( a, b, c, d ) \          Compute_Point_Displacement( EXEC_ARG_ a, b, c, d )#define MOVE_Zp2_Point( a, b, c, t ) \          Move_Zp2_Point( EXEC_ARG_ a, b, c, t )  /*************************************************************************/  /*                                                                       */  /* Instruction dispatch function, as used by the interpreter.            */  /*                                                                       */  typedef void  (*TInstruction_Function)( INS_ARG );  /*************************************************************************/  /*                                                                       */  /* A simple bounds-checking macro.                                       */  /*                                                                       */#define BOUNDS( x, n )  ( (FT_UInt)(x) >= (FT_UInt)(n) )#undef  SUCCESS#define SUCCESS  0#undef  FAILURE#define FAILURE  1  /*************************************************************************/  /*                                                                       */  /*                        CODERANGE FUNCTIONS                            */  /*                                                                       */  /*************************************************************************/  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Goto_CodeRange                                                  */  /*                                                                       */  /* <Description>                                                         */  /*    Switches to a new code range (updates the code related elements in */  /*    `exec', and `IP').                                                 */  /*                                                                       */  /* <Input>                                                               */  /*    range :: The new execution code range.                             */  /*                                                                       */  /*    IP    :: The new IP in the new code range.                         */  /*                                                                       */  /* <InOut>                                                               */  /*    exec  :: The target execution context.                             */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  TT_Goto_CodeRange( TT_ExecContext  exec,                     FT_Int          range,                     FT_Long         IP )  {    TT_CodeRange*  coderange;    FT_ASSERT( range >= 1 && range <= 3 );    coderange = &exec->codeRangeTable[range - 1];    FT_ASSERT( coderange->base != NULL );    /* NOTE: Because the last instruction of a program may be a CALL */    /*       which will return to the first byte *after* the code    */    /*       range, we test for IP <= Size instead of IP < Size.     */    /*                                                               */    FT_ASSERT( (FT_ULong)IP <= coderange->size );    exec->code     = coderange->base;    exec->codeSize = coderange->size;    exec->IP       = IP;    exec->curRange = range;    return TT_Err_Ok;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Set_CodeRange                                                   */  /*                                                                       */  /* <Description>                                                         */  /*    Sets a code range.                                                 */  /*                                                                       */  /* <Input>                                                               */  /*    range  :: The code range index.                                    */  /*                                                                       */  /*    base   :: The new code base.                                       */  /*                                                                       */  /*    length :: The range size in bytes.                                 */  /*                                                                       */  /* <InOut>                                                               */  /*    exec   :: The target execution context.                            */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  TT_Set_CodeRange( TT_ExecContext  exec,                    FT_Int          range,                    void*           base,                    FT_Long         length )  {    FT_ASSERT( range >= 1 && range <= 3 );    exec->codeRangeTable[range - 1].base = (FT_Byte*)base;    exec->codeRangeTable[range - 1].size = length;    return TT_Err_Ok;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    TT_Clear_CodeRange                                                 */  /*                                                                       */  /* <Description>                                                         */  /*    Clears a code range.                                               */  /*                                                                       */  /* <Input>                                                               */  /*    range :: The code range index.                                     */  /*                                                                       */  /* <InOut>                                                               */  /*    exec  :: The target execution context.                             */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  /* <Note>                                                                */  /*    Does not set the Error variable.                                   */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情在线免费观看| 天天色天天爱天天射综合| 精品国产精品一区二区夜夜嗨 | 日韩视频一区二区在线观看| 欧美视频完全免费看| 在线免费观看日本一区| 在线观看三级视频欧美| 欧美性做爰猛烈叫床潮| 欧美系列日韩一区| 69堂国产成人免费视频| 91精品久久久久久蜜臀| 日韩片之四级片| 久久综合视频网| 国产欧美日本一区二区三区| 国产一区啦啦啦在线观看| 久久丁香综合五月国产三级网站 | 欧美日韩一区二区三区在线看| 国产精品久线在线观看| 亚洲欧洲www| 一区二区三区欧美| 日韩中文字幕av电影| 美女爽到高潮91| 国产成人综合亚洲网站| 92精品国产成人观看免费| 欧洲亚洲精品在线| 欧美乱妇15p| 欧美精品一区二区蜜臀亚洲| 国产欧美精品区一区二区三区 | 免费成人av在线播放| 经典一区二区三区| 懂色av一区二区三区免费观看| 91色porny蝌蚪| 91精品国产麻豆国产自产在线| 亚洲精品一线二线三线无人区| 中文字幕巨乱亚洲| 亚洲图片一区二区| 免费国产亚洲视频| 成人美女视频在线观看18| 日本韩国精品一区二区在线观看| 欧美日韩另类国产亚洲欧美一级| 精品电影一区二区三区| 国产精品超碰97尤物18| 亚洲成av人影院| 狠狠色综合日日| 色八戒一区二区三区| 日韩亚洲欧美成人一区| 国产精品三级视频| 日韩精品视频网站| 成年人午夜久久久| 91精品国产高清一区二区三区蜜臀| 国产亚洲欧美一区在线观看| 亚洲国产日韩a在线播放| 黑人巨大精品欧美一区| 色诱亚洲精品久久久久久| 欧美一区二区免费| 亚洲精品欧美激情| 国产日产欧美一区| 亚洲电影中文字幕在线观看| 国v精品久久久网| 欧美少妇xxx| 国产精品久久毛片| 蜜臀a∨国产成人精品| 99视频一区二区| 中文字幕第一区第二区| 日韩国产欧美在线观看| 在线视频国内自拍亚洲视频| 亚洲精品一区二区三区四区高清| 午夜精品久久久| 综合色中文字幕| 韩国欧美一区二区| 欧美三级视频在线播放| 中文字幕一区在线观看| 久久99国产精品麻豆| 欧美日韩一卡二卡三卡| 亚洲人吸女人奶水| 成人涩涩免费视频| 精品久久一区二区三区| 日韩国产欧美在线播放| 欧美影院一区二区三区| 亚洲精品写真福利| 成人app网站| 国产日韩欧美制服另类| 久久精品国产亚洲a| 欧美三电影在线| 亚洲激情图片qvod| 99re亚洲国产精品| 国产精品国产精品国产专区不片| 秋霞午夜鲁丝一区二区老狼| 日本韩国欧美三级| 亚洲男女一区二区三区| 波多野结衣在线一区| 欧美激情综合五月色丁香小说| 国产中文一区二区三区| 精品国产免费视频| 无吗不卡中文字幕| 在线不卡免费av| 最新成人av在线| 99国产精品视频免费观看| 中文字幕在线不卡视频| 成人av影视在线观看| 中文字幕在线不卡一区二区三区| 成人一二三区视频| 国产精品免费久久| 国产精品1区2区| 国产天堂亚洲国产碰碰| 国产精华液一区二区三区| 国产日韩欧美电影| 香蕉成人伊视频在线观看| 欧美一级欧美三级在线观看| 欧美高清www午色夜在线视频| 美女一区二区三区| 中文字幕亚洲一区二区av在线| 在线区一区二视频| 久久草av在线| 一区二区视频在线看| 91精品中文字幕一区二区三区| 久久成人免费电影| 亚洲国产日韩一区二区| 亚洲欧美中日韩| 欧美日免费三级在线| 亚洲成人动漫一区| 欧美日韩国产系列| 久久99日本精品| 国产欧美日韩视频在线观看| 成人av电影在线网| 成人深夜在线观看| 亚洲精品中文在线观看| 欧美日本在线一区| 麻豆精品在线视频| 中文字幕精品三区| 欧美在线一二三| 视频一区欧美精品| 久久久午夜电影| 色综合激情五月| 日产欧产美韩系列久久99| 久久久久九九视频| 91蝌蚪porny九色| 日韩av中文字幕一区二区| 国产视频一区二区三区在线观看| 91亚洲资源网| 琪琪一区二区三区| 国产精品美女久久久久久久久久久| 色94色欧美sute亚洲线路二| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久久麻豆| 色吧成人激情小说| 国内外精品视频| 一区二区免费看| 久久久蜜桃精品| 欧美伊人久久久久久午夜久久久久| 久久国产人妖系列| 亚洲欧美日韩国产综合在线| 欧美第一区第二区| 日本久久一区二区三区| 国产一区二区三区免费| 亚洲一卡二卡三卡四卡无卡久久 | 欧美性猛交xxxx乱大交退制版| 日韩片之四级片| 国产色一区二区| 成人午夜精品在线| 欧美一区二区三区爱爱| 2020国产成人综合网| 国产精品拍天天在线| 综合亚洲深深色噜噜狠狠网站| 一区二区三区国产精华| 日韩成人一区二区三区在线观看| 国产精品夜夜嗨| 在线免费观看不卡av| 精品成人a区在线观看| 中文字幕在线不卡一区二区三区 | 日韩情涩欧美日韩视频| 99久久免费视频.com| 看片的网站亚洲| 亚洲国产视频直播| 久久久久久久久久久久久女国产乱| 麻豆视频观看网址久久| 99久久精品国产麻豆演员表| 欧美卡1卡2卡| 一区在线观看免费| 国产不卡视频在线播放| 欧美一区午夜精品| 亚洲欧洲一区二区三区| 免费在线观看一区| 欧美日韩国产区一| 亚洲精品国产一区二区精华液| 国产精品996| 精品国产露脸精彩对白| 日本在线播放一区二区三区| 在线视频国产一区| 亚洲日本青草视频在线怡红院| 国产精品99久| 久久精品夜色噜噜亚洲aⅴ| 懂色一区二区三区免费观看| 欧美一区二区三区视频| 亚洲视频一二区| 精品久久久久一区二区国产| 成人美女在线视频| 日本中文一区二区三区| 欧美探花视频资源| 亚洲欧美综合另类在线卡通|