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

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

?? rdppm.pas

?? DELPHI版的JPEG文件解碼源程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  Note that same code works for PPM and PGM files. }
var
  source : ppm_source_ptr;
begin
  source := ppm_source_ptr(sinfo);

  if not ReadOK(source^.pub.input_file, source^.iobuffer,
                source^.buffer_width) then
    ERREXIT(j_common_ptr(cinfo), JERR_INPUT_EOF);
  get_raw_row := 1;
end;


{METHODDEF}
function get_word_gray_row (cinfo : j_compress_ptr;
                            sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading raw-word-format PGM files with any maxval }
var
  source : ppm_source_ptr;
  {register} ptr : JSAMPLE_PTR;
  {register} bufferptr : U_CHARptr;
  {register} rescale : JSAMPROW;
  col : JDIMENSION;
var
  {register} temp : int;
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
    temp  := UCH(bufferptr^);
    Inc(bufferptr);
    temp := temp or (UCH(bufferptr^) shl 8);
    Inc(bufferptr);
    ptr^ := rescale^[temp];
    Inc(ptr);
  end;
  get_word_gray_row := 1;
end;


{METHODDEF}
function get_word_rgb_row (cinfo : j_compress_ptr;
                           sinfo : cjpeg_source_ptr) : JDIMENSION; far;
{ This version is for reading raw-word-format PPM files with any maxval }
var
  source : ppm_source_ptr;
  {register} ptr : JSAMPLE_PTR;
  {register} bufferptr : U_CHARptr;
  {register} rescale : JSAMPROW;
  col : JDIMENSION;
var
  {register} temp : int;
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
    temp  := UCH(bufferptr^);
    Inc(bufferptr);
    temp := temp or (UCH(bufferptr^) shl 8);
    Inc(bufferptr);
    ptr^ := rescale^[temp];
    Inc(ptr);
    temp  := UCH(bufferptr^);
    Inc(bufferptr);
    temp := temp or (UCH(bufferptr^) shl 8);
    Inc(bufferptr);
    ptr^ := rescale^[temp];
    Inc(ptr);
    temp  := UCH(bufferptr^);
    Inc(bufferptr);
    temp := temp or (UCH(bufferptr^) shl 8);
    Inc(bufferptr);
    ptr^ := rescale^[temp];
    Inc(ptr);
  end;
  get_word_rgb_row := 1;
end;


{ Read the file header; return image size and component count. }

{METHODDEF}
procedure start_input_ppm (cinfo : j_compress_ptr;
                           sinfo : cjpeg_source_ptr); far;
var
  source : ppm_source_ptr;
  c : char;
  w, h, maxval : uint;
  need_iobuffer, use_raw_buffer, need_rescale : boolean;
var
  val, half_maxval : INT32;
