All pastes #373563 Raw Edit

Miscellany

public text v1 · immutable
#373563 ·published 2007-02-26 21:21 UTC
rendered paste body
alias fig.win {
  if ($1- == redraw) {
    set %fig.win.rgb 16777215
    goto redraw
  }
  if ($1- == start) {
    .disable #figwinmouse 
    .unset -s %fig.win*
    set %fig.win.rgb 16777215
    window -pdk0 +t @fig.win -1 -1 810 630
    drawrect -r @fig.win 6431615 1 20 20 761 561 1
    set %fig.win.waitalllocs 1
    return
  }
  if ($1- == end) {
    :redraw
    if (!$window(@fig.win)) { 
      window -pdk0 +t @fig.win -1 -1 810 630 
      drawrect -r @fig.win 6431615 1 20 20 761 561 1
    }
    if ($active !== @fig.win) { window -a @fig.win }
    var %x_min %fig.win.x_min
    var %x_max %fig.win.x_max
    var %y_min %fig.win.y_min
    var %y_max %fig.win.y_max
    var %x_diff = %x_max - %x_min
    var %y_diff = %y_max - %y_min
    var %k = %x_diff / 760
    set %fig.win.koeficient $calc(%x_diff / 760) 
    if ($calc(%y_diff / %k) > 560) { 
      var %k = %y_diff / 560 
      set %fig.win.koeficient $calc(%y_diff / 560) 
    }
    var %x_dec = $calc($calc(%x_min / %k) - 20)
    var %y_dec = $calc($calc(%y_min / %k) - 20)
    drawtext -rnb @fig.win $rgb(255,255,255) $rgb(0,0,0) verdena 10 1 1 Min X: %x_min Max X: %x_max X Diff: %x_diff </> Min Y: %y_min Max Y: %y_max Y Diff: %y_diff </> K: 1: $+ %k </> Loc Count: $calc(%fig.win.waitalllocs - 1)
    ;echo -a $calc(%x_min / %k) $calc($calc(%x_max / %k) - $calc(%x_min / %k)) $calc(%y_min / %k) $calc($calc(%y_max / %k) - $calc(%y_min / %k)) 
    ;tasko piesimas butu taip:
    ; %x_dot / %k + 20 - %x_dec
    ; %y_dot / %l + 20 - %y_dec
    var %curr.persing.loc = 1
    var %total.locs = $calc(%fig.win.waitalllocs - 1)

    while (%curr.persing.loc <= %total.locs) {

      var %locs = %fig.win.loc. [ $+ [ %curr.persing.loc ] ]
      var %tot = $numtok(%locs,32)
      var %drawdots = $round($calc($gettok($gettok(%locs,1,32),1,120) / %k - %x_dec),0) $round($calc($gettok($gettok(%locs,1,32),2,120) / %k - %y_dec),0) $round($calc($gettok($gettok(%locs,%tot,32),1,120) / %k - %x_dec),0) $round($calc($gettok($gettok(%locs,%tot,32),2,120) / %k - %y_dec),0)
      ;drawline -r @fig.win $rgb(255,255,255) 2 ->10 10 10 20 20 50
      var %y = 1
      var %rgb = $rgb($rand(0,255),$rand(0,255),$rand(0,255))
      while (%tot > %y) {
        var %v1 = $round($calc($gettok($gettok(%locs,%y,32),1,120) / %k - %x_dec),0) 
        var %v2 = $round($calc($gettok($gettok(%locs,%y,32),2,120) / %k - %y_dec),0)
        var %drawdots = %drawdots %v1 %v2
        var %v1 = $round($calc($gettok($gettok(%locs,$calc(%y + 1),32),1,120) / %k - %x_dec),0)
        var %v2 = $round($calc($gettok($gettok(%locs,$calc(%y + 1),32),2,120) / %k - %y_dec),0)
        var %drawdots = %drawdots %v1 %v2
        drawline -nr @fig.win %rgb 1 %drawdots
        unset %drawdots
        inc %y  
      }
      ;echo -a %drawdots

      .unset %drawdots

      .inc %curr.persing.loc
    }

    drawline @fig.win

    .enable #figwinmouse
    return
  }
  if (%fig.win.waitalllocs) {

    var %tot = $calc($numtok($1,59) / 4)
    if ($numtok(%tot,46) > 1) {
      echo -a Error: Wrong loc
      return
    }
    if (!$window(@fig.win)) { 
      window -pdk0 +t @fig.win -1 -1 810 630 
      drawrect -r @fig.win 6431615 1 20 20 761 561 1
    }
    ;pasidarom biski kitoki formata
    var %tmp = $1
    var %x = 1
    var %y = 1
    while (%tot >= %x) {
      var %locs = %locs $remove($gettok(%tmp,%y,59),$chr(123),$chr(125)) $+ x $+ $remove($gettok(%tmp,$calc(%y + 1),59),$chr(123),$chr(125))
      var %y = %y + 4
      inc %x
    }

    ;persinam x_min x_max ir t.t.


    var %parsenr = 2
    var %tot = $numtok(%locs,32)

    ;jeigu cia pirma koordinate, tai priskiriam is jos pradinius x_min max ir pan.
    if (%fig.win.waitalllocs == 1) {
      set %x_min $gettok($gettok(%locs,1,32),1,120)
      var %x_max = %x_min
      set %y_min $gettok($gettok(%locs,1,32),2,120)
      var %y_max = %y_min

    }
    else {
      var %x_min %fig.win.x_min
      var %x_max %fig.win.x_max
      var %y_min %fig.win.y_min
      var %y_max %fig.win.y_max
    }

    while (%tot >= %parsenr) {

      var %curr.x = $gettok($gettok(%locs,%parsenr,32),1,120)
      var %curr.y = $gettok($gettok(%locs,%parsenr,32),2,120)

      if (%curr.x > %x_max) { var %x_max = %curr.x }
      elseif (%curr.x < %x_min) { set %x_min %curr.x }

      if (%curr.y > %y_max) { var %y_max = %curr.y }
      elseif (%curr.y < %y_min) { set %y_min %curr.y }

      inc %parsenr
    }

    set %fig.win.x_min %x_min
    set %fig.win.x_max %x_max
    set %fig.win.y_min %y_min
    set %fig.win.y_max %y_max

    ;uzetinam ir padidinam index file
    set %fig.win.loc. [ $+ [ %fig.win.waitalllocs ] ] %locs
    drawtext -rb @fig.win $rgb(255,255,255) $rgb(0,0,0) verdena 10 1 1 Min X: %x_min Max X: %x_max X Diff: N/A </> Min Y: %y_min Max Y: %y_max Y Diff: N/A </> K: N/A </> Loc Count: %fig.win.waitalllocs
    inc %fig.win.waitalllocs
    return
  }
  /*
  ;nx mum tas javinis, ten ir taip aisq :D
  if ($chr(123) isin $1) {
  */

  .unset -s %fig.win*
  set %fig.win.rgb 16777215
  ;kiekviena koordinate is uEngine sudaro keturis skaicius, X Y zMin zMax
  var %tot = $calc($numtok($1,59) / 4)
  if ($numtok(%tot,46) > 1) {
    echo -a Error: Wrong loc
    return
  }
  var %tmp = $1
  var %x = 1
  var %y = 1
  while (%tot >= %x) {
    var %locs = %locs $remove($gettok(%tmp,%y,59),$chr(123),$chr(125)) $+ x $+ $remove($gettok(%tmp,$calc(%y + 1),59),$chr(123),$chr(125))
    var %y = %y + 4
    inc %x
  }
  set %fig.win.loc.1 %locs
  set %fig.win.waitalllocs 1

  /*
  ;nx mum tas javinis, ten ir taip aisq :D
  }
  else {
  var %locs = $+($1,x,$3) $+($2,x,$3) $+($2,x,$4) $+($1,x,$4)
  }

  */


  ;echo -a %locs
  window -pdk0 +t @fig.win -1 -1 810 630
  drawrect -rn @fig.win 6431615 1 20 20 761 561 1
  ;              x1    y1      x2    y1      x2     y2       x1   y2
  ;var %locs = -87312x240096 -81129x240096 -81129x246345 -87312x246345
  ;turim sutilpt i 760x560
  ; surandam didziausius ir maziausius x y bei diff tarp ju
  var %parsenr = 2
  var %tot = $numtok(%locs,32)
  set %x_min $gettok($gettok(%locs,1,32),1,120)
  var %x_max = %x_min
  set %y_min $gettok($gettok(%locs,1,32),2,120)
  var %y_max = %y_min
  while (%tot >= %parsenr) {

    var %curr.x = $gettok($gettok(%locs,%parsenr,32),1,120)
    var %curr.y = $gettok($gettok(%locs,%parsenr,32),2,120)

    if (%curr.x > %x_max) { var %x_max = %curr.x }
    elseif (%curr.x < %x_min) { set %x_min %curr.x }

    if (%curr.y > %y_max) { var %y_max = %curr.y }
    elseif (%curr.y < %y_min) { set %y_min %curr.y }

    set %fig.win.x_min %x_min
    set %fig.win.x_max %x_max
    set %fig.win.y_min %y_min
    set %fig.win.y_max %y_max

    inc %parsenr
  }
  var %x_diff = %x_max - %x_min
  var %y_diff = %y_max - %y_min
  var %k = %x_diff / 760
  set %fig.win.koeficient $calc(%x_diff / 760) 
  if ($calc(%y_diff / %k) > 560) { 
    var %k = %y_diff / 560 
    set %fig.win.koeficient $calc(%y_diff / 560) 
  }
  var %x_dec = $calc($calc(%x_min / %k) - 20)
  var %y_dec = $calc($calc(%y_min / %k) - 20)
  drawtext -rnb @fig.win $rgb(255,255,255) $rgb(0,0,0) verdena 10 1 1 Min X: %x_min Max X: %x_max X Diff: %x_diff </> Min Y: %y_min Max Y: %y_max Y Diff: %y_diff </> K: 1: $+ %k
  ;echo -a $calc(%x_min / %k) $calc($calc(%x_max / %k) - $calc(%x_min / %k)) $calc(%y_min / %k) $calc($calc(%y_max / %k) - $calc(%y_min / %k)) 
  ;tasko piesimas butu taip:
  ; %x_dot / %k + 20 - %x_dec
  ; %y_dot / %l + 20 - %y_dec
  var %drawdots = $round($calc($gettok($gettok(%locs,1,32),1,120) / %k - %x_dec),0) $round($calc($gettok($gettok(%locs,1,32),2,120) / %k - %y_dec),0) $round($calc($gettok($gettok(%locs,%tot,32),1,120) / %k - %x_dec),0) $round($calc($gettok($gettok(%locs,%tot,32),2,120) / %k - %y_dec),0)
  ;drawline -r @fig.win $rgb(255,255,255) 2 ->10 10 10 20 20 50
  var %y = 1
  while (%tot > %y) {
    var %drawdots = %drawdots $round($calc($gettok($gettok(%locs,%y,32),1,120) / %k - %x_dec),0) $round($calc($gettok($gettok(%locs,%y,32),2,120) / %k - %y_dec),0)
    var %drawdots = %drawdots $round($calc($gettok($gettok(%locs,$calc(%y + 1),32),1,120) / %k - %x_dec),0) $round($calc($gettok($gettok(%locs,$calc(%y + 1),32),2,120) / %k - %y_dec),0)
    inc %y  
  }
  ;echo -a %drawdots
  drawline -nr @fig.win $rgb(255,255,255) 1 %drawdots
  drawline @fig.win
  .enable #figwinmouse
}

