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

📄 t1parse.h

📁 Qt/Embedded是一个多平台的C++图形用户界面应用程序框架
💻 H
字号:
/******************************************************************* * *  t1parse.h                                                   1.0 * *    Type1 parser. * *  Copyright 1996-1998 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. * * *  The Type1 parser component is in charge of simply parsing *  the font input stream and convert simple tokens and elements *  into integers, floats, matrices, strings, etc.. * *  It is used by the Type1 loader.. * ******************************************************************/#ifndef T1PARSE_H#define T1PARSE_H#include <ftstream.h>#include <t1tokens.h>#ifdef __cplusplus  extern "C" {#endif/************************************************************************* * * <Enum> T1_DictState * * <Description> *    An enumeration used to describe the Type 1 parser's state, i.e. *    which dictionary (or array) it is scanning and processing at the *    current moment.. * */  typedef enum  T1_DictState_  {    dict_none = 0,    dict_font,          /* parsing the font dictionary              */    dict_fontinfo,      /* parsing the font info dictionary         */    dict_none2,         /* beginning to parse the encrypted section */    dict_private,       /* parsing the private dictionary           */    dict_encoding,      /* parsing the encoding array               */    dict_subrs,         /* parsing the subrs array                  */    dict_othersubrs,    /* parsing the othersubrs array (?)         */    dict_charstrings,   /* parsing the charstrings dictionary       */    dict_unknown_array, /* parsing/ignoring an unknown array        */    dict_unknown_dict,  /* parsing/ignoring an unknown dictionary   */    dict_max    /* do not remove from list */  } T1_DictState;/************************************************************************* * * <Struct> T1_Table * * <Description> *    A T1_Table is a simple object used to store an array of objects *    in a single memory block. * * <Fields> *    block     :: address in memory of the growheap's block. This *                 can change between two object adds, due to the use *                 of 'realloc'. * *    cursor    :: current top of the grow heap within its block * *    capacity  :: current size of the heap block. Increments by 1 Kb * *    max_elems :: maximum number of elements in table *    num_elems :: current number of elements in table * *    elements  :: table of element addresses within the block *    lengths   :: table of element sizes within the block * *    system   :: system object used for memory operations (alloc/realloc) */  typedef struct T1_Table_  {    T1_Byte*   block;          /* current memory block           */    T1_Int     cursor;         /* current cursor in memory block */    T1_Int     capacity;       /* current size of memory block   */    T1_Int     max_elems;    T1_Int     num_elems;    T1_Byte**  elements;       /* addresses of table elements */    T1_Int*    lengths;        /* lengths of table elements   */    FT_Memory  memory;  } T1_Table;/*************************************************************************//*                                                                       *//* <Struct> T1_Parser                                                    *//*                                                                       *//* <Description>                                                         *//*    A Type 1 parser. This object is in charge of parsing Type 1        *//*    ASCII streams and builds dictionaries for a T1_Face object.        *//*                                                                       *//* <Fields>                                                              *//*    error ::                                                           *//*       current error code. 0 means success                             *//*                                                                       *//*    face  ::                                                           *//*       the target T1_Face object being built                           *//*                                                                       *//*    tokenizer ::                                                       *//*       the tokenizer (lexical analyser) used for processing the        *//*       input stream.                                                   *//*                                                                       *//*    stack ::                                                           *//*       the current token stack. Note that we don't use intermediate    *//*       Postscript objects here !                                       *//*                                                                       *//*    top ::                                                             *//*       current top of token stack                                      *//*                                                                       *//*    limit ::                                                           *//*       current upper bound of the token stack. Used for overflow       *//*       checks..                                                        *//*                                                                       *//*    args ::                                                            *//*       arguments of a given operator. used and increased by the        *//*       Copy.... functions..                                            *//*                                                                       *//*    state_index ::                                                     *//*       index of top of the dictionary state stack                      *//*                                                                       *//*    state_stack ::                                                     *//*       dictionary states stack                                         *//*                                                                       *//*    table ::                                                           *//*       a T1_Table object used to record various kinds of               *//*       dictionaries or arrays (like /Encoding, /Subrs, /CharStrings)   *//*                                                                       *//*                                                                       */  typedef  struct  T1_Parser_  {    T1_Error      error;    T1_Face       face;    T1_Tokenizer  tokenizer;    T1_Bool       dump_tokens;    T1_Token      stack[ T1_MAX_STACK_DEPTH ];    T1_Token*     top;    T1_Token*     limit;    T1_Token*     args;    T1_Int        state_index;    T1_DictState  state_stack[ T1_MAX_DICT_DEPTH ];	T1_Table      table;	T1_Int        cur_name;	T1_EncodingType  encoding_type;    T1_Byte*         encoding_names;    T1_Int*          encoding_lengths;    T1_Byte**        encoding_offsets;    T1_Byte*      subrs;    T1_Byte*      charstrings;  } T1_Parser;/*************************************************************************//*                                                                       *//* <Function> T1_New_Table                                               *//*                                                                       *//* <Description>                                                         *//*    Initialise a T1_Table.                                             *//*                                                                       *//* <Input>                                                               *//*    table  :: address of target table                                  *//*    count  :: table size = maximum number of elements                  *//*    system :: system object to use for all subsequent reallocations    *//*                                                                       *//* <Return>                                                              *//*    Error code. 0 means success                                        *//*                                                                       */  LOCAL_DEF  T1_Error  T1_New_Table( T1_Table*  table,                          T1_Int     count,                          FT_Memory  memory );/*************************************************************************//*                                                                       *//* <Function> T1_Add_Table                                               *//*                                                                       *//* <Description>                                                         *//*    Adds an object to a T1_Table, possibly growing its memory block    *//*                                                                       *//* <Input>                                                               *//*    table  :: target table                                             *//*    index  :: index of object in table                                 *//*    object :: address of object to copy in memory                      *//*    length :: length in bytes of source object                         *//*                                                                       *//* <Return>                                                              *//*    Error code. 0 means success. An error is returned when a           *//*    realloc failed..                                                   *//*                                                                       */  LOCAL_DEF  T1_Error  T1_Add_Table( T1_Table*  table,                          T1_Int     index,                          void*      object,                          T1_Int     length );/*************************************************************************//*                                                                       *//* <Function> T1_Done_Table                                              *//*                                                                       *//* <Description>                                                         *//*    Finalise a T1_Table. (realloc it to its current cursor).           *//*                                                                       *//* <Input>                                                               *//*    table :: target table                                              *//*                                                                       *//* <Note>                                                                *//*    This function does NOT release the heap's memory block. It is up   *//*    to the caller to clean it, or reference it in its own structures.  *//*                                                                       */  LOCAL_DEF  void  T1_Done_Table( T1_Table*  table );  LOCAL_DEF  T1_String*   CopyString( T1_Parser*  parser );  LOCAL_DEF  T1_Long      CopyInteger( T1_Parser*  parser );  LOCAL_DEF  T1_Bool      CopyBoolean( T1_Parser*  parser );  LOCAL_DEF  T1_Long      CopyFloat( T1_Parser*  parser,                          T1_Int      scale );  LOCAL_DEF  void         CopyBBox( T1_Parser*  parser,                         T1_BBox*    bbox );  LOCAL_DEF  void         CopyMatrix( T1_Parser*  parser,                           T1_Matrix*  matrix );  LOCAL_DEF  void  CopyArray( T1_Parser*  parser,                   T1_Byte*    num_elements,                   T1_Short*   elements,                   T1_Int      max_elements );#ifdef __cplusplus  }#endif#endif /* T1PARSE_H *//* END */

⌨️ 快捷键说明

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