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

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

?? rdppm.pas

?? DELPHI版的JPEG文件解碼源程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
Unit rdppm;

{ rdppm.c

  Copyright (C) 1991-1997, Thomas G. Lane.
  This file is part of the Independent JPEG Group's software.
  For conditions of distribution and use, see the accompanying README file.

  This file contains routines to read input images in PPM/PGM format.
  The extended 2-byte-per-sample raw PPM/PGM formats are supported.
  The PBMPLUS library is NOT required to compile this software
  (but it is highly useful as a set of PPM image manipulation programs).

  These routines may need modification for non-Unix environments or
  specialized applications.  As they stand, they assume input from
  an ordinary stdio stream.  They further assume that reading begins
  at the start of the file; start_input may need work if the
  user interface has already read some data (e.g., to determine that
  the file is indeed PPM format).
 }

interface

{$define CHAR_IS_UNSIGNED}

{$I jconfig.inc}

uses
  jdeferr,
  jmorecfg,
  jerror,
  jpeglib,
  jinclude,
  cdjpeg;               { Common decls for cjpeg/djpeg applications }

{GLOBAL}
function jinit_read_ppm (cinfo : j_compress_ptr) : cjpeg_source_ptr;


implementation

{ Portions of this code are based on the PBMPLUS library, which is:
*
* Copyright (C) 1988 by Jef Poskanzer.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted, provided
* that the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation.  This software is provided "as is" without express or
* implied warranty.
}


{ Macros to deal with unsigned chars as efficiently as compiler allows }

{$ifdef HAVE_UNSIGNED_CHAR}
type
  U_CHAR = unsigned char;
  UCH = int;
{$else} { !HAVE_UNSIGNED_CHAR }
  {$ifdef CHAR_IS_UNSIGNED}
  type
    U_CHAR = byte;
    U_CHARptr = ^U_CHAR;
    UCH = int;
  {$else}
  type
    U_CHAR = char;
    UCH(x) = int (x and $FF)
  {$endif}
{$endif} { HAVE_UNSIGNED_CHAR }


{ macro }
function ReadOK(f : FILEptr; buffer : pointer; len : size_t) : boolean;
begin
  ReadOK := JFREAD(f, buffer,len) = size_t(len);
end;
{
  On most systems, reading individual bytes with getc() is drastically less
  efficient than buffering a row at a time with fread().  On PCs, we must
  allocate the buffer in near data space, because we are assuming small-data
  memory model, wherein fread() can't reach far memory.  If you need to
  process very wide images on a PC, you might have to compile in large-memory
  model, or else replace fread() with a getc() loop --- which will be much
  slower.
 }


{ Private version of data source object }

type
  ppm_source_ptr = ^ppm_source_struct;
  ppm_source_struct = record
    pub : cjpeg_source_struct; { public fields }

    iobuffer : U_CHARptr;		{ non-FAR pointer to I/O buffer }
    pixrow : JSAMPROW;	                { FAR pointer to same }
    buffer_width : size_t;              { width of I/O buffer }
    rescale : JSAMPROW;                 { => maxval-remapping array, or NIL }
  end;
const
  LF = #10;
  CR = #13;

{LOCAL}
function pbm_getc (var infile : file) : char;
{ Read next char, skipping over any comments }
{ A comment/newline sequence is returned as a newline }
var
  {register} ch : char;
begin
  {getch} BlockRead(infile, ch, 1);
  if (ch = '#') then
  begin
    repeat
      BlockRead(infile, ch, 1);
    until (ch = LF) or eof(infile);
  end;
  pbm_getc := ch;
end;


{LOCAL}

function read_pbm_integer (cinfo : j_compress_ptr; var infile : file) : uint;
{ Read an unsigned decimal integer from the PPM file }
{ Swallows one trailing character after the integer }
{ Note that on a 16-bit-int machine, only values up to 64k can be read. }
{ This should not be a problem in practice. }
const
  TAB = ^I;
var
  {register} ch : char;
  {register} val : uint;
