Patch title: Release 91 bulk changes
Abstract:
File: /graphic/sample/pdf_test.pli
Key:
    Removed line
    Added line
   
# pliant 'precompile /binary/browser.dump module /pliant/gra

module "/pliant/language/unsafe.pli"
module "/pliant/graphic/draw/prototype.pli"
module "/pliant/graphic/draw/displaylist.pli"
module "/pliant/graphic/draw/image.pli"
module "/pliant/language/stream.pli"
module "/pliant/graphic/vfilter/prototype.pli"
module "/pliant/graphic/vfilter/all.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/image/convert.pli"
module "/pliant/graphic/image/antialiasing.pli"
module "/pliant/graphic/image/packed.pli"
module "/pliant/graphic/image/lazy.pli"
# pliant 'precompile /binary/browser.dump module /pliant/gra

module "/pliant/language/unsafe.pli"
module "/pliant/graphic/draw/prototype.pli"
module "/pliant/graphic/draw/displaylist.pli"
module "/pliant/graphic/draw/image.pli"
module "/pliant/language/stream.pli"
module "/pliant/graphic/vfilter/prototype.pli"
module "/pliant/graphic/vfilter/all.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/image/convert.pli"
module "/pliant/graphic/image/antialiasing.pli"
module "/pliant/graphic/image/packed.pli"
module "/pliant/graphic/image/lazy.pli"
module "/pliant/graphic/image/rip.pli"
module "/pliant/graphic/filter/io.pli"
module "/openpack/graphic/filter/postscript.pli"
module "/pliant/language/data/cache.pli"


