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

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

?? pfrsbit.c

?? 智能設備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************/
/*                                                                         */
/*  pfrsbit.c                                                              */
/*                                                                         */
/*    FreeType PFR bitmap loader (body).                                   */
/*                                                                         */
/*  Copyright 2002, 2003, 2006 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 "pfrsbit.h"
#include "pfrload.h"
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H

#include "pfrerror.h"

#undef  FT_COMPONENT
#define FT_COMPONENT  trace_pfr


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                      PFR BIT WRITER                           *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  typedef struct  PFR_BitWriter_
  {
    FT_Byte*  line;      /* current line start                    */
    FT_Int    pitch;     /* line size in bytes                    */
    FT_Int    width;     /* width in pixels/bits                  */
    FT_Int    rows;      /* number of remaining rows to scan      */
    FT_Int    total;     /* total number of bits to draw          */

  } PFR_BitWriterRec, *PFR_BitWriter;


  static void
  pfr_bitwriter_init( PFR_BitWriter  writer,
                      FT_Bitmap*     target,
                      FT_Bool        decreasing )
  {
    writer->line   = target->buffer;
    writer->pitch  = target->pitch;
    writer->width  = target->width;
    writer->rows   = target->rows;
    writer->total  = writer->width * writer->rows;

    if ( !decreasing )
    {
      writer->line += writer->pitch * ( target->rows-1 );
      writer->pitch = -writer->pitch;
    }
  }


  static void
  pfr_bitwriter_decode_bytes( PFR_BitWriter  writer,
                              FT_Byte*       p,
                              FT_Byte*       limit )
  {
    FT_Int    n, reload;
    FT_Int    left = writer->width;
    FT_Byte*  cur  = writer->line;
    FT_UInt   mask = 0x80;
    FT_UInt   val  = 0;
    FT_UInt   c    = 0;


    n = (FT_Int)( limit - p ) * 8;
    if ( n > writer->total )
      n = writer->total;

    reload = n & 7;

    for ( ; n > 0; n-- )
    {
      if ( ( n & 7 ) == reload )
        val = *p++;

      if ( val & 0x80 )
        c |= mask;

      val  <<= 1;
      mask >>= 1;

      if ( --left <= 0 )
      {
        cur[0] = (FT_Byte)c;
        left   = writer->width;
        mask   = 0x80;

        writer->line += writer->pitch;
        cur           = writer->line;
        c             = 0;
      }
      else if ( mask == 0 )
      {
        cur[0] = (FT_Byte)c;
        mask   = 0x80;
        c      = 0;
        cur ++;
      }
    }

    if ( mask != 0x80 )
      cur[0] = (FT_Byte)c;
  }


  static void
  pfr_bitwriter_decode_rle1( PFR_BitWriter  writer,
                             FT_Byte*       p,
                             FT_Byte*       limit )
  {
    FT_Int    n, phase, count, counts[2], reload;
    FT_Int    left = writer->width;
    FT_Byte*  cur  = writer->line;
    FT_UInt   mask = 0x80;
    FT_UInt   c    = 0;


    n = writer->total;

    phase     = 1;
    counts[0] = 0;
    counts[1] = 0;
    count     = 0;
    reload    = 1;

    for ( ; n > 0; n-- )
    {
      if ( reload )
      {
        do
        {
          if ( phase )
          {
            FT_Int  v;


            if ( p >= limit )
              break;

            v         = *p++;
            counts[0] = v >> 4;
            counts[1] = v & 15;
            phase     = 0;
            count     = counts[0];
          }
          else
          {
            phase = 1;
            count = counts[1];
          }

        } while ( count == 0 );
      }

      if ( phase )
        c |= mask;

      mask >>= 1;

      if ( --left <= 0 )
      {
        cur[0] = (FT_Byte) c;
        left   = writer->width;
        mask   = 0x80;

        writer->line += writer->pitch;
        cur           = writer->line;
        c             = 0;
      }
      else if ( mask == 0 )
      {
        cur[0] = (FT_Byte)c;
        mask   = 0x80;
        c      = 0;
        cur ++;
      }

      reload = ( --count <= 0 );
    }

    if ( mask != 0x80 )
      cur[0] = (FT_Byte) c;
  }


  static void
  pfr_bitwriter_decode_rle2( PFR_BitWriter  writer,
                             FT_Byte*       p,
                             FT_Byte*       limit )
  {
    FT_Int    n, phase, count, reload;
    FT_Int    left = writer->width;
    FT_Byte*  cur  = writer->line;
    FT_UInt   mask = 0x80;
    FT_UInt   c    = 0;


    n = writer->total;

    phase  = 1;
    count  = 0;
    reload = 1;

    for ( ; n > 0; n-- )
    {
      if ( reload )
      {
        do
        {
          if ( p >= limit )
            break;

          count = *p++;
          phase = phase ^ 1;

        } while ( count == 0 );
      }

      if ( phase )
        c |= mask;

      mask >>= 1;

      if ( --left <= 0 )
      {
        cur[0] = (FT_Byte) c;
        c      = 0;
        mask   = 0x80;
        left   = writer->width;

        writer->line += writer->pitch;
        cur           = writer->line;
      }
      else if ( mask == 0 )
      {
        cur[0] = (FT_Byte)c;
        c      = 0;
        mask   = 0x80;
        cur ++;
      }

      reload = ( --count <= 0 );
    }

    if ( mask != 0x80 )
      cur[0] = (FT_Byte) c;
  }


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****                  BITMAP DATA DECODING                         *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/

  static void
  pfr_lookup_bitmap_data( FT_Byte*   base,
                          FT_Byte*   limit,
                          FT_UInt    count,
                          FT_UInt    flags,
                          FT_UInt    char_code,
                          FT_ULong*  found_offset,
                          FT_ULong*  found_size )
  {
    FT_UInt   left, right, char_len;
    FT_Bool   two = FT_BOOL( flags & 1 );
    FT_Byte*  buff;


    char_len = 4;
    if ( two )       char_len += 1;
    if ( flags & 2 ) char_len += 1;
    if ( flags & 4 ) char_len += 1;

    left  = 0;
    right = count;

    while ( left < right )
    {
      FT_UInt  middle, code;


      middle = ( left + right ) >> 1;
      buff   = base + middle * char_len;

      /* check that we are not outside of the table -- */
      /* this is possible with broken fonts...         */
      if ( buff + char_len > limit )
        goto Fail;

      if ( two )
        code = PFR_NEXT_USHORT( buff );
      else
        code = PFR_NEXT_BYTE( buff );

      if ( code == char_code )
        goto Found_It;

      if ( code < char_code )
        left = middle;
      else
        right = middle;
    }

  Fail:
    /* Not found */
    *found_size   = 0;
    *found_offset = 0;
    return;

  Found_It:
    if ( flags & 2 )
      *found_size = PFR_NEXT_USHORT( buff );
    else
      *found_size = PFR_NEXT_BYTE( buff );

    if ( flags & 4 )
      *found_offset = PFR_NEXT_ULONG( buff );
    else
      *found_offset = PFR_NEXT_USHORT( buff );
  }


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美日本乱码一线二线 | 欧美日韩精品一二三区| 成人精品国产一区二区4080| 国产一区二区福利| 国产一区二区精品久久99| 久久国产婷婷国产香蕉| 另类综合日韩欧美亚洲| 日韩福利视频网| 免费成人深夜小野草| 日韩不卡一区二区三区| 日韩激情av在线| 日韩国产精品久久| 久久99精品久久久久久国产越南| 日本欧美一区二区在线观看| 青青草国产精品97视觉盛宴| 久久国产福利国产秒拍| 国产精品996| 99精品国产视频| 91老司机福利 在线| 欧美中文字幕亚洲一区二区va在线| 色94色欧美sute亚洲13| 欧美日本一区二区| 精品久久国产字幕高潮| 日本一区二区视频在线| 亚洲欧美一区二区三区国产精品| 一区二区三区四区不卡视频| 五月婷婷激情综合网| 男女视频一区二区| 国产一区二区三区在线看麻豆| 国产精品456| 色综合久久久久综合体桃花网| 欧美体内she精高潮| 日韩欧美电影在线| 国产人伦精品一区二区| 亚洲色图20p| 色国产综合视频| 欧美精品粉嫩高潮一区二区| 欧美一个色资源| 日本一区二区三区免费乱视频| 亚洲免费观看视频| 奇米四色…亚洲| 成人免费视频一区二区| 日本精品一区二区三区高清| 在线播放中文一区| 久久午夜国产精品| 亚洲天堂2014| 日产精品久久久久久久性色| 国产馆精品极品| 在线看国产一区| 日韩精品一区二区三区视频在线观看| 国产色产综合色产在线视频| 一区二区三区中文在线观看| 久久国产综合精品| 色综合天天综合色综合av| 在线播放一区二区三区| 中文字幕国产一区| 石原莉奈在线亚洲二区| 北岛玲一区二区三区四区| 欧美精品日韩一区| 国产精品乱码人人做人人爱| 视频一区二区三区在线| 成人av资源在线| 日韩三级在线观看| 亚洲精品欧美专区| 国产一区中文字幕| 欧美日韩黄色影视| 国产日韩欧美制服另类| 天天影视涩香欲综合网| av电影在线不卡| 美国欧美日韩国产在线播放| 99久久久久免费精品国产| 欧美一级艳片视频免费观看| 亚洲欧美激情一区二区| 国内精品视频一区二区三区八戒| 欧美在线观看视频一区二区三区| 久久精品男人天堂av| 秋霞电影一区二区| 欧美在线色视频| 中文字幕欧美一| 国产高清亚洲一区| 日韩一区二区免费高清| 亚洲最大色网站| 91免费看片在线观看| 久久精品人人爽人人爽| 久久爱www久久做| 欧美精品久久天天躁| 依依成人精品视频| 成人av在线资源| 久久久www成人免费毛片麻豆| 日本视频一区二区三区| 欧美日韩成人一区二区| 一区二区三区四区乱视频| eeuss国产一区二区三区| 国产亚洲污的网站| 精品系列免费在线观看| 日韩免费看网站| 蜜桃av一区二区三区| 91精品国产综合久久精品| 爽好久久久欧美精品| 欧美日韩国产不卡| 亚洲小少妇裸体bbw| 色婷婷久久一区二区三区麻豆| 国产精品国产三级国产三级人妇 | 国产综合色在线| 欧美一卡在线观看| 蜜桃视频在线一区| 日韩精品一区二区三区四区视频 | 国产精品原创巨作av| 日韩视频中午一区| 在线亚洲免费视频| 亚洲一区在线观看视频| 欧美系列在线观看| 亚洲1区2区3区4区| 91麻豆精品国产91久久久使用方法 | 精品一区二区三区不卡| 日韩精品在线网站| 国产麻豆午夜三级精品| 久久综合久久综合久久| 国产精品77777| 亚洲国产精品传媒在线观看| 丰满白嫩尤物一区二区| 中文字幕精品一区| 色综合久久99| 亚洲午夜羞羞片| 日韩一级完整毛片| 国内成人自拍视频| 国产欧美日韩另类一区| fc2成人免费人成在线观看播放| ㊣最新国产の精品bt伙计久久| 色先锋aa成人| 亚洲成人免费电影| 日韩视频一区在线观看| 国产精品一二三四| 有码一区二区三区| 欧美福利视频一区| 激情综合色播激情啊| 国产精品家庭影院| 欧美日韩精品久久久| 美女性感视频久久| 国产欧美日本一区视频| 色婷婷av一区二区| 日本欧美久久久久免费播放网| 久久黄色级2电影| 欧美韩日一区二区三区四区| 91麻豆自制传媒国产之光| 天天影视涩香欲综合网| 国产欧美日韩另类视频免费观看| 91久久精品一区二区二区| 日本不卡视频在线| 国产精品三级av| 欧美日韩国产一级| 国产91精品一区二区麻豆亚洲| 一区二区三区.www| 精品久久久久久久一区二区蜜臀| 99热精品一区二区| 日韩中文字幕亚洲一区二区va在线| 久久精品亚洲精品国产欧美| 色呦呦一区二区三区| 久久国产尿小便嘘嘘| 亚洲老妇xxxxxx| 欧美va亚洲va香蕉在线| 91亚洲精品久久久蜜桃| 久久精品国产秦先生| 亚洲视频图片小说| 精品国产91久久久久久久妲己| 97久久超碰国产精品| 久热成人在线视频| 一区二区三区免费观看| 国产丝袜在线精品| 8v天堂国产在线一区二区| 成人午夜av电影| 久久精工是国产品牌吗| 亚洲亚洲精品在线观看| 国产精品白丝在线| 久久一日本道色综合| 555www色欧美视频| 一本到一区二区三区| 国产一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 中文字幕亚洲精品在线观看| 欧美成人猛片aaaaaaa| 欧美性色综合网| 99re成人在线| 成人免费视频免费观看| 久久99国产精品免费网站| 婷婷国产在线综合| 99re热这里只有精品免费视频| 国产在线播放一区| 开心九九激情九九欧美日韩精美视频电影 | 精品国产免费视频| 欧美一区二区三区四区视频| 欧美色成人综合| 91在线观看地址| 成人sese在线| 国产成人无遮挡在线视频| 久草在线在线精品观看| 奇米影视7777精品一区二区| 丝袜亚洲另类欧美| 午夜精品久久久久久久久久久| 一区二区三区日韩在线观看|