![]() |
Programmez un Tetris en Java 360 pages PDF pour apprendre à votre rythme. Développez des jeux vidéo en Java. www.jdevmaker.com |
Ce document est sous un contrat Creative Commons.
Pour rappel voici l'état actuel de notre script :
10 (define (script-fu-nouveau-calque-rapide image drawable) ;; declaration de la fonction
20 (set! width (car (gimp-image-width img))) ;; variable de largeur de l'image
30 (set! height (car (gimp-image-height img))) ;; variable de hauteur de l'image
40 (set! new-layer (car (gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL)))
50 (gimp-image-add-layer img new-layer -1)
90 ) ;; fin de la fonction
100 (script-fu-register "script-fu-nouveau-calque-rapide" ;; nom du script
110 "<Image>/Perso/Quick Layer" ;; position du script dans le menu
120 "Cree un calque directement, sans dialogue" ;; commentaires
130 "Auteur" ;; auteur
140 "Copyright" ;; copyright
150 "Date" ;; date
160 "" ;; types d'images supportés par le script
170 SF-IMAGE "Image" 0 ;; image dans lequel le calque est ajouté
180 SF-DRAWABLE "Drawable" 0 ;; calque actif de l'image
190 ) ;; fin du register
La ligne 40 va nous permettre de créer ce nouveau calque. Examinons, dans la base de procédure la commande :
gimp-layer-new.
C'est une commande un peu plus complexe, mais c'est vraiment très simple. En entrée, nous devons simplement indiquer ce qui caractérise un calque, à savoir sa largeur, sa hauteur, son mode image, son nom, son opacité et son mode de calque. Notez qu'en premier nous devons lui indiquer l'image dans laquelle ce calque devra être insérer.
soit,
(gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL)
ou
(gimp-layer-new img width height 1 "Nom du calque" 100 0)
La première forme est sans doute plus évocatrice !
Comme la Sortie indique LAYER soit le calque, cette commande nous retournera donc cette valeur. Nous en profiterons, car nous aurons par la suite besoin de ce calque, nous devons l'identifier, c'est à dire créer une variable contenant toutes les informations de ce calque. Cela ce passe exactement comme nous l'avons déjà vu.
Nous utilisons set!. Notre variable s'appellera new-layer.
(set! new-layer (gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL))
Mais encore une fois, cette forme est inexact. J'insiste : nous n'attribuons pas directement une valeur à notre variable new-layer, mais c'est une commande qui retournera une valeur. Nous devons donc impérativement utiliser car.
soit,
(set! new-layer (car (gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL)))
La variable new-layer contient donc "le calque" créé.
A ce stade notre calque est créé, mais il n'apparaît pas encore dans le dialogue Calque. Pourquoi ? Eh bien c'est comme ça ! On pourrait en effet souhaiter que cela soit automatique, mais ça ne l'est pas. Nous devrons donc utiliser une seconde commande qui le fera, et qui va de paire avec la précédente en quelque sorte.
soit,
gimp-image-add-layer
Nous devons spécifier 3 entrées :
A la ligne 50, nous écrirons donc la commande ainsi :
(gimp-image-add-layer img new-layer -1)
Enfin la ligne 90 ferme la première parenthèse ouverte en ligne 10, et termine l'écriture de notre fonction.