begin
  source := ppm_source_ptr(sinfo);
  {getch} BlockRead(source^.pub.input_file^, c, 1);
  if (c <> 'P') then
    ERREXIT(j_common_ptr(cinfo), JERR_PPM_NOT);

  {getch} BlockRead(source^.pub.input_file^, c, 1);
  { subformat discriminator character }

  { detect unsupported variants (ie, PBM) before trying to read header }
  case (c) of
  '2',			{ it's a text-format PGM file }
  '3',			{ it's a text-format PPM file }
  '5',			{ it's a raw-format PGM file }
  '6':;			{ it's a raw-format PPM file }
  else
    ERREXIT(j_common_ptr(cinfo), JERR_PPM_NOT);
  end;

  { fetch the remaining header info }
  w := read_pbm_integer(cinfo, source^.pub.input_file^);
  h := read_pbm_integer(cinfo, source^.pub.input_file^);
  maxval := read_pbm_integer(cinfo, source^.pub.input_file^);

  if (w <= 0) or (h <= 0) or (maxval <= 0) then { error check }
    ERREXIT(j_common_ptr(cinfo), JERR_PPM_NOT);

  cinfo^.data_precision := BITS_IN_JSAMPLE; { we always rescale data to this }
  cinfo^.image_width := JDIMENSION (w);
  cinfo^.image_height := JDIMENSION (h);

  { initialize flags to most common settings }
  need_iobuffer := TRUE;		{ do we need an I/O buffer? }
  use_raw_buffer := FALSE;	{ do we map input buffer onto I/O buffer? }
  need_rescale := TRUE;		{ do we need a rescale array? }

  case (c) of
  '2':			{ it's a text-format PGM file }
    begin
      cinfo^.input_components := 1;
      cinfo^.in_color_space := JCS_GRAYSCALE;
      {$IFDEF DEBUG}
      TRACEMS2(j_common_ptr(cinfo), 1, JTRC_PGM_TEXT, w, h);
      {$ENDIF}
      source^.pub.get_pixel_rows := get_text_gray_row;
      need_iobuffer := FALSE;
    end;

  '3':			{ it's a text-format PPM file }
    begin
      cinfo^.input_components := 3;
      cinfo^.in_color_space := JCS_RGB;
      {$IFDEF DEBUG}
      TRACEMS2(j_common_ptr(cinfo), 1, JTRC_PPM_TEXT, w, h);
      {$ENDIF}
      source^.pub.get_pixel_rows := get_text_rgb_row;
      need_iobuffer := FALSE;
    end;

  '5':			{ it's a raw-format PGM file }
    begin
      cinfo^.input_components := 1;
      cinfo^.in_color_space := JCS_GRAYSCALE;
      TRACEMS2(j_common_ptr(cinfo), 1, JTRC_PGM, w, h);
      if (maxval > 255) then
      begin
        source^.pub.get_pixel_rows := get_word_gray_row;
      end
      else
        if (maxval = MAXJSAMPLE) and (SIZEOF(JSAMPLE) = SIZEOF(U_CHAR)) then
        begin
          source^.pub.get_pixel_rows := get_raw_row;
          use_raw_buffer := TRUE;
          need_rescale := FALSE;
        end
        else
        begin
          source^.pub.get_pixel_rows := get_scaled_gray_row;
        end;
    end;

  '6':			{ it's a raw-format PPM file }
    begin
      cinfo^.input_components := 3;
      cinfo^.in_color_space := JCS_RGB;
      {$IFDEF DEBUG}
      TRACEMS2(j_common_ptr(cinfo), 1, JTRC_PPM, w, h);
      {$ENDIF}
      if (maxval > 255) then
      begin
        source^.pub.get_pixel_rows := get_word_rgb_row;
      end
      else
        if (maxval = MAXJSAMPLE) and (SIZEOF(JSAMPLE) = SIZEOF(U_CHAR)) then
        begin
          source^.pub.get_pixel_rows := get_raw_row;
          use_raw_buffer := TRUE;
          need_rescale := FALSE;
        end
        else
        begin
          source^.pub.get_pixel_rows := get_scaled_rgb_row;
        end;
    end;
  end;

  { Allocate space for I/O buffer: 1 or 3 bytes or words/pixel. }
  if (need_iobuffer) then
  begin
    if (maxval<=255) then
      source^.buffer_width := size_t ( w * cinfo^.input_components *
                                     SIZEOF(U_CHAR) )
    else
      source^.buffer_width := size_t ( w * cinfo^.input_components *
                                     (2*SIZEOF(U_CHAR)) );

    source^.iobuffer := U_CHARptr (
      cinfo^.mem^.alloc_small (j_common_ptr(cinfo), JPOOL_IMAGE,
				  source^.buffer_width) );
  end;

  { Create compressor input buffer. }
  if (use_raw_buffer) then
  begin
    { For unscaled raw-input case, we can just map it onto the I/O buffer. }
    { Synthesize a JSAMPARRAY pointer structure }
    { Cast here implies near^.far pointer conversion on PCs }
    source^.pixrow := JSAMPROW (source^.iobuffer);
    source^.pub.buffer := JSAMPARRAY(@source^.pixrow);
    source^.pub.buffer_height := 1;
  end
  else
  begin
    { Need to translate anyway, so make a separate sample buffer. }
    source^.pub.buffer := cinfo^.mem^.alloc_sarray
      (j_common_ptr(cinfo), JPOOL_IMAGE,
       JDIMENSION (w * cinfo^.input_components), JDIMENSION(1) );
    source^.pub.buffer_height := 1;
  end;

  { Compute the rescaling array if required. }
  if (need_rescale) then
  begin
    { On 16-bit-int machines we have to be careful of maxval := 65535 }
    source^.rescale := JSAMPROW (
      cinfo^.mem^.alloc_small (j_common_ptr(cinfo), JPOOL_IMAGE,
			  size_t ((long(maxval) + long(1)) * SIZEOF(JSAMPLE))) );
    half_maxval := maxval div 2;
    for val := 0 to INT32(maxval) do
    begin
      { The multiplication here must be done in 32 bits to avoid overflow }
      source^.rescale^[val] := JSAMPLE ((val*MAXJSAMPLE + half_maxval) div maxval);
    end;
  end;
end;


{ Finish up at the end of the file. }

{METHODDEF}
procedure finish_input_ppm (cinfo : j_compress_ptr;
                            sinfo : cjpeg_source_ptr); far;
begin
  { no work }
end;


{ The module selection routine for PPM format input. }

{GLOBAL}
function jinit_read_ppm (cinfo : j_compress_ptr) : cjpeg_source_ptr;
var
  source : ppm_source_ptr;
begin
  { Create module interface object }
  source := ppm_source_ptr (
      cinfo^.mem^.alloc_small (j_common_ptr(cinfo), JPOOL_IMAGE,
				  SIZEOF(ppm_source_struct)) );
  { Fill in method ptrs, except get_pixel_rows which start_input sets }
  source^.pub.start_input := start_input_ppm;
  source^.pub.finish_input := finish_input_ppm;

  jinit_read_ppm  := cjpeg_source_ptr(source);
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲麻豆av一区二区| 在线观看亚洲一区| 一区二区理论电影在线观看| 国产日韩av一区二区| 国产亚洲一区二区在线观看| 日韩欧美在线123| 日韩欧美黄色影院| 欧美电影免费观看完整版| 日韩一级片在线观看| 69成人精品免费视频| 欧美精品xxxxbbbb| 日韩一级二级三级精品视频| 精品欧美一区二区久久| 欧美成人精品3d动漫h| 久久久久久久电影| 国产精品三级电影| 亚洲激情中文1区| 午夜精品久久久久久久久久| 午夜精品免费在线| 激情文学综合丁香| 99国产精品99久久久久久| 在线免费av一区| 日韩亚洲欧美在线观看| 久久精品一区二区三区四区| 国产欧美一区二区精品性色| 亚洲视频香蕉人妖| 亚洲福利一二三区| 精品一二线国产| 成人a免费在线看| 欧美亚洲一区二区在线| 91精品国产一区二区三区| 久久视频一区二区| 一区二区中文视频| 无码av中文一区二区三区桃花岛| 另类小说图片综合网| 成人污污视频在线观看| 一本高清dvd不卡在线观看| 欧美性xxxxxxxx| 久久精品一二三| 午夜不卡av在线| 久久se这里有精品| 91色|porny| 精品国产1区2区3区| 亚洲激情网站免费观看| 蜜桃视频在线一区| 色综合咪咪久久| 日韩你懂的在线观看| 一区二区三区欧美日韩| 欧美日本精品一区二区三区| 26uuu国产在线精品一区二区| 亚洲欧美日韩国产中文在线| 激情六月婷婷久久| 在线观看国产日韩| 国产精品无人区| 久久99在线观看| 欧美日韩精品免费观看视频 | 亚洲欧洲国产专区| 精品影视av免费| 欧美日韩亚洲不卡| 亚洲美女在线一区| 成人av网站在线观看免费| 精品国产伦一区二区三区观看方式 | 99久久久精品| 国产日韩欧美精品综合| 久久机这里只有精品| 91精品国产91久久久久久一区二区 | 色综合av在线| 欧美国产精品久久| 国产成人欧美日韩在线电影| 欧美成人一区二区三区片免费 | 精品一区二区久久| 精品粉嫩aⅴ一区二区三区四区| 丝袜脚交一区二区| 欧美区视频在线观看| 夜夜精品视频一区二区| 91久久精品国产91性色tv| 亚洲欧美激情一区二区| av综合在线播放| 亚洲精品老司机| 欧美三级电影网站| 日韩专区欧美专区| 欧美tk—视频vk| 黄色资源网久久资源365| 久久亚洲一级片| 国产999精品久久| 国产精品国产三级国产a| 91视频观看免费| 亚洲一区二区精品3399| 7777精品伊人久久久大香线蕉经典版下载| 亚洲第一会所有码转帖| 日韩三级精品电影久久久| 精品影视av免费| ●精品国产综合乱码久久久久| 91在线观看美女| 一级做a爱片久久| 欧美一卡2卡三卡4卡5免费| 国产专区欧美精品| 中文字幕一区二区三区蜜月| 一本到不卡精品视频在线观看| 午夜婷婷国产麻豆精品| 日韩一级大片在线| 成人激情开心网| 亚洲午夜在线观看视频在线| 欧美大片拔萝卜| 91首页免费视频| 日本免费在线视频不卡一不卡二| 欧美成人官网二区| 99精品黄色片免费大全| 免费看精品久久片| 亚洲欧洲一区二区三区| 日韩免费观看高清完整版| 国产99久久精品| 日本亚洲三级在线| 中文字幕在线不卡一区二区三区 | 色婷婷av一区二区三区软件| 亚洲成在人线免费| 日本一区二区三区在线不卡| 日本久久一区二区| 国产精品自拍网站| 日本欧美久久久久免费播放网| 国产精品视频麻豆| 日韩精品中文字幕一区 | 蜜桃av噜噜一区| 亚洲男女一区二区三区| 久久久噜噜噜久噜久久综合| 欧洲一区二区av| 成人午夜在线视频| 久久草av在线| 日本va欧美va瓶| 亚洲国产精品一区二区久久| 国产精品国产三级国产aⅴ无密码| 精品国产一区久久| 欧美一区午夜视频在线观看| 91丝袜国产在线播放| 国产乱码精品1区2区3区| 午夜精品影院在线观看| 亚洲自拍偷拍网站| 一区二区视频免费在线观看| 国产欧美日韩视频在线观看| 日韩三级高清在线| 欧美伊人久久久久久久久影院 | 精品女同一区二区| 欧美乱熟臀69xxxxxx| 色噜噜偷拍精品综合在线| 午夜视频一区二区三区| 日韩电影在线观看网站| 欧美在线观看一区| 99re66热这里只有精品3直播| 韩国v欧美v日本v亚洲v| 极品尤物av久久免费看| 蜜桃一区二区三区四区| 色吧成人激情小说| 99久久久免费精品国产一区二区| 国产福利精品导航| 成人午夜电影小说| eeuss鲁片一区二区三区| 成人爽a毛片一区二区免费| 懂色中文一区二区在线播放| 国产在线国偷精品产拍免费yy| 另类小说图片综合网| 九九精品一区二区| 国产一区二区三区综合| 国产精品99久久久久久宅男| 国产乱码字幕精品高清av| 国产成人综合在线播放| 成人精品小蝌蚪| 91片黄在线观看| 欧美丰满美乳xxx高潮www| 欧美高清视频在线高清观看mv色露露十八| 在线播放视频一区| 欧美精品一区二区三区在线播放 | 国产不卡视频一区二区三区| 成人黄动漫网站免费app| 色婷婷国产精品| 欧美一区二区三区色| 久久美女高清视频| 亚洲少妇屁股交4| 日本成人超碰在线观看| 国产成人在线视频网址| 色婷婷av一区二区| 日韩天堂在线观看| √…a在线天堂一区| 视频一区二区三区中文字幕| 激情深爱一区二区| 色婷婷激情综合| 日韩一区二区三区三四区视频在线观看 | 国产精品免费久久| 亚洲最大的成人av| 国产一区二区不卡在线| 一本到高清视频免费精品| 日韩亚洲欧美一区二区三区| 国产精品高潮呻吟| 免费高清在线视频一区·| 99视频一区二区| 精品免费一区二区三区| 国产精品卡一卡二卡三| 日本不卡一区二区三区高清视频| 成人激情小说网站| 欧美一区二区高清| 亚洲曰韩产成在线|