All pastes #462359 Raw Edit

Anonymous

public text v1 · immutable
#462359 ·published 2007-04-28 06:55 UTC
rendered paste body
alias 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