function pdf_test filename page dpi -> status
  arg Str filename ; arg Int page dpi ; arg ExtendedStatus s
  cache_shrink 0 cache_class_costy
  console "ripping PDF " filename " " memory_current_used\2^
  var DateTime start0 := datetime
  var Link:DrawDisplayList list :> new DrawDisplayList
  (var Stream s) open (replace filename ".pdf" ".txt") in+sa
  var Str gamutname := s readline
  s close
  if profile
    profiler_recurse := profile_recurse
    profiler_start
  var DateTime start := datetime
  status := list load filename "filter [dq].pdf[dq] page "+s
  if status=failure
    console "failed to load " filename " (" status:message "
    return
  each w list:warnings
    console "  " w eol
  console "gamut is " list:gamut:name eol
  console "loading " (string datetime:seconds-start:seconds 
  if 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
  start := datetime
module "/pliant/graphic/filter/io.pli"
module "/openpack/graphic/filter/postscript.pli"
module "/pliant/language/data/cache.pli"


function pdf_test filename page dpi -> status
  arg Str filename ; arg Int page dpi ; arg ExtendedStatus s
  cache_shrink 0 cache_class_costy
  console "ripping PDF " filename " " memory_current_used\2^
  var DateTime start0 := datetime
  var Link:DrawDisplayList list :> new DrawDisplayList
  (var Stream s) open (replace filename ".pdf" ".txt") in+sa
  var Str gamutname := s readline
  s close
  if profile
    profiler_recurse := profile_recurse
    profiler_start
  var DateTime start := datetime
  status := list load filename "filter [dq].pdf[dq] page "+s
  if status=failure
    console "failed to load " filename " (" status:message "
    return
  each w list:warnings
    console "  " w eol
  console "gamut is " list:gamut:name eol
  console "loading " (string datetime:seconds-start:seconds 
  if 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
  start := datetime
  var Link:DrawImage draw :> new DrawImage
  # draw load filename "filter [dq].pdf[dq] page "+string:pa
  list replay draw
  console "draw " (string datetime:seconds-start:seconds "fi
  if true
  if true
    var Link:DrawImage draw :> new DrawImage
    list replay draw "packed resolution "+(string dpi*4)+" antialiasing 4"
    var Link:ImagePrototype rip :> draw draw_image
  else
    var Link:ImageRIP rip :> new ImageRIP
    rip bind list "drop_transparency cache "+(string 64*2^20)+" resolution "+(string dpi*4)+" antialiasing 4"
  console "draw " (string datetime:seconds-start:seconds "fixed 0") " seconds "  memory_current_used\2^20 " MB" eol
  if false
    start := datetime
    var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
    start := datetime
    var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
    aa bind draw:draw_image 4 4
    aa bind rip 4 4
    var Link:ImagePacked final :> new ImagePacked
    final setup aa ""
    var Address buffer := memory_allocate final:line_size nu
    for (var Int y) 0 final:size_y-1
    var Link:ImagePacked final :> new ImagePacked
    final setup aa ""
    var Address buffer := memory_allocate final:line_size nu
    for (var Int y) 0 final:size_y-1
      aa read 0 y aa:size_x buffer
      aa read 0 y final:size_x buffer
      final write 0 y final:size_x buffer
    memory_free buffer
    console "antialiasing " (string datetime:seconds-start:s
      final write 0 y final:size_x buffer
    memory_free buffer
    console "antialiasing " (string datetime:seconds-start:s
    console "gamut is " final:gamut:name eol
    start := datetime
    var Link:ImageConvert conv :> new ImageConvert
    conv bind final color_gamut:"rgb" "fast"
    var Link:ImagePacked rgb :> new ImagePacked
    rgb setup conv ""
    var Address buffer := memory_allocate rgb:line_size null
    for (var Int y) 0 rgb:size_y-1
    start := datetime
    var Link:ImageConvert conv :> new ImageConvert
    conv bind final color_gamut:"rgb" "fast"
    var Link:ImagePacked rgb :> new ImagePacked
    rgb setup conv ""
    var Address buffer := memory_allocate rgb:line_size null
    for (var Int y) 0 rgb:size_y-1
      conv read 0 y aa:size_x buffer
      conv read 0 y rgb:size_x buffer
      rgb write 0 y rgb:size_x buffer
    memory_free buffer
    console "convert " (string datetime:seconds-start:second
    start := datetime
    if (filename search ".pdf" -1)<>(-1)
      rgb save (replace filename ".pdf" ".png") "filter [dq]
    else
      console "unexpected file name '" filename "'" eol
      return
    console "store " (string datetime:seconds-start:seconds 
  eif true # aa then conv
    start := datetime
    var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
      rgb write 0 y rgb:size_x buffer
    memory_free buffer
    console "convert " (string datetime:seconds-start:second
    start := datetime
    if (filename search ".pdf" -1)<>(-1)
      rgb save (replace filename ".pdf" ".png") "filter [dq]
    else
      console "unexpected file name '" filename "'" eol
      return
    console "store " (string datetime:seconds-start:seconds 
  eif true # aa then conv
    start := datetime
    var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
    aa bind draw:draw_image 4 4
    aa bind rip 4 4
    var Link:ImageConvert conv :> new ImageConvert
    conv bind aa color_gamut:"rgb" "fast"
    if (filename search ".pdf" -1)<>(-1)
      conv save (replace filename ".pdf" ".png") "filter [dq
    else
      console "unexpected file name '" filename "'" eol
      return
    console "display " (string datetime:seconds-start:second
  else # conv then aa
    start := datetime
    var Link:ImageConvert conv :> new ImageConvert
    var Link:ImageConvert conv :> new ImageConvert
    conv bind aa color_gamut:"rgb" "fast"
    if (filename search ".pdf" -1)<>(-1)
      conv save (replace filename ".pdf" ".png") "filter [dq
    else
      console "unexpected file name '" filename "'" eol
      return
    console "display " (string datetime:seconds-start:second
  else # conv then aa
    start := datetime
    var Link:ImageConvert conv :> new ImageConvert
    conv bind draw:draw_image color_gamut:"rgb" "fast"
    conv bind rip color_gamut:"rgb" "fast"
    var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
    aa bind conv 4 4
    if (filename search ".pdf" -1)<>(-1)
      aa save (replace filename ".pdf" ".png") "filter [dq].
    else
      console "unexpected file name '" filename "'" eol
      return
    console "display " (string datetime:seconds-start:second
  console "total " (string datetime:seconds-start0:seconds "



export pdf_test ps_test test
    var Link:ImageAntiAliasing aa :> new ImageAntiAliasing
    aa bind conv 4 4
    if (filename search ".pdf" -1)<>(-1)
      aa save (replace filename ".pdf" ".png") "filter [dq].
    else
      console "unexpected file name '" filename "'" eol
      return
    console "display " (string datetime:seconds-start:second
  console "total " (string datetime:seconds-start0:seconds "



export pdf_test ps_test test