begin
  { Skip any leading whitespace }
  repeat
    ch := pbm_getc(infile);
    if eof(infile) then
      ERREXIT(j_common_ptr(cinfo), JERR_INPUT_EOF);
  until (ch <> ' ') and (ch <> TAB) and (ch <> LF) and (ch <> CR);

  if (ch < '0') or (ch > '9') then
    ERREXIT(j_common_ptr(cinfo), JERR_PPM_NONNUMERIC);

  val := ord(ch) - ord('0');
  repeat
    ch := pbm_getc(infile);
    if (ch >= '0') and (ch <= '9') then
    begin
      val := val * 10;
      Inc(val, ord(ch) - ord('0'));
    end
    else
      break;
  until FALSE;
  read_pbm_integer := val;
end;

{ Read one row of pixels.

  We provide several different versions depending on input file format.
  In all cases, input is scaled to the size of JSAMPLE.

  A really fast path is provided for reading byte/sample raw files with
  maxval := MAXJSAMPLE, which is the normal case for 8-bit data. }


{METHODDEF}
function get_text_gray_row (cinfo : j_compress_ptr;
                            sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading text-format PGM files with any maxval }
var
  source : ppm_source_ptr;
  infile : FILEptr;
  {register} ptr : JSAMPLE_PTR;
  {register} rescale : JSAMPROW;
  col : JDIMENSION;
begin
  source := ppm_source_ptr(sinfo);
  infile := source^.pub.input_file;
  rescale := source^.rescale;
  ptr := JSAMPLE_PTR(source^.pub.buffer^[0]);
  for col := pred(cinfo^.image_width) downto 0 do
  begin
    ptr^ := rescale^[read_pbm_integer(cinfo, infile^)];
    Inc(ptr);
  end;
  get_text_gray_row := 1;
end;


{METHODDEF}
function get_text_rgb_row (cinfo : j_compress_ptr;
                           sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading text-format PPM files with any maxval }
var
  source : ppm_source_ptr;
  infile : FILEptr;
  {register} ptr : JSAMPLE_PTR;
  {register} rescale : JSAMPROW;
  col : JDIMENSION;
begin
  source := ppm_source_ptr(sinfo);
  infile := source^.pub.input_file;
  rescale := source^.rescale;
  ptr := JSAMPLE_PTR(source^.pub.buffer^[0]);
  for col := pred(cinfo^.image_width) downto 0 do
  begin
    ptr^ := rescale^[read_pbm_integer(cinfo, infile^)];
    Inc(ptr);
    ptr^ := rescale^[read_pbm_integer(cinfo, infile^)];
    Inc(ptr);
    ptr^ := rescale^[read_pbm_integer(cinfo, infile^)];
    Inc(ptr);
  end;
  get_text_rgb_row := 1;
end;


{METHODDEF}
function get_scaled_gray_row (cinfo : j_compress_ptr;
                              sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading raw-byte-format PGM files with any maxval }
var
  source : ppm_source_ptr;
  {register} ptr : JSAMPLE_PTR;
  {register} bufferptr : U_CHARptr ;
  {register} rescale : JSAMPROW;
  col : JDIMENSION;
begin
  source := ppm_source_ptr(sinfo);
  rescale := source^.rescale;
  if not ReadOK(source^.pub.input_file, source^.iobuffer,
                source^.buffer_width) then
    ERREXIT(j_common_ptr(cinfo), JERR_INPUT_EOF);
  ptr := JSAMPLE_PTR(source^.pub.buffer^[0]);
  bufferptr := source^.iobuffer;
  for col := pred(cinfo^.image_width) downto 0 do
  begin
    ptr^ := rescale^[UCH(bufferptr^)];
    Inc(ptr);
    Inc(bufferptr);
  end;
  get_scaled_gray_row := 1;
end;


{METHODDEF}
function get_scaled_rgb_row (cinfo : j_compress_ptr;
                             sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading raw-byte-format PPM files with any maxval }
