Patch title: Release 94 bulk changes
Abstract:
File: /pliant/graphic/sample/rip.pli
Key:
    Removed line
    Added line
# pliant 'precompile /binary/rip.dump module /pliant/install/minimal.pli module /pliant/graphic/image/rip.pli module /pliant/graphic/filter/io.pli' module /pliant/graphic/sample/rip.pli command 'rip "file:/tmp/charte.ps" "file:/tmp/charte.png" "resolution 150 trace"'

module "/pliant/language/unsafe.pli"
module "/pliant/graphic/vfilter/io.pli"
module "/pliant/graphic/draw/prototype.pli"
module "/pliant/graphic/draw/displaylist.pli"
module "/pliant/graphic/draw/file.pli"
module "/pliant/graphic/image/prototype.pli"
module "/pliant/graphic/image/rip.pli"
module "/pliant/graphic/image/convert.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/image/antialiasing.pli"
module "/pliant/graphic/filter/io.pli"
module "/pliant/language/context.pli"

module "/pliant/language/debug/profiler.pli"
module "/pliant/language/stream.pli"


function rip src dest options -> status
  arg Str src dest ; arg Str options ; arg ExtendedStatus status
  var Int dpi := options option "resolution" Int 75
  var Int antialiasing := options option "antialiasing" Int 4
  var CBool trace := options option "trace"
  if trace
    var DateTime start := datetime
    var Int mem := memory_current_used
    console "running" eol
  var Link:DrawPrototype draw
  if (options option "load_profile")
    profiler_recurse := options option "load_profile" Int 0
    profiler_start
  if (options option "unlimited")
    draw :> new DrawFile
    (addressof:draw omap DrawFile) bind src options
    status := success
  else
    draw :> new DrawDisplayList
    status := draw load src (replace options "source_" "")
  if (options option "load_profile")
    profiler_stop
  if status=failure
    console "failed to read "+src+" ("+status:message+")"
    return
  if trace
    console "loading time " (string datetime:seconds-start:seconds "fixed 0") " second(s)  memory " (memory_current_used-mem)\2^20 " MB" eol
    var ImagePrototype proto := draw image_prototype ""
    console "loading time " (string datetime:seconds-start:seconds "fixed 0") " second(s)  memory " (memory_current_used-mem)\2^20 " MB  (" proto:x0 " " proto:y0 " " proto:x1 " " proto:y1 ")" eol
    var DateTime start := datetime
  var Link:ImageRIP rip :> new ImageRIP
  rip bind draw "resolution "+(string dpi*antialiasing)+" antialiasing "+string:antialiasing+" drop_transparency "+options
  var Link:ImageConvert conv
  if not (options option "lr_convert")
    conv :> new ImageConvert
    status := conv bind rip color_gamut:(options option "target_gamut" Str "rgb") "hurry "+(shunt (options option "hifi") "" "fast")
    if status=failure
      console "failed to convert"
      return
  else
    conv :> addressof:rip map ImageConvert
  var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
  aa bind conv antialiasing antialiasing
  if (options option "profile")
    profiler_recurse := options option "profile" Int 0
    profiler_start
  if (options option "lr_convert")
    conv :> new ImageConvert
    status := conv bind aa color_gamut:(options option "target_gamut" Str "rgb") "hurry "+(shunt (options option "hifi") "" "fast")
    if status=failure
      console "failed to convert"
      return
  else
    conv :> addressof:aa map ImageConvert
  status := conv save dest (replace options "target_" "")
  if (options option "profile")
  if (options option "profile") or (options option "load_profile")
    profiler_stop
    (var Stream s) open "file:/tmp/profiler.txt" out+safe
    profiler_report "" "" s
    (var Stream s) open "file:/tmp/profiler.txt" in+safe
    (var Stream s2) open "file:/tmp/profiler2.txt" out+safe
    while not s:atend
      var Str l := s readline
      if (l parse (var Str fun) (var Str pos) (var Int ticks))
        s2 writeline l
        profiler_report fun pos s2
        s2 writeline ""
    s close
    s2 close
  if status=failure
    console "failed to write "+dest+" ("+status:message+")"
    return
  if trace
    console "ripping time at " dpi "x" antialiasing " dpi: " (string datetime:seconds-start:seconds "fixed 0") " second(s)" eol
    console "ripping time at " dpi "x" antialiasing " dpi " rip:gamut:name " : " (string datetime:seconds-start:seconds "fixed 0") " second(s)" eol

export rip