on *:close:@fig.win: {
  .disable figwinmouse
}
#figwinmouse on
menu @fig.win {
  mouse: {
    if ($mouse.x isnum 20-780) && ($mouse.y isnum 20-581) {
      drawtext -rb @fig.win 16777215 0 verdena 10 720 1 $round($calc($calc($mouse.x - 20) * %fig.win.koeficient + %fig.win.x_min),0) $+ x $+ $round($calc($calc($mouse.y - 21) * %fig.win.koeficient + 20 + %fig.win.y_min),0) $+ ----
    }
  }
  sclick: {
    if ($mouse.x isnum 20-780) && ($mouse.y isnum 20-581) {
      drawdot -r @fig.win %fig.win.rgb 1 $mouse.x $mouse.y
      drawtext -r @fig.win %fig.win.rgb verdena 10 $calc($mouse.x - 40) $calc($mouse.y + 2) $round($calc($calc($mouse.x - 20) * %fig.win.koeficient + %fig.win.x_min),0) $+ x $+ $round($calc($calc($mouse.y - 21) * %fig.win.koeficient + 20 + %fig.win.y_min),0)
    }
  }
  rclick: {
    set %fig.win.rgb $rgb($rand(0,255),$rand(0,255),$rand(0,255))
  }
}
#figwinmouse end