Patch title: Release 91 bulk changes
Abstract:
File: /graphic/filter/jpeg.pli
Key:
    Removed line
    Added line
   
abstract
  [The well known JPEG file format interface.] ; eol
  [We link to JPEG standard library rather than porting it t
  [JPEG encoding is far from beeing trivial.]


type jpeg_error_mgr
abstract
  [The well known JPEG file format interface.] ; eol
  [We link to JPEG standard library rather than porting it t
  [JPEG encoding is far from beeing trivial.]


type jpeg_error_mgr
  field (Array Byte 132) unused1
  field Address error_exit
  field Address emit_message
  field (Array Byte 132-8) unused1




function error_exit cinfo
  arg Address cinfo
  external_calling_convention

function emit_message cinfo msg_level
  arg Address cinfo ; arg Int msg_level
  external_calling_convention

method f open stream options h -> status
  arg_rw ImageReadFilterJpeg f ; arg_rw Stream stream ; arg 
  f:src stream :> stream
  f:cinfo err :> jpeg_std_error f:jerr
method f open stream options h -> status
  arg_rw ImageReadFilterJpeg f ; arg_rw Stream stream ; arg 
  f:src stream :> stream
  f:cinfo err :> jpeg_std_error f:jerr
  f:jerr error_exit := (the_function error_exit Address):executable
  f:jerr emit_message := (the_function emit_message Address Int):executable
  jpeg_create_decompress f:cinfo
  f:cinfo src :> f src
  f:src init_source := (the_function init_source jpeg_decomp
  f:src fill_input_buffer := (the_function fill_input_buffer
  f:src skip_input_data := (the_function skip_input_data jpe
  f:src resync_to_restart := (the_function resync_to_restart
  f:src term_source := (the_function term_source jpeg_decomp
  if (jpeg_read_header f:cinfo true)<>1
    jpeg_destroy_decompress f:cinfo
    return failure
  if false # f:cinfo:jpeg_color_space<>JCS_RGB and f:cinfo:j
    jpeg_destroy_decompress f:cinfo
    return (failure "unsupported JPEG color space "+(string 
  var Int size_x := f:cinfo image_width
  var Int size_y := f:cinfo image_height
  if not ((options (options option_position "resolution" 0) 
    dpi_x := options option "resolution" Float 72 ; dpi_y :=
  if read_resolution
    var Int density_unit := ((addressof f:cinfo) translate B
    if density_unit=1
      dpi_x := ((addressof f:cinfo) translate Byte 288) map 
      dpi_y := ((addressof f:cinfo) translate Byte 290) map 
  h := image_prototype 0 0 size_x/dpi_x*25.4 size_y/dpi_y*25
  jpeg_set_marker_processor f:cinfo JPEG_COM (the_function p
  jpeg_start_decompress f:cinfo
  f remain := size_y  
  status := success


  jpeg_create_decompress f:cinfo
  f:cinfo src :> f src
  f:src init_source := (the_function init_source jpeg_decomp
  f:src fill_input_buffer := (the_function fill_input_buffer
  f:src skip_input_data := (the_function skip_input_data jpe
  f:src resync_to_restart := (the_function resync_to_restart
  f:src term_source := (the_function term_source jpeg_decomp
  if (jpeg_read_header f:cinfo true)<>1
    jpeg_destroy_decompress f:cinfo
    return failure
  if false # f:cinfo:jpeg_color_space<>JCS_RGB and f:cinfo:j
    jpeg_destroy_decompress f:cinfo
    return (failure "unsupported JPEG color space "+(string 
  var Int size_x := f:cinfo image_width
  var Int size_y := f:cinfo image_height
  if not ((options (options option_position "resolution" 0) 
    dpi_x := options option "resolution" Float 72 ; dpi_y :=
  if read_resolution
    var Int density_unit := ((addressof f:cinfo) translate B
    if density_unit=1
      dpi_x := ((addressof f:cinfo) translate Byte 288) map 
      dpi_y := ((addressof f:cinfo) translate Byte 290) map 
  h := image_prototype 0 0 size_x/dpi_x*25.4 size_y/dpi_y*25
  jpeg_set_marker_processor f:cinfo JPEG_COM (the_function p
  jpeg_start_decompress f:cinfo
  f remain := size_y  
  status := success