/***************************************************************************/
/* */
/* ttinterp.c */
/* */
/* TrueType bytecode interpreter (body). */
/* */
/* Copyright 1996-2018 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. */
/* */
/***************************************************************************/
/* Greg Hitchcock from Microsoft has helped a lot in resolving unclear */
/* issues; many thanks! */
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_CALC_H
#include FT_TRIGONOMETRY_H
#include FT_SYSTEM_H
#include FT_DRIVER_H
#include FT_MULTIPLE_MASTERS_H
#include "ttinterp.h"
#include "tterrors.h"
#include "ttsubpix.h"
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
#include "ttgxvar.h"
#endif
#ifdef TT_USE_BYTECODE_INTERPRETER
/*************************************************************************/
/* */
/* 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
#define NO_SUBPIXEL_HINTING \
( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
TT_INTERPRETER_VERSION_35 )
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
#define SUBPIXEL_HINTING_INFINALITY \
( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
TT_INTERPRETER_VERSION_38 )
#endif
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
#define SUBPIXEL_HINTING_MINIMAL \
( ((TT_Driver)FT_FACE_DRIVER( exc->face ))->interpreter_version == \
TT_INTERPRETER_VERSION_40 )
#endif
#define PROJECT( v1, v2 ) \
exc->func_project( exc, \
SUB_LONG( (v1)->x, (v2)->x ), \
SUB_LONG( (v1)->y, (v2)->y ) )
#define DUALPROJ( v1, v2 ) \
exc->func_dualproj( exc, \
SUB_LONG( (v1)->x, (v2)->x ), \
SUB_LONG( (v1)->y, (v2)->y ) )
#define FAST_PROJECT( v ) \
exc->func_project( exc, (v)->x, (v)->y )
#define FAST_DUALPROJ( v ) \
exc->func_dualproj( exc, (v)->x, (v)->y )
/*************************************************************************/
/* */
/* Two simple bounds-checking macros. */
/* */
#define BOUNDS( x, n ) ( (FT_UInt)(x) >= (FT_UInt)(n) )
#define BOUNDSL( x, n ) ( (FT_ULong)(x) >= (FT_ULong)(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. */
/* */
FT_LOCAL_DEF( void )
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 );
/* 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( IP <= coderange->size );
exec->code = coderange->base;
exec->codeSize = coderange->size;
exec->IP = IP;
exec->curRange = range;
}
/*************************************************************************/
/* */
/* <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. */
/*
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
linphone-ffmpeg-anyka37e (3676个子文件)
libts.so.0 19KB
libjpeg.so.62 143KB
libffmpeg.a 1MB
liblvgl.a 997KB
liblvgl_lib.a 877KB
liblinphone.a 506KB
libmediastreamer2.a 443KB
libfreetype.a 321KB
libosip2.a 297KB
libexosip2.a 292KB
libspeex.a 265KB
libortp.a 170KB
libzlib.a 159KB
Makefile.am 175B
ANYKA37EOS 2.58MB
arm-linux-linphonec 2.98MB
vp8dsp.asm 78KB
h264_intrapred.asm 70KB
h264_intrapred_10bit.asm 32KB
dsputil_yasm.asm 31KB
x86inc.asm 28KB
h264_idct.asm 25KB
scale.asm 23KB
h264_deblock.asm 23KB
h264_deblock_10bit.asm 22KB
vp3dsp.asm 21KB
fft_mmx.asm 21KB
h264_qpel_10bit.asm 20KB
h264_chromamc.asm 17KB
h264_idct_10bit.asm 14KB
dct32_sse.asm 12KB
x86util.asm 12KB
ac3dsp.asm 12KB
proresdsp.asm 10KB
dsputilenc_yasm.asm 10KB
fmtconvert.asm 9KB
imdct36_sse.asm 8KB
vc1dsp_yasm.asm 8KB
h264_chromamc_10bit.asm 8KB
h264_weight.asm 7KB
dwt_yasm.asm 7KB
diracdsp_yasm.asm 6KB
h264_weight_10bit.asm 6KB
vp56dsp.asm 5KB
deinterlace.asm 3KB
v210.asm 2KB
rom.bin 80KB
CMakeDetermineCompilerABI_CXX.bin 7KB
feature_tests.bin 7KB
CMakeDetermineCompilerABI_C.bin 7KB
ttinterp.c 293KB
lodepng.c 258KB
vc1dec.c 229KB
linphonecore.c 196KB
ffmpeg.c 181KB
h264.c 167KB
avconv.c 159KB
lv_obj.c 155KB
ffserver.c 155KB
ftobjs.c 153KB
nowebcam.c 149KB
mpegvideo_enc.c 144KB
utils.c 139KB
vorbis_data.c 134KB
ttgxvar.c 133KB
ice.c 125KB
dsputil_mmx.c 122KB
ttcmap.c 122KB
dsputil_vis.c 118KB
aflatin.c 114KB
h264_cabac.c 112KB
swscale.c 110KB
dsputil.c 108KB
ftraster.c 107KB
psintrp.c 107KB
rgb2rgb_template.c 106KB
mpegvideo.c 105KB
ffplay.c 105KB
eXutils.c 100KB
ttgload.c 97KB
mpeg12.c 95KB
mov.c 94KB
aacdec.c 93KB
linphonecall.c 91KB
movenc.c 90KB
mpeg4videodec.c 88KB
swscale_template.c 87KB
eXtl_tls.c 85KB
ac3enc.c 84KB
vp3.c 83KB
msmpeg4data.c 83KB
sal_eXosip2.c 83KB
wmavoice.c 81KB
t1load.c 78KB
stun.c 78KB
snowenc.c 77KB
motion_est.c 77KB
deflate.c 77KB
psobjs.c 77KB
cffload.c 76KB
共 3676 条
- 1
- 2
- 3
- 4
- 5
- 6
- 37
leo_hello66
- 粉丝: 43
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- unidac29 for delphi 12.1
- Cauchy奇异积分的数值计算程序
- 基于Python实现的股票量化交易策略源代码+视频讲解+案例代码,含RSI策略、BOP指标策略、KDJ策略、MACD指标策略等
- EDA编码.zip
- 文本分类任务训练神经网络来学习词汇表中每个词的词向量
- MyBatis进阶技巧:探索动态SQL的无限可能.md
- HM2300C-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2300B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 员工解除劳动合同申请表.pdf
- 物模块模型代码,前往设计物模块所属
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论5