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