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 4570 fois
Apprendre  ›  Écrire un script-fu  ›  Tutoriel partie 9

 

Scheme, Tutoriel : Initiation partie 9

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

 

Les "parasites" du calque

Vous avez sans doute noté que les calque créés par le script comportaient des "parasites", des traces. C'est un vieil inconvénient qui n'a jamais été corrigé. Aussi nous faudra t-il remédier à cela par nous même : nous effacerons le contenu du calque avec,

gimp-edit-clear

Nous devons spécifier le calque que nous voulons effacer, nous utiliserons notre variable calque new-layer. Soit,

(gimp-edit-clear new-layer)

Nous insérons cela entre les lignes 40 et 50.

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)))
45 (gimp-edit-clear new-layer)
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

 

L'historique

Vous avant aussi sans doute remarqué que nous ne pouvons annuler avec l'historique la création d'un calque créé avec notre script.

L'API de Gimp nous offre 2 commandes permettant de gérer cela.

gimp-image-undo-group-start pour signifier le départ de la prise en compte dans l'historique, et gimp-image-undo-group-end pour signifier la fin de cette prise en compte. Toutes les tâches situées entre ses 2 commandes pourront alors être annuler par l'historique.

Pour que ces commandes fonctionnent, nous devons simplement spécifier l'image sur laquelle ils agissent. Soit dans notre script,

En ligne 15,

(gimp-image-undo-group-start img) ;; début d'historique d'annulation

En ligne 85,

(gimp-image-undo-group-end img) ;; fin d'historique d'annulation

Ce qui nous donne :

10 (define (script-fu-nouveau-calque-rapide image drawable) ;; declaration de la fonction
15 (gimp-image-undo-group-start img) ;; début d'historique d'annulation
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)))
45 (gimp-edit-clear new-layer)
50 (gimp-image-add-layer img new-layer -1)
85 (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.