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

📄 otvcommn.h

📁 奇趣公司比较新的qt/emd版本
💻 H
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************//*                                                                         *//*  otvcommn.h                                                             *//*                                                                         *//*    OpenType common tables validation (specification).                   *//*                                                                         *//*  Copyright 2004, 2005 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.                                        *//*                                                                         *//***************************************************************************/#ifndef __OTVCOMMN_H__#define __OTVCOMMN_H__#include <ft2build.h>#include "otvalid.h"#include FT_INTERNAL_DEBUG_HFT_BEGIN_HEADER  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                         VALIDATION                            *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  typedef struct OTV_ValidatorRec_*  OTV_Validator;  typedef void  (*OTV_Validate_Func)( FT_Bytes       table,                                      OTV_Validator  valid );  typedef struct  OTV_ValidatorRec_  {    FT_Validator        root;    FT_UInt             type_count;    OTV_Validate_Func*  type_funcs;    FT_UInt             lookup_count;    FT_UInt             glyph_count;    FT_UInt             nesting_level;    OTV_Validate_Func   func[3];    FT_UInt             extra1;     /* for passing parameters */    FT_UInt             extra2;    FT_Bytes            extra3;#ifdef FT_DEBUG_LEVEL_TRACE    FT_UInt             debug_indent;    const FT_String*    debug_function_name[3];#endif  } OTV_ValidatorRec;#undef  FT_INVALID_#define FT_INVALID_( _prefix, _error )                         \          ft_validator_error( valid->root, _prefix ## _error )#define OTV_OPTIONAL_TABLE( _table )  FT_UShort  _table;      \                                      FT_Bytes   _table ## _p#define OTV_OPTIONAL_OFFSET( _offset )           \          FT_BEGIN_STMNT                         \            _offset ## _p = p;                   \            _offset       = FT_NEXT_USHORT( p ); \          FT_END_STMNT#define OTV_LIMIT_CHECK( _count )                    \          FT_BEGIN_STMNT                             \            if ( p + (_count) > valid->root->limit ) \              FT_INVALID_TOO_SHORT;                  \          FT_END_STMNT#define OTV_SIZE_CHECK( _size )                                        \          FT_BEGIN_STMNT                                               \            if ( _size > 0 && _size < table_size )                     \            {                                                          \              if ( valid->root->level == FT_VALIDATE_PARANOID )        \                FT_INVALID_OFFSET;                                     \              else                                                     \              {                                                        \                /* strip off `const' */                                \                FT_Byte*  pp = (FT_Byte*)_size ## _p;                  \                                                                       \                                                                       \                FT_TRACE3(( "\n"                                       \                            "Invalid offset to optional table `%s'!\n" \                            "Set to zero.\n"                           \                            "\n", #_size ));                           \                                                                       \                /* always assume 16bit entities */                     \                _size = pp[0] = pp[1] = 0;                             \              }                                                        \            }                                                          \          FT_END_STMNT#define  OTV_NAME_(x)  #x#define  OTV_NAME(x)   OTV_NAME_(x)#define  OTV_FUNC_(x)  x##Func#define  OTV_FUNC(x)   OTV_FUNC_(x)#ifdef FT_DEBUG_LEVEL_TRACE#define OTV_NEST1( x )                                     \          FT_BEGIN_STMNT                                   \            valid->nesting_level          = 0;             \            valid->func[0]                = OTV_FUNC( x ); \            valid->debug_function_name[0] = OTV_NAME( x ); \          FT_END_STMNT#define OTV_NEST2( x, y )                                  \          FT_BEGIN_STMNT                                   \            valid->nesting_level          = 0;             \            valid->func[0]                = OTV_FUNC( x ); \            valid->func[1]                = OTV_FUNC( y ); \            valid->debug_function_name[0] = OTV_NAME( x ); \            valid->debug_function_name[1] = OTV_NAME( y ); \          FT_END_STMNT#define OTV_NEST3( x, y, z )                               \          FT_BEGIN_STMNT                                   \            valid->nesting_level          = 0;             \            valid->func[0]                = OTV_FUNC( x ); \            valid->func[1]                = OTV_FUNC( y ); \            valid->func[2]                = OTV_FUNC( z ); \            valid->debug_function_name[0] = OTV_NAME( x ); \            valid->debug_function_name[1] = OTV_NAME( y ); \            valid->debug_function_name[2] = OTV_NAME( z ); \          FT_END_STMNT#define OTV_INIT  valid->debug_indent = 0#define OTV_ENTER                                                            \          FT_BEGIN_STMNT                                                     \            valid->debug_indent += 2;                                        \            FT_TRACE4(( "%*.s", valid->debug_indent, 0 ));                   \            FT_TRACE4(( "%s table\n",                                        \                        valid->debug_function_name[valid->nesting_level] )); \          FT_END_STMNT#define OTV_NAME_ENTER( name )                             \          FT_BEGIN_STMNT                                   \            valid->debug_indent += 2;                      \            FT_TRACE4(( "%*.s", valid->debug_indent, 0 )); \            FT_TRACE4(( "%s table\n", name ));             \          FT_END_STMNT#define OTV_EXIT  valid->debug_indent -= 2#define OTV_TRACE( s )                                     \          FT_BEGIN_STMNT                                   \            FT_TRACE4(( "%*.s", valid->debug_indent, 0 )); \            FT_TRACE4( s );                                \          FT_END_STMNT#else   /* !FT_DEBUG_LEVEL_TRACE */#define OTV_NEST1( x )                            \          FT_BEGIN_STMNT                          \            valid->nesting_level = 0;             \            valid->func[0]       = OTV_FUNC( x ); \          FT_END_STMNT#define OTV_NEST2( x, y )                         \          FT_BEGIN_STMNT                          \            valid->nesting_level = 0;             \            valid->func[0]       = OTV_FUNC( x ); \            valid->func[1]       = OTV_FUNC( y ); \          FT_END_STMNT#define OTV_NEST3( x, y, z )                      \          FT_BEGIN_STMNT                          \            valid->nesting_level = 0;             \            valid->func[0]       = OTV_FUNC( x ); \            valid->func[1]       = OTV_FUNC( y ); \            valid->func[2]       = OTV_FUNC( z ); \          FT_END_STMNT#define OTV_INIT                do ; while ( 0 )#define OTV_ENTER               do ; while ( 0 )#define OTV_NAME_ENTER( name )  do ; while ( 0 )#define OTV_EXIT                do ; while ( 0 )#define OTV_TRACE( s )          do ; while ( 0 )#endif  /* !FT_DEBUG_LEVEL_TRACE */#define OTV_RUN  valid->func[0]  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                       COVERAGE TABLE                          *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  FT_LOCAL( void )  otv_Coverage_validate( FT_Bytes       table,                         OTV_Validator  valid );

⌨️ 快捷键说明

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