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

📄 psaux.h

📁 读写pdf文件的程序开发库源码,对于编写开发库有所帮助.
💻 H
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************//*                                                                         *//*  psaux.h                                                                *//*                                                                         *//*    Auxiliary functions and data structures related to PostScript fonts  *//*    (specification).                                                     *//*                                                                         *//*  Copyright 1996-2001 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 __PSAUX_H__#define __PSAUX_H__#include <ft2build.h>#include FT_INTERNAL_OBJECTS_H#include FT_INTERNAL_TYPE1_TYPES_HFT_BEGIN_HEADER  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                             T1_TABLE                          *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  typedef struct PS_Table_  PS_Table;  /*************************************************************************/  /*                                                                       */  /* <Struct>                                                              */  /*    PS_Table_Funcs                                                     */  /*                                                                       */  /* <Description>                                                         */  /*    A set of function pointers to manage PS_Table objects.             */  /*                                                                       */  /* <Fields>                                                              */  /*    table_init    :: Used to initialize a table.                       */  /*                                                                       */  /*    table_done    :: Finalizes resp. destroy a given table.            */  /*                                                                       */  /*    table_add     :: Adds a new object to a table.                     */  /*                                                                       */  /*    table_release :: Releases table data, then finalizes it.           */  /*                                                                       */  typedef struct  PS_Table_Funcs_  {    FT_Error    (*init)( PS_Table*  table,             FT_Int     count,             FT_Memory  memory );    void    (*done)( PS_Table*  table );    FT_Error    (*add)( PS_Table*  table,            FT_Int     index,            void*      object,            FT_Int     length );    void    (*release)( PS_Table*  table );  } PS_Table_Funcs;  /*************************************************************************/  /*                                                                       */  /* <Struct>                                                              */  /*    PS_Table                                                           */  /*                                                                       */  /* <Description>                                                         */  /*    A PS_Table is a simple object used to store an array of objects in */  /*    a single memory block.                                             */  /*                                                                       */  /* <Fields>                                                              */  /*    block     :: The address in memory of the growheap's block.  This  */  /*                 can change between two object adds, due to            */  /*                 reallocation.                                         */  /*                                                                       */  /*    cursor    :: The current top of the grow heap within its block.    */  /*                                                                       */  /*    capacity  :: The current size of the heap block.  Increments by    */  /*                 1kByte chunks.                                        */  /*                                                                       */  /*    max_elems :: The maximum number of elements in table.              */  /*                                                                       */  /*    num_elems :: The current number of elements in table.              */  /*                                                                       */  /*    elements  :: A table of element addresses within the block.        */  /*                                                                       */  /*    lengths   :: A table of element sizes within the block.            */  /*                                                                       */  /*    memory    :: The object used for memory operations                 */  /*                 (alloc/realloc).                                      */  /*                                                                       */  /*    funcs     :: A table of method pointers for this object.           */  /*                                                                       */  struct  PS_Table_  {    FT_Byte*        block;          /* current memory block           */    FT_Offset       cursor;         /* current cursor in memory block */    FT_Offset       capacity;       /* current size of memory block   */    FT_Long         init;    FT_Int          max_elems;    FT_Int          num_elems;    FT_Byte**       elements;       /* addresses of table elements */    FT_Int*         lengths;        /* lengths of table elements   */    FT_Memory       memory;    PS_Table_Funcs  funcs;  };  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                       T1 FIELDS & TOKENS                      *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  typedef struct T1_Parser_  T1_Parser;  /* simple enumeration type used to identify token types */  typedef enum  T1_Token_Type_  {    t1_token_none = 0,    t1_token_any,    t1_token_string,    t1_token_array,    /* do not remove */    t1_token_max  } T1_Token_Type;  /* a simple structure used to identify tokens */  typedef struct  T1_Token_  {    FT_Byte*       start;   /* first character of token in input stream */    FT_Byte*       limit;   /* first character after the token          */    T1_Token_Type  type;    /* type of token                            */  } T1_Token;  /* enumeration type used to identify object fields */  typedef enum  T1_Field_Type_  {    t1_field_none = 0,    t1_field_bool,    t1_field_integer,    t1_field_fixed,    t1_field_string,    t1_field_integer_array,    t1_field_fixed_array,    t1_field_callback,    /* do not remove */    t1_field_max  } T1_Field_Type;  typedef enum  T1_Field_Location_  {    t1_field_cid_info,    t1_field_font_dict,    t1_field_font_info,    t1_field_private,    /* do not remove */    t1_field_location_max  } T1_Field_Location;  typedef void  (*T1_Field_Parser)( FT_Face     face,                      FT_Pointer  parser );  /* structure type used to model object fields */  typedef struct  T1_Field_  {    const char*        ident;        /* field identifier               */    T1_Field_Location  location;    T1_Field_Type      type;         /* type of field                  */    T1_Field_Parser    reader;    FT_UInt            offset;       /* offset of field in object      */    FT_Byte            size;         /* size of field in bytes         */    FT_UInt            array_max;    /* maximal number of elements for */                                     /* array                          */    FT_UInt            count_offset; /* offset of element count for    */                                     /* arrays                         */  } T1_Field;#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname ) \          {                                          \            _ident, T1CODE, _type,                   \            0,                                       \            FT_FIELD_OFFSET( _fname ),               \            FT_FIELD_SIZE( _fname ),                 \            0, 0                                     \          },#define T1_NEW_CALLBACK_FIELD( _ident, _reader ) \          {                                      \            _ident, T1CODE, t1_field_callback,   \            (T1_Field_Parser)_reader,            \            0, 0,                                \            0, 0                                 \          },#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max ) \          {                                               \            _ident, T1CODE, _type,                        \            0,                                            \            FT_FIELD_OFFSET( _fname ),                    \            FT_FIELD_SIZE_DELTA( _fname ),                \            _max,                                         \            FT_FIELD_OFFSET( num_ ## _fname )             \          },#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max ) \          {                                                \            _ident, T1CODE, _type,                         \            0,                                             \            FT_FIELD_OFFSET( _fname ),                     \            FT_FIELD_SIZE_DELTA( _fname ),                 \            _max, 0                                        \          },#define T1_FIELD_BOOL( _ident, _fname )                           \          T1_NEW_SIMPLE_FIELD( _ident, t1_field_bool, _fname )#define T1_FIELD_NUM( _ident, _fname )                            \          T1_NEW_SIMPLE_FIELD( _ident, t1_field_integer, _fname )#define T1_FIELD_FIXED( _ident, _fname )                          \          T1_NEW_SIMPLE_FIELD( _ident, t1_field_fixed, _fname )#define T1_FIELD_STRING( _ident, _fname )                         \          T1_NEW_SIMPLE_FIELD( _ident, t1_field_string, _fname )#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax )               \          T1_NEW_TABLE_FIELD( _ident, t1_field_integer_array,     \                               _fname, _fmax )#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax )             \          T1_NEW_TABLE_FIELD( _ident, t1_field_fixed_array,       \                               _fname, _fmax )#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax )              \          T1_NEW_TABLE_FIELD2( _ident, t1_field_integer_array,    \                                _fname, _fmax )#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax )            \          T1_NEW_TABLE_FIELD2( _ident, t1_field_fixed_array,      \                                _fname, _fmax )#define T1_FIELD_CALLBACK( _ident, _name )                        \          T1_NEW_CALLBACK_FIELD( _ident, _name )  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                            T1 PARSER                          *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  typedef struct  T1_Parser_Funcs_  {    void    (*init)( T1_Parser*  parser,             FT_Byte*    base,             FT_Byte*    limit,             FT_Memory   memory );    void    (*done)( T1_Parser*  parser );    void    (*skip_spaces)( T1_Parser*  parser );    void    (*skip_alpha)( T1_Parser*  parser );    FT_Long    (*to_int)( T1_Parser*  parser );    FT_Fixed    (*to_fixed)( T1_Parser*  parser,                 FT_Int      power_ten );    FT_Int    (*to_coord_array)( T1_Parser*  parser,                       FT_Int      max_coords,                       FT_Short*   coords );    FT_Int    (*to_fixed_array)( T1_Parser*  parser,                       FT_Int      max_values,                       FT_Fixed*   values,                       FT_Int      power_ten );    void    (*to_token)( T1_Parser*  parser,                 T1_Token*   token );    void    (*to_token_array)( T1_Parser*  parser,                       T1_Token*   tokens,                       FT_UInt     max_tokens,                       FT_Int*     pnum_tokens );

⌨️ 快捷键说明

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