Patch title: Release 94 bulk changes
Abstract:
File: /pliant/graphic/filter/ijs.pli
Key:
    Removed line
    Added line
   
abstract
  [An interface enabling to use any IJS compatible driver.]


method f open stream options h -> status
  arg_rw ImageWriteFilterIjs f ; arg_rw Stream stream ; arg 
  var Str model := options option "model" Str
  if model=""
    return failure:"You must specify the printer model"
  f stream :> stream
  f line_size := h line_size
  stream_pipe (var Str pipe1_in) (var Str pipe1_out)
  stream_pipe (var Str pipe2_in) (var Str pipe2_out)
  stream_pipe (var Str data_in) (var Str data_out)
  thread
abstract
  [An interface enabling to use any IJS compatible driver.]


method f open stream options h -> status
  arg_rw ImageWriteFilterIjs f ; arg_rw Stream stream ; arg 
  var Str model := options option "model" Str
  if model=""
    return failure:"You must specify the printer model"
  f stream :> stream
  f line_size := h line_size
  stream_pipe (var Str pipe1_in) (var Str pipe1_out)
  stream_pipe (var Str pipe2_in) (var Str pipe2_out)
  stream_pipe (var Str data_in) (var Str data_out)
  thread
    execute (options option "ijs_server" Str "hpijs") root "
    var Str program := options option "ijs_server" Str "hpijs"
    var Str root := shunt (file_query "file:/bin/"+program standard)=success "file:/" "embedded:/"
    execute program root root path root input pipe1_in output pipe2_out error data_out
  f:eot request
  thread
    share f
    (var Stream output) open data_in in+safe
    while not output:atend
      output read_available (var Address adr) (var Int size)
      f:stream raw_write adr size
    f:eot release
  f:cmd open pipe1_out out+safe
  f:ack open pipe2_in in+safe
  f:cmd writechars "IJS[lf]"+character:170+"v1[lf]" ; f:cmd 
  var Str l := f:ack readline
  if l<>"IJS"
    return (failure "No IJS server ack (line 1 is '"+l+"')")
  var Str l := f:ack readline
  if l<>character:171+"v1"
    return failure:"No IJS server ack (line 2)"
  ijs_command f:cmd f:ack ijs_cmd_open ""
  ijs_command f:cmd f:ack ijs_cmd_begin_job ijs_int:0
  # ijs_command f:cmd f:ack ijs_cmd_list_params ijs_int:0
  ijs_set f:cmd f:ack "OutputFD" "2"
  ijs_set f:cmd f:ack "DeviceManufacturer" (options option "
  if (ijs_set f:cmd f:ack "DeviceModel" model)<>0 # "hp colo
    return failure:"unknown model"
  ijs_set f:cmd f:ack "Dpi" string:(cast h:size_x/(h:x1-h:x0
  ijs_set f:cmd f:ack "Width" (string h:size_x)
  ijs_set f:cmd f:ack "Height" (string h:size_y)
  ijs_set f:cmd f:ack "BitsPerSample" "8"
  ijs_set f:cmd f:ack "NumChan" (string h:gamut:pixel_size)
  f:eot request
  thread
    share f
    (var Stream output) open data_in in+safe
    while not output:atend
      output read_available (var Address adr) (var Int size)
      f:stream raw_write adr size
    f:eot release
  f:cmd open pipe1_out out+safe
  f:ack open pipe2_in in+safe
  f:cmd writechars "IJS[lf]"+character:170+"v1[lf]" ; f:cmd 
  var Str l := f:ack readline
  if l<>"IJS"
    return (failure "No IJS server ack (line 1 is '"+l+"')")
  var Str l := f:ack readline
  if l<>character:171+"v1"
    return failure:"No IJS server ack (line 2)"
  ijs_command f:cmd f:ack ijs_cmd_open ""
  ijs_command f:cmd f:ack ijs_cmd_begin_job ijs_int:0
  # ijs_command f:cmd f:ack ijs_cmd_list_params ijs_int:0
  ijs_set f:cmd f:ack "OutputFD" "2"
  ijs_set f:cmd f:ack "DeviceManufacturer" (options option "
  if (ijs_set f:cmd f:ack "DeviceModel" model)<>0 # "hp colo
    return failure:"unknown model"
  ijs_set f:cmd f:ack "Dpi" string:(cast h:size_x/(h:x1-h:x0
  ijs_set f:cmd f:ack "Width" (string h:size_x)
  ijs_set f:cmd f:ack "Height" (string h:size_y)
  ijs_set f:cmd f:ack "BitsPerSample" "8"
  ijs_set f:cmd f:ack "NumChan" (string h:gamut:pixel_size)
  ijs_set f:cmd f:ack "ColorSpace" (shunt h:gamut:model=colo
  ijs_set f:cmd f:ack "ColorSpace" (shunt h:gamut:pixel_size=1 "DeviceGray" h:gamut:pixel_size=3 (shunt (options option "sRGB") "sRGB" "DeviceRGB") "")
  ijs_set f:cmd f:ack "Quality:Quality" string:(options opti
  ijs_set f:cmd f:ack "Quality:ColorMode" string:(options op
  ijs_set f:cmd f:ack "Quality:Quality" string:(options opti
  ijs_set f:cmd f:ack "Quality:ColorMode" string:(options op
  ijs_set f:cmd f:ack "Quality:MediaType" string:(options option "ijs_mediatype" Int 0)
  ijs_set f:cmd f:ack "Quality:PenSet" string:(options optio
  ijs_set f:cmd f:ack "Quality:PenSet" string:(options optio
  ijs_set f:cmd f:ack "PaperSize" (options option "ijs_papersize" Str "8.27x11.69") # default is A4
  ijs_command f:cmd f:ack ijs_cmd_begin_page ijs_int:0
  status := success


image_record_filters ".ijs" Void false ImageWriteFilterIjs f
  ijs_command f:cmd f:ack ijs_cmd_begin_page ijs_int:0
  status := success


image_record_filters ".ijs" Void false ImageWriteFilterIjs f