Patch title: Release 93 bulk changes
Abstract:
File: /graphic/browser/core.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/graphic/misc/float.pli"
module "/pliant/graphic/color/gamut.pli"
submodule "document.pli"
submodule "context.pli"
submodule "tag/prototype.pli"


method con browser_color s -> c
  arg BrowserConsole con ; arg Str s ; arg Int c
  function hexa s -> i
    arg Str s ; arg Int i
    i := 0
    for (var Int index) 0 s:len-1
      var Int c := s:index:number
      if c>="0":number and c<="9":number
        i := i*16+(c-"0":number)
      eif c>="A":number and c<="Z":number
        i := i*16+(c+10-"A":number)
      eif c>="a":number and c<="z":number
        i := i*16+(c+10-"a":number)
  if (s 0 4)="rgb:" and s:len=10
    # c := hexa:(s 4 2)+hexa:(s 6 2)*2^8+hexa:(s 8 2)*2^16
    var Int rgb := hexa:(s 4 2)+hexa:(s 6 2)*2^8+hexa:(s 8 2)*2^16
    con:gamut convert con:rgb addressof:rgb addressof:c 1 null
  else
    c := undefined


export '. browser_color'


#-----------------------------------------------------------------------------


method c position_recurse n
  arg_rw BrowserContext c ; arg_rw BrowserNode n
  each sub n
    c position sub

method c position_container n
  arg_rw BrowserContext c ; arg_rw BrowserNode n
  function position_include b c
    arg_rw BrowserNode b c
    if b:has_area
      c:area x0 := min c:area:x0 b:area:x0
      c:area y0 := min c:area:y0 b:area:y0
      c:area x1 := max c:area:x1 b:area:x1
      c:area y1 := max c:area:y1 b:area:y1
    else
      each bb b
        position_include bb c
  n:area x0 := float_max
  n:area y0 := float_max
  n:area x1 := float_min
  n:area y1 := float_min
  each sub n
    position_include sub n
  if n:area:x0=float_max
    memory_free n:extra ; n extra := null

function position_translate n tx ty
  arg_rw BrowserNode n ; arg Float tx ty
  if n:has_area
    n:area x0 += tx
    n:area y0 += ty
    n:area x1 += tx
    n:area y1 += ty
  each sub n
    position_translate sub tx ty


method c draw_recurse n
  arg_rw BrowserContext c ; arg_rw BrowserNode n
  each sub n
    c draw sub


export '. position_recurse' '. position_container' position_translate
export '. draw_recurse'