Patch title: Release 93 bulk changes
Abstract:
File: /graphic/image/packed.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
submodule "prototype.pli"
module "/pliant/language/compiler/type/inherit.pli"
module "/pliant/util/encoding/pack4.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/misc/int.pli"
module "/pliant/graphic/misc/filepool.pli"


method p setup proto options -> status
  oarg_rw ImagePacked p ; arg ImagePrototype proto ; arg Str
  check proto:size_x>0 and proto:size_y>0
  memory_free p:cbuf
  addressof:p map ImagePrototype := proto
module "/pliant/language/compiler.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
submodule "prototype.pli"
module "/pliant/language/compiler/type/inherit.pli"
module "/pliant/util/encoding/pack4.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/misc/int.pli"
module "/pliant/graphic/misc/filepool.pli"


method p setup proto options -> status
  oarg_rw ImagePacked p ; arg ImagePrototype proto ; arg Str
  check proto:size_x>0 and proto:size_y>0
  memory_free p:cbuf
  addressof:p map ImagePrototype := proto
  p tile_x := options option "tile_x" Int (min p:size_x defa
  p tile_y := options option "tile_y" Int (min p:size_y defa
  p tile_x := min p:size_x default_tile_x
  p tile_y := min p:size_y default_tile_y
  while p:tile_x>p:tile_y and 2*p:tile_y*p:size_x*p:pixel_size<maximum_clear_cache and 2*p:tile_x*p:size_y*p:pixel_size>maximum_clear_cache
    p tile_x \= 2 ; p tile_y *= 2
  while 2*p:tile_y*p:size_x*p:pixel_size>maximum_clear_cache or 2*p:tile_x*p:size_y*p:pixel_size>maximum_clear_cache
    p tile_x \= 2 ; p tile_y \= 2
  p tile_x := options option "tile_x" Int p:tile_x
  p tile_y := options option "tile_y" Int p:tile_y
  p nb_x := (p:size_x+p:tile_x-1)\p:tile_x
  p nb_y := (p:size_y+p:tile_y-1)\p:tile_y
  if advanced_thresholding
    p clear_threshold1 := bound 2*p:tile_y*p:size_x*p:pixel_
    p clear_threshold2 := max 4*processor_count*p:tile_y*p:s
  else
  p nb_x := (p:size_x+p:tile_x-1)\p:tile_x
  p nb_y := (p:size_y+p:tile_y-1)\p:tile_y
  if advanced_thresholding
    p clear_threshold1 := bound 2*p:tile_y*p:size_x*p:pixel_
    p clear_threshold2 := max 4*processor_count*p:tile_y*p:s
  else
    p clear_threshold := options option "clear_cache_size" I
    p clear_threshold := options option "clear_cache_size" Int (bound (max 2*p:tile_y*p:size_x*p:pixel_size 2*p:tile_x*p:size_y*p:pixel_size) minimum_clear_cache maximum_clear_cache)
  p:tiles size := 0
  p:tiles size := p:nb_x*p:nb_y
  for (var Int iy) 0 p:nb_y-1
    for (var Int ix) 0 p:nb_x-1
      var Pointer:PackedTile t :> p:tiles ix+iy*p:nb_x
      t size_x := min p:tile_x p:size_x-ix*p:tile_x
      t size_y := min p:tile_y p:size_y-iy*p:tile_y
  p cbuf := memory_allocate p:tile_x*p:tile_y*p:pixel_size*2
  p clear_size := 0
  p packed_size := 0
  p packed_limit := options option "packed_cache_size" Int u
  p disk_pool := var FilePool empty_disk_pool
  p auto_clip := false
  p clip_y0 := 0 ; p clip_y1 := p size_y
  status := success



  p:tiles size := 0
  p:tiles size := p:nb_x*p:nb_y
  for (var Int iy) 0 p:nb_y-1
    for (var Int ix) 0 p:nb_x-1
      var Pointer:PackedTile t :> p:tiles ix+iy*p:nb_x
      t size_x := min p:tile_x p:size_x-ix*p:tile_x
      t size_y := min p:tile_y p:size_y-iy*p:tile_y
  p cbuf := memory_allocate p:tile_x*p:tile_y*p:pixel_size*2
  p clear_size := 0
  p packed_size := 0
  p packed_limit := options option "packed_cache_size" Int u
  p disk_pool := var FilePool empty_disk_pool
  p auto_clip := false
  p clip_y0 := 0 ; p clip_y1 := p size_y
  status := success