![]() |
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 (gimp-image-undo-group-start img) ;; début d'historique d'annulation
30 (let*
35 (
40 (width (car (gimp-image-width img)))
45 (height (car (gimp-image-height img)))
50 (new-layer (car (gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL)))
55 )
60 (gimp-edit-clear new-layer)
70 (gimp-image-add-layer img new-layer -1)
75 );; fin du let
80 (gimp-image-undo-group-end img) ;; fin d'historique d'annulation
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
Vous aurez probablement remarqué qu'avec une image en mode Niveaux de gris ou Couleurs indéxées, le script pose problème, une erreur vient l'interrompre.
C'est qu'en ligne 50, nous créons un calque en mode RGBA, qui n'est pas compatible avec les modes Niveaux de gris et Couleurs indéxées.
Remplaçons la ligne 160 par,
"RGB*"
Cela nous permet de rendre le script inaccessible lorsqu'un mode différent du RGB ou du RGBA est sélectionné.
Il est aussi possible d'adapter notre script en fonction du mode utilisé.
Réécrivez la ligne 160 :
""
Nous allons utiliser un nouvelle procédure,
gimp-drawable-type-with-alpha
Elle nous permettra de connaitre le mode de calque utilisé. Nous utiliserons une variable mode afin de disposer de cette information et de pouvoir la réutiliser à notre guise. Enfin, il nous faudra encore utiliser la fonction car (qui sera expliquée au chapitre suivant).
Ecrivez une nouvelle ligne 37,
(mode (car (gimp-drawable-type-with-alpha drawable)))
Nous allons ensuite simplement modifier la ligne 50,
(new-layer (car (gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL)))
pour
(new-layer (car (gimp-layer-new img width height mode "Nom du calque" 100 NORMAL)))
Ce qui nous donne :
10 (define (script-fu-nouveau-calque-rapide image drawable) ;; declaration de la fonction
20 (gimp-image-undo-group-start img) ;; début d'historique d'annulation
30 (let*
35 (
37 (mode (car (gimp-drawable-type-with-alpha drawable)))
40 (width (car (gimp-image-width img)))
45 (height (car (gimp-image-height img)))
50 (new-layer (car (gimp-layer-new img width height mode "Nom du calque" 100 NORMAL)))
55 )
60 (gimp-edit-clear new-layer)
70 (gimp-image-add-layer img new-layer -1)
75 );; fin du let
80 (gimp-image-undo-group-end img) ;; fin d'historique d'annulation
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