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

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

?? psobjs.c

?? a very goog book
?? C
字號:
/***************************************************************************//*                                                                         *//*  psobjs.c                                                               *//*                                                                         *//*    Auxiliary functions for PostScript fonts (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_POSTSCRIPT_AUX_H#include FT_INTERNAL_DEBUG_H#include "psobjs.h"#include "psauxerr.h"  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                             PS_TABLE                          *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    PS_Table_New                                                       */  /*                                                                       */  /* <Description>                                                         */  /*    Initializes a PS_Table.                                            */  /*                                                                       */  /* <InOut>                                                               */  /*    table  :: The address of the target table.                         */  /*                                                                       */  /* <Input>                                                               */  /*    count  :: The table size = the maximum number of elements.         */  /*                                                                       */  /*    memory :: The memory object to use for all subsequent              */  /*              reallocations.                                           */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.                             */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  PS_Table_New( PS_Table   table,                FT_Int     count,                FT_Memory  memory )  {    FT_Error  error;    table->memory = memory;    if ( FT_NEW_ARRAY( table->elements, count ) ||         FT_NEW_ARRAY( table->lengths,  count ) )      goto Exit;    table->max_elems = count;    table->init      = 0xDEADBEEFUL;    table->num_elems = 0;    table->block     = 0;    table->capacity  = 0;    table->cursor    = 0;        *(PS_Table_FuncsRec*)&table->funcs = ps_table_funcs;  Exit:    if ( error )      FT_FREE( table->elements );    return error;  }  static void  shift_elements( PS_Table  table,                  FT_Byte*  old_base )  {    FT_Long    delta  = (FT_Long)( table->block - old_base );    FT_Byte**  offset = table->elements;    FT_Byte**  limit  = offset + table->max_elems;    for ( ; offset < limit; offset++ )    {      if ( offset[0] )        offset[0] += delta;    }  }  static FT_Error  reallocate_t1_table( PS_Table  table,                       FT_Int    new_size )  {    FT_Memory  memory   = table->memory;    FT_Byte*   old_base = table->block;    FT_Error   error;    /* allocate new base block */    if ( FT_ALLOC( table->block, new_size ) )      return error;    /* copy elements and shift offsets */    if (old_base )    {      FT_MEM_COPY( table->block, old_base, table->capacity );      shift_elements( table, old_base );      FT_FREE( old_base );    }    table->capacity = new_size;    return PSaux_Err_Ok;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    PS_Table_Add                                                       */  /*                                                                       */  /* <Description>                                                         */  /*    Adds an object to a PS_Table, possibly growing its memory block.   */  /*                                                                       */  /* <InOut>                                                               */  /*    table  :: The target table.                                        */  /*                                                                       */  /* <Input>                                                               */  /*    idx  :: The index of the object in the table.                      */  /*                                                                       */  /*    object :: The address of the object to copy in memory.             */  /*                                                                       */  /*    length :: The length in bytes of the source object.                */  /*                                                                       */  /* <Return>                                                              */  /*    FreeType error code.  0 means success.  An error is returned if a  */  /*    reallocation fails.                                                */  /*                                                                       */  FT_LOCAL_DEF( FT_Error )  PS_Table_Add( PS_Table  table,                FT_Int    idx,                void*     object,                FT_Int    length )  {    if ( idx < 0 || idx > table->max_elems )    {      FT_ERROR(( "PS_Table_Add: invalid index\n" ));      return PSaux_Err_Invalid_Argument;    }    /* grow the base block if needed */    if ( table->cursor + length > table->capacity )    {      FT_Error   error;      FT_Offset  new_size  = table->capacity;      FT_Long    in_offset;      in_offset = (FT_Long)((FT_Byte*)object - table->block);      if ( (FT_ULong)in_offset >= table->capacity )        in_offset = -1;      while ( new_size < table->cursor + length )        new_size += 1024;      error = reallocate_t1_table( table, new_size );      if ( error )        return error;      if ( in_offset >= 0 )        object = table->block + in_offset;    }    /* add the object to the base block and adjust offset */    table->elements[idx] = table->block + table->cursor;    table->lengths [idx] = length;    FT_MEM_COPY( table->block + table->cursor, object, length );    table->cursor += length;    return PSaux_Err_Ok;  }  /*************************************************************************/  /*                                                                       */  /* <Function>                                                            */  /*    PS_Table_Done                                                      */  /*                                                                       */  /* <Description>                                                         */  /*    Finalizes a PS_TableRec (i.e., reallocate it to its current        */  /*    cursor).                                                           */  /*                                                                       */  /* <InOut>                                                               */  /*    table :: The 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.  */  /*                                                                       */  FT_LOCAL_DEF( void )  PS_Table_Done( PS_Table  table )  {    FT_Memory  memory = table->memory;    FT_Error   error;    FT_Byte*   old_base = table->block;    /* should never fail, because rec.cursor <= rec.size */    if ( !old_base )      return;    if ( FT_ALLOC( table->block, table->cursor ) )      return;    FT_MEM_COPY( table->block, old_base, table->cursor );    shift_elements( table, old_base );    table->capacity = table->cursor;    FT_FREE( old_base );    FT_UNUSED( error );  }  FT_LOCAL_DEF( void )  PS_Table_Release( PS_Table  table )  {    FT_Memory  memory = table->memory;    if ( (FT_ULong)table->init == 0xDEADBEEFUL )    {      FT_FREE( table->block );      FT_FREE( table->elements );      FT_FREE( table->lengths );      table->init = 0;    }  }  /*************************************************************************/  /*************************************************************************/  /*****                                                               *****/  /*****                            T1 PARSER                          *****/  /*****                                                               *****/  /*************************************************************************/  /*************************************************************************/#define IS_T1_WHITESPACE( c )  ( (c) == ' '  || (c) == '\t' )#define IS_T1_LINESPACE( c )   ( (c) == '\r' || (c) == '\n' )#define IS_T1_SPACE( c )  ( IS_T1_WHITESPACE( c ) || IS_T1_LINESPACE( c ) )  FT_LOCAL_DEF( void )  PS_Parser_SkipSpaces( PS_Parser  parser )  {    FT_Byte* cur   = parser->cursor;    FT_Byte* limit = parser->limit;    while ( cur < limit )    {      FT_Byte  c = *cur;      if ( !IS_T1_SPACE( c ) )        break;      cur++;    }    parser->cursor = cur;  }  FT_LOCAL_DEF( void )  PS_Parser_SkipAlpha( PS_Parser  parser )  {    FT_Byte* cur   = parser->cursor;    FT_Byte* limit = parser->limit;    while ( cur < limit )    {      FT_Byte  c = *cur;      if ( IS_T1_SPACE( c ) )        break;      cur++;    }    parser->cursor = cur;  }  FT_LOCAL_DEF( void )  PS_Parser_ToToken( PS_Parser  parser,                     T1_Token   token )  {    FT_Byte*  cur;    FT_Byte*  limit;    FT_Byte   starter, ender;    FT_Int    embed;    token->type  = T1_TOKEN_TYPE_NONE;    token->start = 0;    token->limit = 0;    /* first of all, skip space */    PS_Parser_SkipSpaces( parser );    cur   = parser->cursor;    limit = parser->limit;    if ( cur < limit )    {      switch ( *cur )      {        /************* check for strings ***********************/      case '(':        token->type = T1_TOKEN_TYPE_STRING;        ender = ')';        goto Lookup_Ender;        /************* check for programs/array ****************/      case '{':        token->type = T1_TOKEN_TYPE_ARRAY;        ender = '}';        goto Lookup_Ender;        /************* check for table/array ******************/      case '[':        token->type = T1_TOKEN_TYPE_ARRAY;        ender = ']';      Lookup_Ender:        embed   = 1;        starter = *cur++;        token->start = cur;        while ( cur < limit )        {          if ( *cur == starter )            embed++;          else if ( *cur == ender )          {            embed--;            if ( embed <= 0 )            {              token->limit = cur++;              break;            }          }          cur++;        }        break;        /* **************** otherwise, it's any token **********/      default:        token->start = cur++;        token->type  = T1_TOKEN_TYPE_ANY;        while ( cur < limit && !IS_T1_SPACE( *cur ) )          cur++;        token->limit = cur;      }      if ( !token->limit )      {        token->start = 0;        token->type  = T1_TOKEN_TYPE_NONE;      }      parser->cursor = cur;    }  }  FT_LOCAL_DEF( void )  PS_Parser_ToTokenArray( PS_Parser  parser,                          T1_Token   tokens,                          FT_UInt    max_tokens,                          FT_Int*    pnum_tokens )  {    T1_TokenRec  master;    *pnum_tokens = -1;    PS_Parser_ToToken( parser, &master );    if ( master.type == T1_TOKEN_TYPE_ARRAY )    {      FT_Byte*  old_cursor = parser->cursor;      FT_Byte*  old_limit  = parser->limit;      T1_Token  cur        = tokens;      T1_Token  limit      = cur + max_tokens;      parser->cursor = master.start;      parser->limit  = master.limit;      while ( parser->cursor < parser->limit )      {        T1_TokenRec  token;        PS_Parser_ToToken( parser, &token );        if ( !token.type )          break;        if ( cur < limit )          *cur = token;        cur++;      }      *pnum_tokens = (FT_Int)( cur - tokens );      parser->cursor = old_cursor;      parser->limit  = old_limit;    }  }  static FT_Long  T1Radix( FT_Long    radixBase,           FT_Byte**  cur,           FT_Byte*   limit )  {    FT_Long  result = 0;    FT_Byte  radixEndChar0 =               (FT_Byte)( radixBase > 10 ? '9' + 1 : '0' + radixBase );    FT_Byte  radixEndChar1 =               (FT_Byte)( 'A' + radixBase - 10 );    FT_Byte  radixEndChar2 =               (FT_Byte)( 'a' + radixBase - 10 );    while( *cur < limit )    {      if ( (*cur)[0] >= '0' && (*cur)[0] < radixEndChar0 )        result = result * radixBase + (*cur)[0] - '0';

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老司机午夜精品99久久| 一区二区三区欧美久久| 日韩一区二区中文字幕| 欧美天堂一区二区三区| 欧美性感一类影片在线播放| 99国产欧美另类久久久精品| 色综合天天性综合| 91亚洲精品久久久蜜桃| 91在线观看下载| 欧美在线不卡视频| 欧美另类videos死尸| 欧美另类videos死尸| 日韩欧美高清一区| 久久久噜噜噜久久中文字幕色伊伊| 日韩精品一区在线| 久久久国际精品| 日本一区二区视频在线| 最新高清无码专区| 亚洲成人黄色小说| 久久疯狂做爰流白浆xx| 国产福利一区二区三区| 99r精品视频| 91精品国产综合久久福利软件| 欧美精品一级二级三级| 精品国产伦理网| 最新热久久免费视频| 日韩中文欧美在线| 国产超碰在线一区| 色94色欧美sute亚洲线路二| 日韩一区二区三区在线观看| 2021国产精品久久精品| 亚洲精品网站在线观看| 美日韩一区二区| av电影天堂一区二区在线| 欧美三区在线视频| 久久久久久久久岛国免费| 亚洲视频免费在线| 韩国三级中文字幕hd久久精品| 99精品欧美一区二区三区小说| 欧美一级在线视频| 中文字幕亚洲在| 久久99国产精品免费网站| 欧洲一区二区三区在线| 国产午夜三级一区二区三| 亚洲h动漫在线| 99精品在线免费| www国产成人免费观看视频 深夜成人网| 亚洲欧美自拍偷拍色图| 精品午夜一区二区三区在线观看| 在线免费观看一区| 国产欧美日韩精品a在线观看| 日本一区中文字幕 | 精品理论电影在线观看| 中文字幕一区在线观看| 韩国成人在线视频| 欧美一级一区二区| 天堂在线一区二区| 在线影院国内精品| 亚洲欧美日韩国产综合在线| 国产一区二区免费视频| 日韩一本二本av| 五月天一区二区三区| 91色.com| 亚洲日本韩国一区| 91麻豆视频网站| 国产精品全国免费观看高清| 国产精品99久久久久久似苏梦涵| 日韩午夜中文字幕| 久久福利资源站| 欧美变态tickle挠乳网站| 日本成人中文字幕在线视频| 欧美色视频在线| 香蕉久久一区二区不卡无毒影院| 在线视频一区二区免费| 亚洲国产日产av| 欧美精品乱人伦久久久久久| 亚洲国产成人91porn| 欧美日本在线一区| 日本不卡在线视频| 日韩精品最新网址| 国产在线精品一区二区不卡了 | 樱花草国产18久久久久| 日本乱码高清不卡字幕| 亚洲一区在线观看视频| 欧美三级日韩三级| 青娱乐精品视频| 精品久久国产字幕高潮| 国产福利一区在线观看| 亚洲色图在线视频| 色天天综合色天天久久| 五月婷婷综合网| 日韩精品一区二区三区在线播放| 国产在线精品一区在线观看麻豆| 久久久欧美精品sm网站| 91偷拍与自偷拍精品| 亚洲最大的成人av| 日韩欧美在线观看一区二区三区| 另类小说一区二区三区| 国产农村妇女毛片精品久久麻豆 | 欧美成人乱码一区二区三区| 国产在线精品一区二区不卡了 | 亚洲最大成人网4388xx| 日韩欧美一级二级| 成人免费毛片aaaaa**| 伊人一区二区三区| 日韩精品中午字幕| eeuss鲁一区二区三区| 亚洲成人av福利| 日本一区二区免费在线| 欧美三级电影网| 国产v综合v亚洲欧| 五月婷婷激情综合网| 国产精品拍天天在线| 欧美肥妇毛茸茸| 一本大道久久精品懂色aⅴ | 中文字幕欧美激情| 在线电影国产精品| fc2成人免费人成在线观看播放| 日韩av网站免费在线| 中文字幕字幕中文在线中不卡视频| 欧美日韩一区二区不卡| 波波电影院一区二区三区| 日韩1区2区日韩1区2区| 一区二区三区在线播放| 国产人成亚洲第一网站在线播放 | 国产片一区二区三区| 欧美一区中文字幕| 欧美在线视频你懂得| 国产成人亚洲精品狼色在线| 日韩不卡手机在线v区| 夜色激情一区二区| 国产精品久久久久久久久图文区| 日韩小视频在线观看专区| 91九色02白丝porn| 9i在线看片成人免费| 国产精品1区2区| 老司机午夜精品| 日韩成人一区二区| 日韩av中文字幕一区二区| 午夜精品爽啪视频| 亚洲午夜私人影院| 亚洲综合视频网| 一区二区三区免费看视频| 中文字幕在线播放不卡一区| 国产精品久线观看视频| 国产日韩av一区| 国产女同互慰高潮91漫画| 久久精品夜色噜噜亚洲a∨| 精品999在线播放| 久久久久久**毛片大全| 久久蜜桃香蕉精品一区二区三区| 日韩女优制服丝袜电影| 欧美大度的电影原声| 日韩一二三区不卡| 欧美精品一区二区三区视频| 亚洲精品在线电影| 久久综合色8888| 国产午夜亚洲精品羞羞网站| 欧美激情一区二区在线| 亚洲欧美中日韩| 一区二区三区四区在线播放| 亚洲综合色噜噜狠狠| 天堂av在线一区| 久久99精品久久久久婷婷| 国产综合色视频| 成人午夜免费电影| 一本一道久久a久久精品| 欧美天堂一区二区三区| 日韩欧美一二区| 欧美国产精品v| 亚洲乱码国产乱码精品精小说| 亚洲国产一区二区视频| 捆绑紧缚一区二区三区视频| 国产不卡在线视频| 91久久精品网| 精品国产污污免费网站入口| 日本一区二区免费在线观看视频 | 91精品国产福利| 欧美国产精品专区| 夜夜嗨av一区二区三区中文字幕| 日韩精品电影在线| 国产91高潮流白浆在线麻豆 | 2020日本不卡一区二区视频| 国产精品家庭影院| 丝袜美腿亚洲一区| 成人一区二区三区中文字幕| 欧美亚洲一区二区三区四区| 26uuu精品一区二区在线观看| 国产精品二区一区二区aⅴ污介绍| 夜夜亚洲天天久久| 国产高清不卡二三区| 欧美日韩国产高清一区| 国产精品天干天干在观线| 午夜激情久久久| 成人美女在线观看| 欧美久久久久久久久中文字幕| 欧美激情一区二区三区四区| 青青草成人在线观看| 色综合中文字幕国产 | 欧美性xxxxxxxx|