Patch title: Release 89 bulk changes
Abstract:
File: /protocol/http/style/draw.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/parser.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/common.pli"
module "/pliant/util/encoding/http.pli"
module "/pliant/util/encoding/html.pli"
module "/pliant/graphic/image/prototype.pli"
module "/pliant/graphic/filter/io.pli"
module "/pliant/math/functions.pli"
module "/pliant/protocol/http/cache.pli"


method page html_draw img url_id format options flags link b
  arg_rw HtmlPage page ; oarg_rw ImagePrototype img ; arg St
  var Str url := image_cache_record img url_id format option
  var Str id := generate_id
  if (flags .and. 1)<>0
    page html "<a href=[dq]"+html_encode:link+"[dq]>"
  var Str event := ""
  if (flags .and. 4)<>0
    event := " onClick==[dq]button_pressed('button 0 0 "+bod
  page html "<img src=[dq]"+url+"[dq] width=[dq]"+(string im
  if (flags .and. 1)<>0
    page html "</a>"
  if flags=0
    return
  implicit page
    if (flags .and. 2)<>0 and (environment first "pliant dra
      environment insert "pliant draw" true addressof:void
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_x0[d
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_y0[d
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_x1[d
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_y1[d
    var Str pos_x := "e.clientX" ; var Str pos_y := "e.clien
    var Str browser := http_request browser_model
    if browser="mozilla"
      buttons := "e.which"
    eif browser="ie"
      pos_x := "event.clientX" ; pos_y := "event.clientY" ; 
    html "<script language=[dq]JavaScript[dq]>[lf]"
    html "function mm_x_"+id+"(x,delta) {[lf]"
    html "  return "+(string img:x0)+"+"+(string img:x1-img:
    html "function mm_y_"+id+"(y,delta) {[lf]"
    html "  return "+(string img:y0)+"+"+(string img:y1-img:
    if (flags .and. 2)<>0
      html "function down_"+id+"(e) {[lf]"
      html "  if("+buttons+"==1){[lf]"
      html "    document.pliant._pliant_x0.value = mm_x_"+id
      html "    document.pliant._pliant_y0.value = mm_y_"+id
      html "    return false;[lf]"
      html "  } else {[lf]"
      html "    return true; } }[lf]"
      html "function up_"+id+"(e) {[lf]"
      html "  if("+buttons+"==1){[lf]"
      html "    document.pliant._pliant_x1.value = mm_x_"+id
      html "    document.pliant._pliant_y1.value = mm_y_"+id
module "/pliant/language/compiler.pli"
module "/pliant/language/parser.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/common.pli"
module "/pliant/util/encoding/http.pli"
module "/pliant/util/encoding/html.pli"
module "/pliant/graphic/image/prototype.pli"
module "/pliant/graphic/filter/io.pli"
module "/pliant/math/functions.pli"
module "/pliant/protocol/http/cache.pli"


method page html_draw img url_id format options flags link b
  arg_rw HtmlPage page ; oarg_rw ImagePrototype img ; arg St
  var Str url := image_cache_record img url_id format option
  var Str id := generate_id
  if (flags .and. 1)<>0
    page html "<a href=[dq]"+html_encode:link+"[dq]>"
  var Str event := ""
  if (flags .and. 4)<>0
    event := " onClick==[dq]button_pressed('button 0 0 "+bod
  page html "<img src=[dq]"+url+"[dq] width=[dq]"+(string im
  if (flags .and. 1)<>0
    page html "</a>"
  if flags=0
    return
  implicit page
    if (flags .and. 2)<>0 and (environment first "pliant dra
      environment insert "pliant draw" true addressof:void
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_x0[d
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_y0[d
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_x1[d
      html "<input type=[dq]hidden[dq] name=[dq]_pliant_y1[d
    var Str pos_x := "e.clientX" ; var Str pos_y := "e.clien
    var Str browser := http_request browser_model
    if browser="mozilla"
      buttons := "e.which"
    eif browser="ie"
      pos_x := "event.clientX" ; pos_y := "event.clientY" ; 
    html "<script language=[dq]JavaScript[dq]>[lf]"
    html "function mm_x_"+id+"(x,delta) {[lf]"
    html "  return "+(string img:x0)+"+"+(string img:x1-img:
    html "function mm_y_"+id+"(y,delta) {[lf]"
    html "  return "+(string img:y0)+"+"+(string img:y1-img:
    if (flags .and. 2)<>0
      html "function down_"+id+"(e) {[lf]"
      html "  if("+buttons+"==1){[lf]"
      html "    document.pliant._pliant_x0.value = mm_x_"+id
      html "    document.pliant._pliant_y0.value = mm_y_"+id
      html "    return false;[lf]"
      html "  } else {[lf]"
      html "    return true; } }[lf]"
      html "function up_"+id+"(e) {[lf]"
      html "  if("+buttons+"==1){[lf]"
      html "    document.pliant._pliant_x1.value = mm_x_"+id
      html "    document.pliant._pliant_y1.value = mm_y_"+id
      html "    button_pressed('button-0-0-"+body_id+"-"+(pa
      html "    button_pressed('button*0*0*"+body_id+"*"+(page:request cipher (body_context 1 body_context:len))+"*"+(page:request generate_signature body_id+" "+(body_context 1 body_context:len))+"');[lf]"
      html "    return false;[lf]"
      html "  } else {[lf]"
      html "    return true; } }[lf]"
      html "document.getElementById([dq]"+id+"[dq]).onmoused
      html "document.getElementById([dq]"+id+"[dq]).onmouseu
    if (flags .and. 8)<>0
      html "function move_"+id+"(e) {[lf]"
      html "  x = mm_x_"+id+"("+pos_x+",0.5);[lf]"
      html "  y = mm_y_"+id+"("+pos_y+",0.5);[lf]"
      var Float psize := (img:x1-img:x0)/img:size_x
      var Int r := 10^(min (max -(cast log:psize Int) 0) 9)
      html "  x = ((x*"+string:r+")-(x*"+string:r+")%1)/"+st
      var Float psize := (img:y1-img:y0)/img:size_y
      var Int r := 10^(min (max -(cast log:psize Int) 0) 9)
      html "  y = ((y*"+string:r+")-(y*"+string:r+")%1)/"+st
      html "  window.status=x+'  '+y;[lf]"
      html "  return true; }[lf]"
      html "document.getElementById([dq]"+id+"[dq]).onmousem
    html "</script>[lf]"


method page selected x0 y0 x1 y1
  arg_rw HtmlPage page ; arg_w Float x0 y0 x1 y1
  var Str context
      html "    return false;[lf]"
      html "  } else {[lf]"
      html "    return true; } }[lf]"
      html "document.getElementById([dq]"+id+"[dq]).onmoused
      html "document.getElementById([dq]"+id+"[dq]).onmouseu
    if (flags .and. 8)<>0
      html "function move_"+id+"(e) {[lf]"
      html "  x = mm_x_"+id+"("+pos_x+",0.5);[lf]"
      html "  y = mm_y_"+id+"("+pos_y+",0.5);[lf]"
      var Float psize := (img:x1-img:x0)/img:size_x
      var Int r := 10^(min (max -(cast log:psize Int) 0) 9)
      html "  x = ((x*"+string:r+")-(x*"+string:r+")%1)/"+st
      var Float psize := (img:y1-img:y0)/img:size_y
      var Int r := 10^(min (max -(cast log:psize Int) 0) 9)
      html "  y = ((y*"+string:r+")-(y*"+string:r+")%1)/"+st
      html "  window.status=x+'  '+y;[lf]"
      html "  return true; }[lf]"
      html "document.getElementById([dq]"+id+"[dq]).onmousem
    html "</script>[lf]"


method page selected x0 y0 x1 y1
  arg_rw HtmlPage page ; arg_w Float x0 y0 x1 y1
  var Str context
  if ("&"+page:request:form+"&"+page:request:encoded_options
  if ("&"+page:request:form+"&"+page:request:encoded_options+"=" eparse any "&button*" any "*" any "*" any:(var Str button) "*" any:(var Str scontext) "*" any:(var Str signature) "=" any)
    context := page:request uncipher http_decode:scontext fa
  else
    context := ""
  if not ("&"+context+"&" eparse any "&_pliant_x0=" x0 "&" a
    x0 := undefined
  if not ("&"+context+"&" eparse any "&_pliant_y0=" y0 "&" a
    y0 := undefined
  if not ("&"+context+"&" eparse any "&_pliant_x1=" x1 "&" a
    x1 := undefined
  if not ("&"+context+"&" eparse any "&_pliant_y1=" y1 "&" a
    y1 := undefined

export '. draw' '. selected'
    context := page:request uncipher http_decode:scontext fa
  else
    context := ""
  if not ("&"+context+"&" eparse any "&_pliant_x0=" x0 "&" a
    x0 := undefined
  if not ("&"+context+"&" eparse any "&_pliant_y0=" y0 "&" a
    y0 := undefined
  if not ("&"+context+"&" eparse any "&_pliant_x1=" x1 "&" a
    x1 := undefined
  if not ("&"+context+"&" eparse any "&_pliant_y1=" y1 "&" a
    y1 := undefined

export '. draw' '. selected'