var
  source : ppm_source_ptr;
  {register} ptr : JSAMPLE_PTR;
  {register} bufferptr : U_CHARptr ;
  {register} rescale : JSAMPROW;
  col : JDIMENSION;
begin
  source := ppm_source_ptr (sinfo);
  rescale := source^.rescale;

  if not ReadOK(source^.pub.input_file, source^.iobuffer,
                source^.buffer_width) then
    ERREXIT(j_common_ptr(cinfo), JERR_INPUT_EOF);
  ptr := JSAMPLE_PTR(source^.pub.buffer^[0]);
  bufferptr := source^.iobuffer;
  for col := pred(cinfo^.image_width) downto 0 do
  begin
    ptr^ := rescale^[UCH(bufferptr^)];
    Inc(ptr);
    Inc(bufferptr);
    ptr^ := rescale^[UCH(bufferptr^)];
    Inc(ptr);
    Inc(bufferptr);
    ptr^ := rescale^[UCH(bufferptr^)];
    Inc(ptr);
    Inc(bufferptr);
  end;
  get_scaled_rgb_row := 1;
end;


{METHODDEF}
function get_raw_row (cinfo : j_compress_ptr;
                      sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading raw-byte-format files with maxval := MAXJSAMPLE.
  In this case we just read right into the JSAMPLE buffer!

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩av一区二区三区| 亚洲女女做受ⅹxx高潮| 性做久久久久久免费观看| 一本色道久久综合精品竹菊| 中文字幕中文字幕在线一区| 国产精品18久久久久久久久| 精品少妇一区二区三区视频免付费| 亚洲gay无套男同| 欧美三级日本三级少妇99| 亚洲国产日韩一级| 欧美午夜片在线看| 日韩一区精品字幕| 欧美一区在线视频| 国产91富婆露脸刺激对白| 久久网这里都是精品| 韩国午夜理伦三级不卡影院| 久久久久国产精品麻豆ai换脸 | 免费在线观看不卡| 91麻豆精品国产91久久久久久| 视频在线观看一区| 精品久久久久99| 国产成人免费视频一区| 国产精品美女久久久久久2018| 成人午夜看片网址| 亚洲欧美日韩久久精品| 欧美视频在线观看一区二区| 日韩精品一区第一页| 91精品国产综合久久香蕉麻豆| 久久精品999| 久久久久久久综合| eeuss影院一区二区三区| 亚洲已满18点击进入久久| 欧美嫩在线观看| 老鸭窝一区二区久久精品| 久久综合成人精品亚洲另类欧美| 粉嫩蜜臀av国产精品网站| ㊣最新国产の精品bt伙计久久| 日本精品一区二区三区高清 | 自拍偷拍亚洲欧美日韩| 色老汉一区二区三区| 肉肉av福利一精品导航| 2021中文字幕一区亚洲| 99久久久久免费精品国产 | 欧美国产视频在线| 欧美综合天天夜夜久久| 日韩av成人高清| 国产欧美日韩另类一区| 在线这里只有精品| 极品尤物av久久免费看| 国产精品萝li| 在线播放亚洲一区| 国产一区91精品张津瑜| 自拍偷拍亚洲欧美日韩| 欧洲精品在线观看| 国产成人三级在线观看| 亚洲成人在线观看视频| 中文在线一区二区| 91麻豆精品国产91久久久久| 不卡一区在线观看| 免费人成精品欧美精品| 亚洲欧美偷拍卡通变态| 久久久五月婷婷| 欧美人伦禁忌dvd放荡欲情| 国产91色综合久久免费分享| 日韩高清国产一区在线| 亚洲少妇屁股交4| 精品国产免费人成电影在线观看四季| 97精品久久久午夜一区二区三区| 久久国产福利国产秒拍| 亚洲专区一二三| 国产精品传媒入口麻豆| 久久无码av三级| 911精品国产一区二区在线| 成人18精品视频| 国产老妇另类xxxxx| 日韩成人av影视| 亚洲国产精品视频| 亚洲理论在线观看| 国产精品私房写真福利视频| 日韩欧美亚洲一区二区| 欧美日韩一区视频| 日本乱码高清不卡字幕| 99久久伊人精品| 国产成人免费av在线| 精品一区二区免费在线观看| 午夜久久久影院| 亚洲国产精品久久久久秋霞影院| 一色屋精品亚洲香蕉网站| 久久久久久黄色| 精品精品国产高清a毛片牛牛 | 亚洲成av人片观看| 亚洲激情综合网| 亚洲精品免费一二三区| 国产精品的网站| 国产精品国产三级国产aⅴ原创 | 亚洲国产成人精品视频| 一区二区日韩av| 亚洲精品免费在线| 伊人开心综合网| 一区二区欧美视频| 亚洲国产另类av| 丝袜美腿亚洲一区二区图片| 午夜天堂影视香蕉久久| 午夜电影网一区| 免费视频最近日韩| 理论电影国产精品| 狠狠色2019综合网| 国产高清无密码一区二区三区| 国产精品伊人色| 不卡的av中国片| 色嗨嗨av一区二区三区| 欧美日韩中文字幕一区| 在线成人免费视频| 日韩精品一区二区三区三区免费| 精品美女在线观看| 国产三级久久久| 亚洲色图制服诱惑| 亚洲一区在线看| 奇米色一区二区| 国产福利一区二区| av一区二区三区在线| 日本久久精品电影| 欧美一二三四区在线| 久久精品水蜜桃av综合天堂| 国产精品嫩草影院com| 亚洲欧美电影院| 亚洲h动漫在线| 国产在线视视频有精品| 成人毛片视频在线观看| 欧美综合久久久| 日韩久久久精品| 国产精品电影一区二区| 亚洲成人一二三| 国产麻豆成人精品| 91麻豆swag| 日韩一级二级三级| 欧美激情一区三区| 亚洲精品成人精品456| 蜜桃视频在线一区| 成人av电影在线观看| 欧美久久久一区| 国产清纯美女被跳蛋高潮一区二区久久w | 综合电影一区二区三区| 天堂成人国产精品一区| 国产精品77777| 欧美三级日韩三级国产三级| 久久久一区二区三区捆绑**| 亚洲欧美视频在线观看视频| 免费看精品久久片| 成人激情小说乱人伦| 欧美日韩免费观看一区二区三区| 日韩精品一区二区三区三区免费| 《视频一区视频二区| 久久精品久久综合| 色婷婷亚洲精品| 久久九九99视频| 午夜精品成人在线视频| 国产传媒日韩欧美成人| 7777精品伊人久久久大香线蕉超级流畅| 国产欧美日韩三级| 蜜臀久久久久久久| 色综合天天综合狠狠| 欧美v日韩v国产v| 亚洲美腿欧美偷拍| 国产成人精品综合在线观看 | 欧美日精品一区视频| 国产精品久久毛片| 欧美aaa在线| 欧洲精品一区二区| 国产精品免费看片| 精品亚洲国产成人av制服丝袜| 色香蕉久久蜜桃| 中文字幕乱码一区二区免费| 日本sm残虐另类| 欧美午夜片在线看| 成人欧美一区二区三区1314| 国产一区二区美女| 欧美人牲a欧美精品| 亚洲精品国产精华液| 成人午夜激情视频| 久久久综合激的五月天| 日本成人在线看| 欧美日韩日本视频| 夜夜操天天操亚洲| 91丨九色丨国产丨porny| 国产性做久久久久久| 黄色日韩网站视频| 欧美一卡二卡在线| 午夜视频一区二区| 欧美优质美女网站| 一区二区三区不卡在线观看 | 欧美日韩亚洲综合在线| 中文字幕亚洲成人| 成人一级片网址| 国产日产亚洲精品系列| 国产91精品久久久久久久网曝门| 久久精品一区二区三区四区| 国产一区福利在线| 久久久久久久久久电影| 国产成人综合亚洲网站|