Paint v1.0 beta ( addon de dessin )

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 835 fois - Téléchargée 26 fois

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

Ajouter un commentaire

Commentaires

Messages postés
217
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
22 mai 2004

tit1012 c que tu as mal loader le truck,
faut que tu unload et que tu reload :)
Messages postés
47
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
4 mars 2007

drawrect -fr @paint %fond.rgb.dialog 1 0 0 375 300
bon sa c la 4eme ligne
eh ben sa fai sa :
* /drawrect: insufficient parameters (line 4, script32.ini)
voila
Messages postés
39
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
31 décembre 2003

holaaaa, ca c du boulot, thyb, t'es trop un boss, tu devrais en faire ton métier (même si ca existe pas ;)
Bravo!

Antony - www.csm.fr.vu
Messages postés
79
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
29 juin 2004

mwa sa ne marche pas... enfin je pense que je ne sais pas m'en servir, est ce que quelqu'un pourrait me dire comment sa marche en m'envoyant un mail à crousti82@yahoo.fr svp???? merci...
Messages postés
217
Date d'inscription
samedi 8 mars 2003
Statut
Membre
Dernière intervention
22 mai 2004

heu t le premier ou il y a des bug :/
et pour le continuer je sais comment je vais faire pour reparer les bug, mais j'ai la fleme de m'y replonger je fairai surement sa dans le moi :p ( je vais utiliser le drawsave et drawload :p )
Afficher les 31 commentaires

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.