Paint v1.0 beta ( addon de dessin )

Contenu du snippet

Cette addon est la copy de paint ( avec des option differente et des options manquante ^^ )

Cette version est beta !!! donc je sais qu'il y a certain bug que je corrigerai d'ici quelque jour :)

copier coller tout et loader l'addon ( pour pouvoir setter des var car sinon ca marche pas ^^ )

ensuite tapper /paint

Source / Exemple :


alias paint {
  if ($window(@paint)) { window -c @config }
  window -dapBk0zo +dL @paint -1 -1 375 300
  drawrect -fr @paint %fond.rgb.dialog 1 0 0 375 300
  drawrect -r @paint %text.rgb.dialog 1 0 0 375 300
  drawline -r @paint %text.rgb.dialog 1 375 20 0 20
  drawline -r @paint %text.rgb.dialog 1 355 0 355 20
  drawtext -r @paint %text.rgb.dialog Tahoma 13 362 2 X
  drawtext -r @paint %text.rgb.dialog Tahoma 13 7 2 O 
  drawline -r @paint %text.rgb.dialog 1 20 0 20 20
  drawtext -r @paint %text.rgb.dialog Tahoma 13 160 2 Paint v1.0
  drawline -r @paint %text.rgb.dialog 1 0 40 375 40
  drawline -r @paint %text.rgb.dialog 1 60 40 60 300
  drawline -r @paint %text.rgb.dialog 1 80 20 80 40
  drawline -r @paint %text.rgb.dialog 1 160 20 160 40
  drawtext -r @paint %text.rgb.dialog Tahoma 13 18 22 Fichier
  drawtext -r @paint %text.rgb.dialog Tahoma 13 98 22 Options
  drawrect -r @paint %text.rgb.dialog 1 3 43 55 32
  drawline -r @paint %text.rgb.dialog 1 10 70 50 50
  drawrect -r @paint %text.rgb.dialog 1 3 78 55 32
  drawdot -r @paint %text.rgb.dialog 3 32 94
  drawrect -r @paint %text.rgb.dialog 1 3 113 55 32
  drawrect -re @paint %text.rgb.dialog 1 20 119 20 20
  drawrect -r @paint %text.rgb.dialog 1 3 169 55 32
  drawgradient @paint %paint.rgb.1 %paint.rgb.2 4 170 53 30
  drawrect -r @paint %text.rgb.dialog 1 3 240 55 56
  drawrect -fr @paint %paint.rgb.1 1 4 241 53 27
  drawrect -fr @paint %paint.rgb.2 1 4 268 53 27
  design paint %paint.select 1
  if (%n.px == $null) { set %n.px 2 }
  drawtext -r @paint %text.rgb.dialog Tahoma 13 3 148 %n.px pixel
  drawrect -r @paint %text.rgb.dialog 1 42 148 16 18
  drawtext -r @paint %text.rgb.dialog Tahoma 13 49 148 !
}
alias -l paint.popup {
  var %click = $menu(Popup,$1-)
  if ( %click != $null ) $gettok(%click,3-,32)
  return
}
menu @paint {
  sclick { 
    ;echo la souris a bouger en $mouse.x : $mouse.y
    if ($inrect($mouse.x,$mouse.y,3,43,55,32)) && (%paint.select != trait) { design paint trait 1 | set %paint.trait on }
    if ($inrect($mouse.x,$mouse.y,355,0,20,20)) { design paint close 1 | set %paint.close on }
    if ($inrect($mouse.x,$mouse.y,0,0,20,20)) { design paint move 1 | set %paint.move on }
    if ($inrect($mouse.x,$mouse.y,42,148,16,18)) { design paint px 1 | set %paint.px on }
    if ($inrect($mouse.x,$mouse.y,3,78,55,32)) && (%paint.select != point) { design paint point 1 | set %paint.point on }
    if ($inrect($mouse.x,$mouse.y,3,113,55,32)) && (%paint.select != rond) { design paint rond 1 | set %paint.rond on }
    if ($inrect($mouse.x,$mouse.y,3,170,53,30)) && (%paint.select != degrader) { design paint degrader 1 | set %paint.degrade on }
    if ($inrect($mouse.x,$mouse.y,61,41,314,258)) { 
      if (%paint.select == point) { drawdot -r @paint %paint.rgb.1 2 $mouse.x $mouse.y | set %paint.dessin.point on }
      if (%paint.select == rond) { set %paint.dessin.rond on | set %paint.rond.now $mouse.x | set %paint.rond.now2 $mouse.y | set %paint.rond.depard $mouse.x | set %paint.rond.depard2 $mouse.y }
      if (%paint.select == trait) { set %paint.dessin.trait on | set %paint.trait.now $mouse.x | set %paint.trait.now2 $mouse.y | set %paint.trait.depard $mouse.x | set %paint.trait.depard2 $mouse.y }
      if (%paint.select == degrader) { set %paint.dessin.degrader on | set %paint.degrader.now $mouse.x | set %paint.degrader.now2 $mouse.y | set %paint.degrader.depard $mouse.x | set %paint.degrader.depard2 $mouse.y }
    }
  }
  mouse { 
    if ($inrect($mouse.x,$mouse.y,42,148,16,18)) && (%paint.px == on) { design paint px 1 }
    elseif (!inrect($mouse.x,$mouse.y,42,148,16,18)) && (%paint.px == on) { design paint px 0 | unset %paint.px }
    if ($inrect($mouse.x,$mouse.y,3,170,53,30)) && (%paint.degrade == on) { design paint trait 1 }
    elseif (!$inrect($mouse.x,$mouse.y,3,170,53,30)) && (%paint.degrade == on) { design paint trait 0 | unset %paint.degrade }
    if ($inrect($mouse.x,$mouse.y,3,43,55,32)) && (%paint.trait == on) { design paint trait 1 }
    elseif (!$inrect($mouse.x,$mouse.y,3,43,55,32)) && (%paint.trait == on) { design paint trait 0 | unset %paint.trait }
    if ($inrect($mouse.x,$mouse.y,355,0,20,20)) && (%paint.close == on) { design paint close 1 }
    elseif (!$inrect($mouse.x,$mouse.y,355,0,20,20)) && (%paint.close == on) { design paint close 0 | unset %paint.close }
    if ($inrect($mouse.x,$mouse.y,0,0,20,20)) && (%paint.move == on) { design paint move 1 | move.paint $calc($mouse.dx - $window($active).x) $calc($mouse.dy - $window($active).y) }
    if ($inrect($mouse.x,$mouse.y,3,78,55,32)) && (%paint.point == on) { design paint point 1 }
    elseif (!$inrect($mouse.x,$mouse.y,3,78,55,32)) && (%paint.point == on) { design paint point 0 | unset %paint.point }
    if ($inrect($mouse.x,$mouse.y,3,113,55,32)) && (%paint.rond == on) { design paint rond 1 }
    elseif (!$inrect($mouse.x,$mouse.y,3,113,55,32)) && (%paint.rond == on) { design paint rond 0 | unset %paint.rond }
    if ($inrect($mouse.x,$mouse.y,61,41,314,258)) {
      if (%paint.select == point) && (%paint.dessin.point == on) { drawdot -r @paint %paint.rgb.1 %n.px $mouse.x $mouse.y }
      if (%paint.select == rond) && (%paint.dessin.rond == on) { drawrect -re @paint %paint.rgb.1 %n.px %paint.rond.depard %paint.rond.depard2 $calc($mouse.x - %paint.rond.depard) $calc($mouse.y - %paint.rond.depard2) | drawrect -re @paint %fond.rgb.dialog %n.px %paint.rond.depard %paint.rond.depard2 $calc(%paint.rond.now - %paint.rond.depard) $calc(%paint.rond.now2 - %paint.rond.depard2) | set %paint.rond.now $mouse.x | set %paint.rond.now2 $mouse.y }
      if (%paint.select == trait) && (%paint.dessin.trait == on) { drawline -r @paint %fond.rgb.dialog %n.px %paint.trait.depard %paint.trait.depard2 %paint.trait.now %paint.trait.now2 | drawline -r @paint %paint.rgb.1 %n.px %paint.trait.depard %paint.trait.depard2 $mouse.x $mouse.y | set %paint.trait.now $mouse.x | set %paint.trait.now2 $mouse.y }
      if (%paint.select == degrader) && (%paint.dessin.degrader == on) { drawrect -r @paint %paint.rgb.1 %n.px %paint.degrader.depard %paint.degrader.depard2 $calc($mouse.x - %paint.degrader.depard) $calc($mouse.y - %paint.degrader.depard2) | drawrect -r @paint %fond.rgb.dialog %n.px %paint.degrader.depard %paint.degrader.depard2 $calc(%paint.degrader.now - %paint.degrader.depard) $calc(%paint.degrader.now2 - %paint.degrader.depard2) | set %paint.degrader.now $mouse.x | set %paint.degrader.now2 $mouse.y }
    }
    elseif (!$inrect($mouse.x,$mouse.y,61,41,314,258)) {
      if (%paint.select == point) && (%paint.dessin.point == on) { unset %paint.dessin.point }
    }
  }
  uclick {
    if ($inrect($mouse.x,$mouse.y,4,241,53,27)) { set %paint.couleur 1 | ouvrir rgb.paint }
    if ($inrect($mouse.x,$mouse.y,4,268,53,27)) { set %paint.couleur 2 | ouvrir rgb.paint }
    if ($inrect($mouse.x,$mouse.y,42,148,16,18)) { design paint px 0 | unset %paint.px | var %px.temp = $?="entre le nombre de pixel ( entre 1 et 10 conseiller )" | if (%px.temp != $null) { drawtext -r @paint %fond.rgb.dialog Tahoma 13 3 148 %n.px pixel | set %n.px %px.temp | drawtext -r @paint %text.rgb.dialog Tahoma 13 3 148 %n.px pixel } }
    if ($inrect($mouse.x,$mouse.y,3,170,53,30)) { design paint %paint.select 0 | unset %paint.degrade | set %paint.select degrader }
    if ($inrect($mouse.x,$mouse.y,3,43,55,32)) { design paint %paint.select 0 | unset %paint.trait | set %paint.select trait }
    if ($inrect($mouse.x,$mouse.y,355,0,20,20)) { design paint close 0 | unset %paint.close | window -c @paint }
    if ($inrect($mouse.x,$mouse.y,0,0,20,20)) { design paint move 0 | unset %paint.move }
    if ($inrect($mouse.x,$mouse.y,3,78,55,32)) { design paint %paint.select 0 | unset %paint.point | set %paint.select point }
    if ($inrect($mouse.x,$mouse.y,3,113,55,32)) { design paint %paint.select 0 | unset %paint.rond | set %paint.select rond }
    if ($inrect($mouse.x,$mouse.y,61,41,314,258)) {
      if (%paint.select == point) { unset %paint.dessin.point }
      if (%paint.select == rond) { drawrect -re @paint %fond.rgb.dialog %n.px %paint.rond.depard %paint.rond.depard2 $calc($mouse.x - %paint.rond.now) $calc($mouse.y - %paint.rond.now2) | drawrect -fre @paint %paint.rgb.1 %n.px %paint.rond.depard %paint.rond.depard2 $calc($mouse.x - %paint.rond.depard) $calc($mouse.y - %paint.rond.depard2) | unset %paint.dessin.rond | unset %paint.rond.depard | unset %paint.rond.depard2 | unset %paint.rond.now | unset %paint.rond.now2 }
      if (%paint.select == trait) { drawline -r @paint %fond.rgb.dialog %n.px %paint.trait.depard %paint.trait.depard2 %paint.trait.now %paint.trait.now2 | drawline -r @paint %paint.rgb.1 %n.px %paint.trait.depard %paint.trait.depard2 $mouse.x $mouse.y | unset %paint.dessin.trait | unset %paint.trait.depard | unset %paint.trait.depard2 | unset %paint.trait.now | unset %paint.trait.now2 }
      if (%paint.select == degrader) { drawrect -r @paint %fond.rgb.dialog %n.px %paint.degrader.depard %paint.degrader.depard2 $calc($mouse.x - %paint.degrader.now) $calc($mouse.y - %paint.degrader.now2) | drawgradient @paint %paint.rgb.2 %paint.rgb.1 %paint.degrader.depard %paint.degrader.depard2 $calc($mouse.x - %paint.degrader.depard) $calc($mouse.y - %paint.degrader.depard2) | unset %paint.dessin.degrader | unset %paint.degrader.depard | unset %paint.degrader.depard2 | unset %paint.degrader.now | unset %paint.degrader.now2 }
    }
  }
}
alias design {
  if ($1 == paint) {
    if ($2 == trait) { 
      if ($3 == 1) { drawrect -fr @paint %text.rgb.dialog 1 3 43 55 32 | drawline -r @paint %fond.rgb.dialog 1 10 70 50 50 }
      if ($3 == 0) { drawrect -fr @paint %fond.rgb.dialog 1 3 43 55 32 | drawrect -r @paint %text.rgb.dialog 1 3 43 55 32 | drawline -r @paint %text.rgb.dialog 1 10 70 50 50 }
    }
    if ($2 == close) {
      if ($3 == 1) { drawrect -fr @paint %text.rgb.dialog 1 355 0 20 20 | drawtext -r @paint %fond.rgb.dialog Tahoma 13 362 2 X }
      if ($3 == 0) { drawrect -fr @paint %fond.rgb.dialog 1 355 0 20 20 | drawrect -r @paint %text.rgb.dialog 1 355 0 20 21 | drawtext -r @paint %text.rgb.dialog Tahoma 13 362 2 X }
    }
    if ($2 == move) {
      if ($3 == 1) { drawrect -fr @paint %text.rgb.dialog 1 0 0 20 20 | drawtext -r @paint %fond.rgb.dialog Tahoma 13 7 3 O }
      if ($3 == 0) { drawrect -fr @paint %fond.rgb.dialog 1 0 0 20 20 | drawrect -r @paint %text.rgb.dialog 1 0 0 21 21 | drawtext -r @paint %text.rgb.dialog Tahoma 13 7 3 O }
    }
    if ($2 == point) {
      if ($3 == 1) { drawrect -fr @paint %text.rgb.dialog 1 3 78 55 32 | drawdot -r @paint %fond.rgb.dialog 3 32 94 }
      if ($3 == 0) { drawrect -fr @paint %fond.rgb.dialog 1 3 78 55 32 | drawrect -r @paint %text.rgb.dialog 1 3 78 55 32 | drawdot -r @paint %text.rgb.dialog 3 32 94 }
    }
    if ($2 == rond) { 
      if ($3 == 1) { drawrect -fr @paint %text.rgb.dialog 1 3 113 55 32 | drawrect -re @paint %fond.rgb.dialog 1 20 119 20 20 }
      if ($3 == 0) { drawrect -fr @paint %fond.rgb.dialog 1 3 113 55 32 | drawrect -r @paint %text.rgb.dialog 1 3 113 55 32 | drawrect -re @paint %text.rgb.dialog 1 20 119 20 20 }
    }
    if ($2 == degrader) {
      if ($3 == 1) { drawgradient @paint %paint.rgb.2 %paint.rgb.1 4 170 53 30 }
      if ($3 == 0) { drawgradient @paint %paint.rgb.1 %paint.rgb.2 4 170 53 30 }
    }
    if ($2 == px) { 
      if ($3 == 1) { drawrect -fr @paint %text.rgb.dialog 1 42 148 16 18 | drawtext -r @paint %fond.rgb.dialog Tahoma 13 49 148 ! }
      if ($3 == 0) { drawrect -fr @paint %fond.rgb.dialog 1 42 148 16 18 | drawrect -r @paint %text.rgb.dialog 1 42 148 16 18 | drawtext -r @paint %text.rgb.dialog Tahoma 13 49 148 ! }
    }
  }
}
alias -l move.paint {
  if ($window(@paint)) window @paint $calc($mouse.dx - $1) $calc($mouse.dy - $2)
  if ($mouse.key & 1) .timer $+ $ticks -m 1 0 move.paint $1-
}
alias drawgradient { if ($1 == -v) { var %win = $2 , %rgb1 = $3 , %rgb2 = $4 , %x = $5 , %y = $6 , %w = $7 , %h = $8 , %s = %h , %v = $true } | else { var %win = $1 , %rgb1 = $2 , %rgb2 = $3 , %x = $4 , %y = $5 , %w = $6 , %h = $7 , %s = %w , %v = $false } | if !$window(%win) { echo $color(Info Text) -ea * /drawgradient: invalid window | halt } | if !%h { echo $color(Info Text) -ea * /drawgradient: insufficient parameters | halt } | if (%rgb1 isnum) { var %rgb1 = $rgb(%rgb1) } | tokenize 44 $eval(%rgb1,2) | var %R1 = $1 , %G1 = $2 , %B1 = $3 | if (%rgb2 isnum) { var %rgb2 = $rgb(%rgb2) } | tokenize 44 $eval(%rgb2,2) | var %R2 = $1 , %G2 = $2 , %B2 = $3 | var %dR = $calc((%R2 - %R1)/ %s) | var %dG = $calc((%G2 - %G1)/ %s) | var %dB = $calc((%B2 - %B1)/ %s) | var %i = 0 
  while %i < %s { var %_r = $round($calc(%R1 + %i * %dR),0) | var %_g = $round($calc(%G1 + %i * %dG),0) | var %_b = $round($calc(%B1 + %i * %dB),0) | var %rgb = $rgb(%_r,%_g,%_b) | if %v { drawrect -nr %win %rgb 1 %x $calc(%y + %i) %w 1 } | else { drawrect -nr %win %rgb 1 $calc(%x + %i) %y 1 %h } | inc %i } | drawdot %win 
}
dialog rgb.paint {
  title "changer de couleur"
  size -1 -1 273 82
  scroll "", 1, 48 7 150 16, range 255 horizontal bottom
  scroll "", 2, 48 31 150 16, range 255 horizontal bottom
  scroll "", 3, 48 55 150 16, range 255 horizontal bottom
  icon 5, 205 7 64 64
  edit "", 6, 3 5 40 21
  edit "", 7, 3 29 40 21
  edit "", 8, 3 53 40 21
  edit "", 9, 30 78 70 21, result hide
}
on *:dialog:rgb.paint:init:*:{
  set %rgbfashrgb $rgb(%paint.rgb. [ $+ [ %paint.couleur ] ] $+ )
  did -a $dname 6 $gettok(%rgbfashrgb,1,44) | did -a $dname 7 $gettok(%rgbfashrgb,2,44) | did -a $dname 8 $gettok(%rgbfashrgb,3,44) | did -a $dname 9 %zlag.colour [ $+ [ %i1 ] ]
  did -c $dname 1 $gettok(%rgbfashrgb,1,44) | did -c $dname 2 $gettok(%rgbfashrgb,2,44) | did -c $dname 3 $gettok(%rgbfashrgb,3,44)
  window -hBpf +d @rgbfash -1 -1 64 64
  drawrect -fr @rgbfash $rgb($did(6),$did(7),$did(8)) 1 0 0 64 64
  drawsave @rgbfash rgb.bmp
  did -g $dname 5 rgb.bmp
}
on *:dialog:rgb.paint:scroll:*:{
  if ($did == 1) { did -o $dname 6 1 $did(1).sel }
  if ($did == 2) { did -o $dname 7 1 $did(2).sel }
  if ($did == 3) { did -o $dname 8 1 $did(3).sel }
  if ($istok(1 2 3,$did,32)) {
    set %paint.rgb. [ $+ [ %paint.couleur ] ] $rgb($did(6),$did(7),$did(8))
    if (%paint.couleur == 1) { drawrect -fr @paint $rgb($did(6),$did(7),$did(8)) 1 4 241 53 27 }
    if (%paint.couleur == 2) { drawrect -fr @paint $rgb($did(6),$did(7),$did(8)) 1 4 268 53 27 }
    drawgradient @paint %paint.rgb.1 %paint.rgb.2 4 170 53 30
    drawrect -fr @rgbfash $rgb($did(6),$did(7),$did(8)) 1 0 0 64 64
    drawsave @rgbfash rgb.bmp
    did -g $dname 5 rgb.bmp
    did -o $dname 9 1 $rgb($did(6),$did(7),$did(8))
  }
}
on *:dialog:rgb.paint:edit:*:{
  if ($did == 6) { if (!$len($did(6))) || ($did(6) !isnum) { did -o $dname 6 1 0 } | did -c $dname 1 $did(6) }
  if ($did == 7) { if (!$len($did(7))) || ($did(7) !isnum) { did -o $dname 7 1 0 } | did -c $dname 2 $did(7) }
  if ($did == 8) { if (!$len($did(8))) || ($did(8) !isnum) { did -o $dname 8 1 0 } | did -c $dname 3 $did(8) }
  if ($istok(6 7 8,$did,32)) {
    set %paint.rgb. [ $+ [ %paint.couleur ] ] $rgb($did(6),$did(7),$did(8))
    if (%paint.couleur == 1) { drawrect -fr @paint $rgb($did(6),$did(7),$did(8)) 1 4 241 53 27 }
    if (%paint.couleur == 2) { drawrect -fr @paint $rgb($did(6),$did(7),$did(8)) 1 4 268 53 27 }
    drawgradient @paint %paint.rgb.1 %paint.rgb.2 4 170 53 30
    drawrect -fr @rgbfash $rgb($did(6),$did(7),$did(8)) 1 0 0 64 64
    drawsave @rgbfash rgb.bmp
    did -g $dname 5 rgb.bmp
    did -o $dname 9 1 $rgb($did(6),$did(7),$did(8))
  }
}
alias ouvrir {
  if ($dialog($1)) { dialog -x $1 }
  dialog -md $1 $1
}

