Patch title: Release 94 bulk changes
Abstract:
File: /pliant/graphic/draw/prototype.pli
Key:
    Removed line
    Added line
module "/pliant/language/compiler.pli"
submodule "/pliant/language/type/text/str32.pli"
submodule "/pliant/graphic/image/prototype.pli"
submodule "/pliant/graphic/color/gamut.pli"
submodule "/pliant/math/curve.pli"
submodule "/pliant/graphic/vector/outline.pli"
submodule "/pliant/graphic/vector/font.pli"
submodule "/pliant/math/transform.pli"


public
  constant fill_evenodd outline_evenodd
  constant fill_nonzero outline_nonzero

public

type DrawPrototype
  void


method d setup proto options -> status
  oarg_rw DrawPrototype d ; arg ImagePrototype proto ; arg Str options ; arg ExtendedStatus status
  generic
  status := failure "unsupported"


method d image img t
  oarg_rw DrawPrototype d ; oarg_rw ImagePrototype img ; arg Transform2 t
  generic


method d fill curves mode t color
  oarg_rw DrawPrototype d ; arg Array:Curve curves ; arg Int mode ; arg Transform2 t ; arg Address color
  generic


method d rectangle x0 y0 x1 y1 color
  oarg_rw DrawPrototype d ; arg Float x0 y0 x1 y1 ; arg Address color
  generic
  (var Array:Curve curves) size := 1
  var Pointer:Curve c :> curves 0
  c angle x0 y0
  c angle x1 y0
  c angle x1 y1
  c angle x0 y1
  c compute outline
  d fill curves fill_evenodd transform color


method d text txt font kerning length t color
  oarg_rw DrawPrototype d ; arg Str32 txt ; arg Font font ; arg Address kerning ; arg Float length ; arg Transform2 t ; arg Address color
method d text txt font kerning t color
  oarg_rw DrawPrototype d ; arg Str32 txt ; arg Font font ; arg Address kerning ; arg Transform2 t ; arg Address color
  generic
  var Float spacing := 1
  if length=defined
    spacing := length/(font length txt kerning)
    if spacing=undefined
      spacing := 0
  var Transform2 cur := t
  for (var Int i) 0 txt:len-1
    if kerning<>null
      var Vector2 v ; v x := (kerning map Float i)*font:vector:x ; v y := (kerning map Float i)*font:vector:y
      v := cur v ; cur xt += v x ; cur yt += v y
    var Int num := txt:i number
    d fill (font curves num) outline_evenodd cur color
    var Vector2 v := font vector num
    if kerning<>null
      var Float k := kerning map Float i
      v x *= k ; v y *= k
    if spacing<>1
      v x *= spacing ; v y *= spacing
    v := cur v ; cur xt += v x ; cur yt += v y
    var Vector2 v := cur (font vector num) ; cur xt += v x ; cur yt += v y


method d clip_open x0 y0 x1 y1 -> dc
  oarg_rw DrawPrototype d ; arg Float x0 y0 x1 y1 ; arg Link:DrawPrototype dc
  generic
  dc :> new DrawPrototype

method d clip_close
  oarg_rw DrawPrototype d
  generic


method d tag_open id
  oarg_rw DrawPrototype d ; arg Str id
  generic

method d tag_attribute attr value
  oarg_rw DrawPrototype d ; arg Str attr value
  generic

method d tag_close
  oarg_rw DrawPrototype d
  generic


method d warning message
  oarg_rw DrawPrototype d ; arg Str message
  generic

method d trouble_open -> dt
  oarg_rw DrawPrototype d ; arg Link:DrawPrototype dt
  generic
  dt :> new DrawPrototype

method d trouble_close
  oarg_rw DrawPrototype d
  generic


method d bind draw options -> status
  oarg_rw DrawPrototype d draw ; arg Str options ; arg ExtendedStatus status
  generic
  status := failure "Not available for type "+(entry_type addressof:d):name

method d image_prototype options -> proto
  oarg DrawPrototype d ; arg Str options ; arg ImagePrototype proto
  generic
  proto x0 := undefined
  proto y0 := undefined
  proto x1 := undefined
  proto y1 := undefined
  proto size_x := undefined
  proto size_y := undefined
  proto gamut :> null map ColorGamut

method d backdrop options -> image
  oarg_rw DrawPrototype d ; arg Str options ; arg_C ImagePrototype image
  generic
  image :> null map ImagePrototype

method d play draw options
  oarg_rw DrawPrototype d ; oarg_rw DrawPrototype draw ; arg Str options
  generic


method d query command -> answer
  oarg_rw DrawPrototype d ; arg Str command answer
  generic
  answer := ""

method d configure command -> status
  oarg_rw DrawPrototype d ; arg Str command ; arg ExtendedStatus status
  generic
  status := failure "unknown command"