TOP
tetris Programmez un Tetris en Java
360 pages PDF pour apprendre à votre rythme.
Développez des jeux vidéo en Java.
www.jdevmaker.com
Gimp 2.4
Documentation
Tutoriels
Ressources
Divers

Dernière mise à jour le 07 avr 2008
consultée 3997 fois
Apprendre  ›  Écrire un script-fu  ›  Tutoriel partie 11

 

Scheme, Tutoriel : Initiation avancée partie 11

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

 

Les modes images

Première approche

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é.

 

Une solution plus satisfaisante

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

 

 

Valide XHTML 1.0 Strict
Valide CSS 2.0
Valide Accessibilité
Creative Commons License

Tous les documents et ressources sont sous un contrat Creative Commons.