on 1:load: {
  set %fond.rgb.dialog 16777215
  set %text.rgb.dialog 7960953
  set %paint.rgb.2 0
  set %paint.rgb.1 206
  set %paint.select point
  set %n.px 1
  echo -a Merci d'avoir télécharger Paint Version 1.0 creer par thyb
  echo -a Merci de ne pas copier
  echo -a Pour ouvrir le dialog tappe /paint :) et le tour est jouer :)
  echo -a Pour me prevenir des bug ou autre: thybsite@hotmail.com
}

Conclusion :


Voila, une fois loader, ( je me repete mais bon ) tappe /paint

Liste des bug que je corrigerai d'ici pas longtemps:
- les trait,cercle,degrader efface lors de la visualisation du trait ( bug que je corrigerai en mettant un mode sans previsualisation et avec ^^ )

- les menu ( fichier et option ) ne sont pas encore script ( je vais y mettre dans fichier ( new , save as , save , load , exit ) et dans option ( voir le code en mirc scripting ( si j'y arrive ^^ ) , zoom , rectangle )

- lorsqu'on click sur la button pour changer de couleur rgb, il est possible qu'il se trouve sous la window paint :/ donc deplacer la window et vous verrez en dessous le dialog ;)

voila pour les bug decouverts, n'esiter pas a mettre un commentaire :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.