Patch title: Release 91 bulk changes
Abstract:
File: /graphic/filter/pcl.pli
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# Generic PCL driver
# tested on HP Designjet large format printers


method f open s options h -> status
  arg_rw ImageWriteFilterPcl f ; arg_rw Stream s ; arg Str o
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# Generic PCL driver
# tested on HP Designjet large format printers


method f open s options h -> status
  arg_rw ImageWriteFilterPcl f ; arg_rw Stream s ; arg Str o
  if h:gamut:pixel_size<>3
    return failure:"Only 3 components images can be saved as
  if h:gamut:pixel_size<>1 and h:gamut:pixel_size<>3
    return failure:"Only 1 or 3 components images can be saved as .pcl"
  f stream :> s
  f line_size := h line_size
  f buffer := memory_allocate 2*f:line_size+4 addressof:f
  f hpgl := options option "hpgl"
  if not (options option "pcl_no_compression")
    if (options option "pcl_seedrow_compression")
      f seedrow := true
    eif (options option "pcl_packbits_compression")
      f packbits := true
    else
      f seedrow := true
  var Float dpi := h:size_x/(abs h:x1-h:x0)*25.4
  s writechars escape+"E" # reset
  if f:hpgl
    s writechars escape+"%-12345X@PJL RESET[cr][lf]@PJL SET 
    s writechars escape+"%1B" # enter HP GL/2 mode
    s writechars "BP3,1,5,1;" # do not store file on the dev
    if (options option "hpgl_page")
      var Int nx := cast 1016.0*h:size_x/dpi+0.5 Int
      var Int ny := cast 1016.0*h:size_y/dpi+0.5 Int
      s writechars "PS"+string:ny+","+string:nx+";" # set pa
    else
      s writechars "PS;" # no page clip
    s writechars escape+"%0A" # enter HP RTL mode
  if not (options option "pcl_no_paper_size")
    # A4 = 26 , A3 = 27 , A3+ = 16, custom = 101
    s writechars escape+"&l"+(options option "pcl_paper_size
  if (options option "pcl_no_perforation_skip")
    s writechars escape+"&l0L" # Turn off perforation skip
  s writechars escape+"&a1N" # No negative motion - allow pl
  if h:gamut:dimension=3
    var Int color_model := shunt h:gamut:model<>color_gamut_
    s writechars escape+"*v6W"+character:color_model+charact
  s writechars escape+"*t"+string:(cast dpi Int)+"R" # set r
  s writechars escape+"*r"+(string h:size_x)+"S" # number of
  s writechars escape+"*r"+(string h:size_y)+"T" # number of
  s writechars escape+"*r1A" # start raster graphics at curr
  s writechars escape+"*b"+(shunt f:seedrow "3" f:packbits "
  if f:seedrow
    f previous_line := memory_zallocate f:line_size addresso
  status := success



image_record_filters ".pcl" Void ImageWriteFilterPcl
  f stream :> s
  f line_size := h line_size
  f buffer := memory_allocate 2*f:line_size+4 addressof:f
  f hpgl := options option "hpgl"
  if not (options option "pcl_no_compression")
    if (options option "pcl_seedrow_compression")
      f seedrow := true
    eif (options option "pcl_packbits_compression")
      f packbits := true
    else
      f seedrow := true
  var Float dpi := h:size_x/(abs h:x1-h:x0)*25.4
  s writechars escape+"E" # reset
  if f:hpgl
    s writechars escape+"%-12345X@PJL RESET[cr][lf]@PJL SET 
    s writechars escape+"%1B" # enter HP GL/2 mode
    s writechars "BP3,1,5,1;" # do not store file on the dev
    if (options option "hpgl_page")
      var Int nx := cast 1016.0*h:size_x/dpi+0.5 Int
      var Int ny := cast 1016.0*h:size_y/dpi+0.5 Int
      s writechars "PS"+string:ny+","+string:nx+";" # set pa
    else
      s writechars "PS;" # no page clip
    s writechars escape+"%0A" # enter HP RTL mode
  if not (options option "pcl_no_paper_size")
    # A4 = 26 , A3 = 27 , A3+ = 16, custom = 101
    s writechars escape+"&l"+(options option "pcl_paper_size
  if (options option "pcl_no_perforation_skip")
    s writechars escape+"&l0L" # Turn off perforation skip
  s writechars escape+"&a1N" # No negative motion - allow pl
  if h:gamut:dimension=3
    var Int color_model := shunt h:gamut:model<>color_gamut_
    s writechars escape+"*v6W"+character:color_model+charact
  s writechars escape+"*t"+string:(cast dpi Int)+"R" # set r
  s writechars escape+"*r"+(string h:size_x)+"S" # number of
  s writechars escape+"*r"+(string h:size_y)+"T" # number of
  s writechars escape+"*r1A" # start raster graphics at curr
  s writechars escape+"*b"+(shunt f:seedrow "3" f:packbits "
  if f:seedrow
    f previous_line := memory_zallocate f:line_size addresso
  status := success



image_record_filters ".pcl" Void ImageWriteFilterPcl