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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rdppm.pas

?? DELPHI版的JPEG文件解碼源程序
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
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!

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区蜜桃视频| 久久理论电影网| 另类专区欧美蜜桃臀第一页| 中文字幕一区二区三区四区| 91麻豆精品国产| 99久久精品国产一区二区三区| 奇米精品一区二区三区在线观看| 亚洲日韩欧美一区二区在线| 欧美成人一级视频| 欧美日本不卡视频| bt7086福利一区国产| 毛片av一区二区| 同产精品九九九| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美一级国产精品| 欧美无乱码久久久免费午夜一区| 国产a久久麻豆| 久久精品国产在热久久| 亚洲第一搞黄网站| 一区二区三区欧美亚洲| 国产精品美女一区二区三区| 一区二区三区中文在线| 国产日韩精品视频一区| 日韩欧美国产三级| 欧美视频完全免费看| 91麻豆福利精品推荐| 懂色中文一区二区在线播放| 激情五月播播久久久精品| 日本va欧美va精品发布| 亚洲黄一区二区三区| 中文字幕一区av| 久久久国际精品| 欧美电视剧在线观看完整版| 91精品国产综合久久久久| 欧美日本在线一区| 欧美色综合久久| 欧美丝袜自拍制服另类| 欧美色电影在线| 欧美性一区二区| 欧美性猛交xxxx乱大交退制版| 一本色道久久综合亚洲aⅴ蜜桃| 高清在线观看日韩| 国产成人亚洲精品青草天美| 国产乱对白刺激视频不卡| 九一九一国产精品| 国产美女精品人人做人人爽| 国产一区二区三区在线看麻豆| 激情综合色播五月| 国内成人免费视频| 国产精品伊人色| 丰满白嫩尤物一区二区| 岛国一区二区三区| 99久久精品国产精品久久| 色噜噜狠狠成人网p站| 欧美亚洲尤物久久| 欧美一区在线视频| 欧美成人国产一区二区| 国产色产综合色产在线视频| 欧美国产综合色视频| 亚洲青青青在线视频| 亚洲第一福利一区| 毛片av一区二区| 丁香婷婷综合激情五月色| 91尤物视频在线观看| 欧美日韩一区二区欧美激情| 日韩一区二区三区四区| 精品99999| 中文字幕一区二区三区四区不卡| 亚洲愉拍自拍另类高清精品| 男男gaygay亚洲| 成人网男人的天堂| 色屁屁一区二区| 欧美电视剧在线观看完整版| 国产精品拍天天在线| 亚洲va天堂va国产va久| 久久国产精品99久久人人澡| 成人avav影音| 欧美日韩国产首页| 欧美国产日本视频| 亚洲v中文字幕| 国产 日韩 欧美大片| 欧美日韩一级二级| 久久久精品天堂| 亚洲国产综合色| 国产99一区视频免费| 欧美三级中文字| 久久精品一区二区三区不卡 | 国产.欧美.日韩| 色婷婷av一区二区三区gif| 欧美tickle裸体挠脚心vk| 国产精品系列在线| 日韩av电影免费观看高清完整版| 国产成人无遮挡在线视频| 欧美色图天堂网| 久久精品一区二区三区四区| 婷婷久久综合九色综合绿巨人| 国产老妇另类xxxxx| 欧美日韩国产色站一区二区三区| 久久精品视频一区二区| 日本午夜一本久久久综合| 不卡av电影在线播放| 51精品国自产在线| 亚洲精品视频免费看| 国产成人在线视频网址| 91精品国产欧美一区二区成人| 综合在线观看色| 国产91丝袜在线观看| 67194成人在线观看| 亚洲乱码精品一二三四区日韩在线| 精品一区二区三区视频| 欧美猛男男办公室激情| 亚洲人精品一区| 成人免费视频一区二区| 日韩欧美国产三级| 日本成人在线不卡视频| 91国偷自产一区二区三区成为亚洲经典| 久久综合狠狠综合久久综合88| 亚洲国产另类av| 色88888久久久久久影院按摩| 国产欧美日韩综合精品一区二区| 免费美女久久99| 欧美日韩在线电影| 亚洲另类中文字| av福利精品导航| 国产精品久线在线观看| 国产成人在线观看免费网站| 久久综合久久综合亚洲| 美腿丝袜亚洲三区| 91精品麻豆日日躁夜夜躁| 日韩电影在线观看一区| 欧美日韩激情一区| 午夜精品在线视频一区| 欧美视频中文字幕| 午夜精品爽啪视频| 欧美少妇性性性| 偷窥少妇高潮呻吟av久久免费 | 欧美精品一区二区蜜臀亚洲| 琪琪一区二区三区| 欧美成人精品1314www| 极品瑜伽女神91| 久久这里只有精品视频网| 久久精品二区亚洲w码| 亚洲精品在线观| 激情伊人五月天久久综合| 久久精品一区二区| 成人黄页在线观看| 亚洲精选在线视频| 欧美亚洲国产bt| 三级成人在线视频| 欧美电视剧在线观看完整版| 国产中文字幕一区| 久久久久久久综合| 99久久伊人精品| 一片黄亚洲嫩模| 欧美精品18+| 久久国产精品99久久人人澡| 久久久不卡网国产精品一区| 成人午夜视频免费看| 成人欧美一区二区三区黑人麻豆 | 国产精品一区二区三区网站| 国产区在线观看成人精品| 成人激情免费电影网址| 亚洲一区二区三区四区中文字幕 | 日韩美女在线视频 | 欧美一区二区三区视频免费播放| 日韩成人一区二区| 久久久91精品国产一区二区精品 | 欧美一区二区三区男人的天堂| 久久99久久久久久久久久久| 国产欧美一区二区三区网站| 一本色道久久综合亚洲精品按摩| 亚洲大片精品永久免费| 久久久久国产精品麻豆| 色悠悠亚洲一区二区| 日韩1区2区3区| 欧美国产成人在线| 精品污污网站免费看| 国产一区二区免费视频| 亚洲欧美国产77777| 日韩网站在线看片你懂的| 9人人澡人人爽人人精品| 青青青伊人色综合久久| 国产精品久久国产精麻豆99网站 | 国产精品卡一卡二| 欧美日本一区二区| 粉嫩av一区二区三区| 热久久久久久久| 亚洲私人黄色宅男| 日韩视频一区二区三区在线播放| 成人av网址在线| 美女mm1313爽爽久久久蜜臀| 中文字幕一区在线观看视频| 日韩午夜在线播放| 欧洲一区在线观看| 国产精品一区二区91| 日韩av一区二区三区| 一区二区三区四区在线免费观看| 久久久久久久久岛国免费| 欧美日韩一级二级三级| 99re免费视频精品全部|