Patch title: Release 93 bulk changes
Abstract:
File: /graphic/sample/charte.pli
Key:
    Removed line
    Added line
module "/pliant/language/unsafe.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/draw/prototype.pli"
module "/pliant/graphic/draw/displaylist.pli"
module "/pliant/graphic/vector/font.pli"
module "/pliant/graphic/vfilter/io.pli"
module "/pliant/math/transform.pli"

constant unit 8.5
constant gamut_name "pantone:process_cyan+process_magenta+process_yellow+process_black"
# constant gamut_name "pantone:blue_072+orange_021+green+process_black"

function linear_charte d
  oarg_rw DrawPrototype d
  d setup (image_prototype 0 0 18*unit 9*unit undefined undefined color_gamut:gamut_name) ""
  for (var Int j) 0 7
    for (var Int i) 0 16
      var Float x := i*unit+unit/2
      var Float y := j*unit+unit/2
      var ColorBuffer c
      for (var Int k) 0 3
        addressof:c map uInt8 k := min (shunt (j+1 .and. 2^k)<>0 i*16 0) 255
      d rectangle x+0.25 y+0.25 x+unit-0.25 y+unit-0.25 addressof:c
  for (var Int j) 0 3
    addressof:c map uInt8 j := shunt j=3 255 0
  for (var Int i) 0 17
    for (var Int j) 0 8
      var Float x := i*unit+5
      var Float y := j*unit+5
      d rectangle x-0.25 y-0.25 x+0.25 y+0.25 addressof:c
  var Link:Font f :> font "Helvetica"
  for (var Int i) 0 16
    var Str t := string (min i*16 255)
    var Float s := 3
    f bbox t null undefined (var Float x0) (var Float y0) (var Float x1) (var Float y1)
    var Float x := i*unit+unit-0.5*s*(x0+x1)
    var Float y := unit/4-0.5*s*(y0+y1)
    d text t f null undefined (transform x y s s 0 0) addressof:c
    var Float y := 8.75*unit-0.5*s*(y0+y1)
    d text t f null undefined (transform x y s s 0 0) addressof:c


function grid_charte d
  oarg_rw DrawPrototype d
  var Int n := 5
  d setup (image_prototype 0 0 n^2*unit+unit n^2*unit+unit undefined undefined color_gamut:gamut_name) ""
  for (var Int i) 0 n^4
    var Float x := (i%n)*unit+(i\n^2%n)*(n*unit)+5
    var Float y := (i\n%n)*unit+(i\n^3)*(n*unit)+5
    var ColorBuffer c
    for (var Int j) 0 3
      addressof:c map uInt8 j := min (i\n^j%n)*(256\(n-1)) 255
    d rectangle x+0.25 y+0.25 x+unit-0.25 y+unit-0.25 addressof:c
  for (var Int j) 0 3
    addressof:c map uInt8 j := shunt j=3 255 0
  for (var Int i) 0 n^2
    for (var Int j) 0 n^2
      var Float x := i*unit+5
      var Float y := j*unit+5
      d rectangle x-0.25 y-0.25 x+0.25 y+0.25 addressof:c
  var Link:Font f :> font "Helvetica"
  for (var Int i) 0 n-1
    var Str t := string (min i*256\(n-1) 255)
    var Float s := 3
    f bbox t null undefined (var Float x0) (var Float y0) (var Float x1) (var Float y1)
    var Float x := i*unit+unit-0.5*s*(x0+x1)
    var Float y := unit/4-0.5*s*(y0+y1)
    d text t f null undefined (transform x y s s 0 0) addressof:c

function charte model filename
  arg Str model filename
  var Link:DrawDisplayList d :> new DrawDisplayList
  if model="linear"
    linear_charte d
  eif model="grid"
    grid_charte d
  else
    console "'"+model+"' is not a valid charte model"
    return
  d save filename ""


export charte