Patch title: Release 85 bulk changes
Abstract:
File: /pliant/graphic/browser/text.pli
Key:
    Removed line
    Added line
   
module "common.pli"
module "/pliant/graphic/vector/font.pli"
module "/pliant/language/type/text/istr.pli"


method t position c
  oarg_rw D2Text t ; arg_rw D2Context c
  implicit t
    var Str text := itext
    var Str text32 := itext
    if text=""
      t position_undefined c
      return
    part control
module "common.pli"
module "/pliant/graphic/vector/font.pli"
module "/pliant/language/type/text/istr.pli"


method t position c
  oarg_rw D2Text t ; arg_rw D2Context c
  implicit t
    var Str text := itext
    var Str text32 := itext
    if text=""
      t position_undefined c
      return
    part control
      c:font box text 0 0 c:scale x0 y0 x1 y1
      c:font bbox text null x0 y0 x1 y1 ; x0 *= c scale ; y0 *= c scale ; x1 *= c scale ; y1 *= c scale
      if x1-x0<=c:x1-c:line_x
        c addtoline t
        return
      var Int start := 0
      part dispatch
        var Int stop := start
        part cut
          var Int i := ((text stop text:len) search " " text
      if x1-x0<=c:x1-c:line_x
        c addtoline t
        return
      var Int start := 0
      part dispatch
        var Int stop := start
        part cut
          var Int i := ((text stop text:len) search " " text
          c:font box (text32 start i-start) 0 0 c:scale x0 y
          c:font bbox (text32 start i-start) null x0 y0 x1 y1 ; x0 *= c scale ; y0 *= c scale ; x1 *= c scale ; y1 *= c scale
          if x1-x0>c:x1-c:line_x
            leave cut
          while i<text:len and text:i=" "
            i += 1
          stop := i
          if stop<text:len
            restart cut
        if stop=start
          if start=0 and c:line_x<>c:x0
            c newline
            restart control
          eif start=0
          if x1-x0>c:x1-c:line_x
            leave cut
          while i<text:len and text:i=" "
            i += 1
          stop := i
          if stop<text:len
            restart cut
        if stop=start
          if start=0 and c:line_x<>c:x0
            c newline
            restart control
          eif start=0
            c:font box text 0 0 c:scale x0 y0 x1 y1
            c:font bbox text null x0 y0 x1 y1 ; x0 *= c scale ; y0 *= c scale ; x1 *= c scale ; y1 *= c scale
            c addtoline t
            return
          else
            stop := text len
        var Link:D2Text line :> new D2Text
        line itext := (cast itext Str32) start stop-start
        var Link:D2Box l :> line ; content += l
            c addtoline t
            return
          else
            stop := text len
        var Link:D2Text line :> new D2Text
        line itext := (cast itext Str32) start stop-start
        var Link:D2Box l :> line ; content += l
        c:font box line:itext 0 0 c:scale line:x0 line:y0 li
        c:font bbox line:itext null line:x0 line:y0 line:x1 line:y1 ; line x0 *= c scale ; line y0 *= c scale ; line x1 *= c scale ; line y1 *= c scale
        c addtoline line
        c newline
        start := stop
        if start<text:len
          restart dispatch
      t itext := ""
      x0 := undefined ; y0 := undefined ; x1 := undefined ; 

method t draw img c
  oarg_rw D2Text t ; oarg_rw ImagePrototype img ; arg_rw D2C
  var Str32 text32 := t itext
  if text32:len>0
        c addtoline line
        c newline
        start := stop
        if start<text:len
          restart dispatch
      t itext := ""
      x0 := undefined ; y0 := undefined ; x1 := undefined ; 

method t draw img c
  oarg_rw D2Text t ; oarg_rw ImagePrototype img ; arg_rw D2C
  var Str32 text32 := t itext
  if text32:len>0
    c:font box text32 0 0 c:scale (var Float x0) (var Float 
    var Float es := ((t:x1-t:x0)-(x1-x0))/(text32:len-1)
    c:font draw text32 img t:x0 t:y0-y0 c:scale es 0 (addres
    img text text32 c:font null undefined (transform t:x0 t:y0-y0 1 1 0 0) (addressof c:color)
  t draw_recurse img c


html_tags insert "font" true addressof:D2Font
  t draw_recurse img c


html_tags insert "font" true addressof:D2Font