rendered paste bodyalias pt {
if (!$2) tokenize 32 20 20
hadd -m pt x $calc(($1 *10))
hadd -m pt y $calc(($2 *10))
if (!$window(@Pixeltool)) hadd -m pt c $color(15)
window -Cdfk0pw0 +ft @Pixeltool 0 0 $calc($hget(pt,x) +30) $hget(pt,y)
drawrect -fr @Pixeltool $color(0) 1 30 0 $hget(pt,x) $hget(pt,y)
pt.ui
pt.grid $1 $2
}
alias -l pt.re {
hadd -m pt x $calc(($1 *10))
hadd -m pt y $calc(($2 *10))
if (!$window(@Pixeltool)) hadd -m pt c $color(15)
window -fp @Pixeltool -1 -1 $calc($hget(pt,x) +30) $hget(pt,y)
pt.ui
pt.grid $1 $2
}
alias -l pt.ui {
drawrect -fr @Pixeltool $rgb(250,250,250) 1 0 0 30 $hget(pt,y)
drawrect -cr @Pixeltool $rgb(235,235,235) 1 0 0 30 $hget(pt,y)
var %c = 0, %n = 1, %x = 4, %y = 3
while (%n <= 8) {
drawrect -r @Pixeltool $rgb(100,100,100) 1 %x %y 10 10
drawfill -r @Pixeltool $color(%c) $rgb(100,100,100) $calc(%x +1) $calc(%y +1)
inc %x 12
inc %c
drawrect -r @Pixeltool $rgb(100,100,100) 1 %x %y 10 10
drawfill -r @Pixeltool $color(%c) $rgb(100,100,100) $calc(%x +1) $calc(%y +1)
dec %x 12
inc %y 12
inc %c
inc %n
}
drawrect -r @Pixeltool $rgb(100,100,100) 1 9 100 12 12
drawfill -r @Pixeltool $hget(pt,c) $rgb(100,100,100) 10 101
drawtext -bcr @Pixeltool $rgb(100,100,100) $rgb(250,250,250) terminal 7 2 $calc($hget(pt,y) -35) 27 6 V1.0
drawtext -r @Pixeltool $rgb(100,100,100) terminal 7 6 $calc($hget(pt,y) -17) x: $+ $calc($hget(pt,x) /10)
drawtext -r @Pixeltool $rgb(100,100,100) terminal 7 6 $calc($hget(pt,y) -8) y: $+ $calc($hget(pt,y) /10)
}
alias -l pt.grid {
var %x = 0, %y = 0
while (%y <= $1) {
drawline -r @Pixeltool $rgb(235,235,235) 1 $calc((%y *10) +30) 0 $calc((%y *10) +30) $hget(pt,y)
inc %y
}
while (%x <= $2) {
drawline -r @Pixeltool $rgb(235,235,235) 1 30 $calc(%x *10) $calc($hget(pt,x) +30) $calc(%x *10)
inc %x
}
}
alias -l pt.draw {
if ($inrect($2,$3,0,0,30,$hget(pt,y)) == $true) {
if ($hget(pt,m)) hdel pt m
var %a = $getdot(@Pixeltool,$2,$3)
if ((%a == $rgb(100,100,100)) || (%a == $rgb(235,235,235)) || (%a == $rgb(250,250,250))) halt
else {
hadd -m pt c %a
drawfill -r @Pixeltool %a $rgb(100,100,100) 10 102
}
}
else drawfill -r @Pixeltool $hget(pt,c) $rgb(235,235,235) $2 $3
}
alias -l pt.load {
var %c = $str($chr(45),2), %f = $$1-, %l = 1, %o, %y = 1
pt.re $len($strip($read(%f,1))) $lines(%f)
while ($read(%f,%l)) {
noop $regex(c,$pt.lf($v1),/(\d{1,2}\.\d{1,2})/g)
noop $regex(l,$pt.lf($v1),/(--+)/g)
var %x = 31, %m = 1, %n = 1
while (%m <= $regml(c,0)) {
%o = 1
while (%o <= $len($regml(l,%n))) {
drawfill -r @Pixeltool $color($gettok($regml(c,%m),1,46)) $rgb(235,235,235) %x %y
inc %x 10
inc %o
}
inc %n
inc %m
}
inc %y 10
inc %l
}
}
alias -l pt.lf { return $replace($$1-,$chr(44),$chr(46),$chr(3),$null) }
alias -l pt.save {
if ($1 == 1) { var %f = $$2- | if ($isfile(%f)) write -c $qt(%f) | if ($numtok($nopath(%f),46) == 1) %f = $+(%f,.txt) }
else var %f = $$2
var %c = $str($chr(45),2), %o, %s, %t, %x, %y = 1
while (%y <= $hget(pt,y)) {
%x = 31
while (%x <= $calc($hget(pt,x) +30)) {
%t = $pt.c($getdot(@Pixeltool,%x,%y))
if (%o == %t) %s = %s $+ %c
else %s = $+(%s,$chr(3),%t,$chr(44),%t,%c)
%o = %t
if (%x == $calc($hget(pt,x) +21)) {
if ($1 == 1) write $qt(%f) %s
else msg %f %s
unset %s
unset %o
}
inc %x 10
}
inc %y 10
}
}
alias -l pt.c { var %c = 0 | while (%c <= 15) { if ($1 == $color(%c)) { return %c | break } | inc %c } }
menu @Pixeltool {
mouse:{
if ($hget(pt,m)) pt.draw $hget(pt,c) $mouse.x $mouse.y
if ($inrect($mouse.x,$mouse.y,31,1,$hget(pt,x),$hget(pt,y)) == $true) drawtext -bcr @Pixeltool $rgb(100,100,100) $rgb(250,250,250) terminal 7 2 $calc($hget(pt,y) -26) 27 6 $+($base($calc($ceil($calc($mouse.x /10)) -3),10,10,2),$chr(44),$base($ceil($calc($mouse.y /10)),10,10,2))
else drawtext -bcr @Pixeltool $rgb(100,100,100) $rgb(250,250,250) terminal 7 2 $calc($hget(pt,y) -26) 27 6 ???
}
sclick:{ hinc -m pt m | pt.draw $hget(pt,c) $mouse.x $mouse.y }
uclick:hdel pt m
leave:drawtext -bcr @Pixeltool $rgb(100,100,100) $rgb(250,250,250) terminal 7 2 $calc($hget(pt,y) -26) 27 6 ???
New
.20x20:{ close -@ @Pixeltool | pt 20 20 }
.30x30:{ close -@ @Pixeltool | pt 30 30 }
.50x50:{ close -@ @Pixeltool | pt 50 50 }
.Custom:{ if ($regex($input(Enter in values for X Y (i.e. 75 50),e,Pixeltool - New),/^(\d+\s\d+)$/)) { close -@ @Pixeltool | pt $regml(1) } }
Resize
.20x20:pt.re 20 20
.30x30:pt.re 30 30
.50x50:pt.re 50 50
.Custom:if ($regex($input(Enter in values for X Y (i.e. 75 50),e,Pixeltool - Resize),/^(\d+\s\d+)$/)) pt.re $regml(1)
Fill Grid
.With Selected Colour:{
var %x, %y = 1
while (%y <= $hget(pt,y)) {
%x = 31
while (%x <= $calc($hget(pt,x) +30)) {
drawfill -r @Pixeltool $hget(pt,c) $rgb(235,235,235) %x %y
inc %x 10
}
inc %y 10
}
}
-
Open Art:if ($sfile($mircdir *.txt)) run $qt($v1)
-
Load Art:pt.load $sfile($mircdir *.txt,Load Art,Load)
Save Art:pt.save 1 $sfile($mircdir *.txt,Save As,Save)
}
menu Channel,Query {
Pixeltool
.Open Pixeltool:pt
.Play Current Art (to $active $+ ):pt.save 2 $active
.Play Saved Art (to $active $+ ) $+ ...:if ($sfile($mircdir *.txt)) .play $active $qt($v1)
}
on *:close:@Pixeltool:hfree pt