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

 

Scheme, Tutoriel : Initiation partie 3

Ce document est sous un contrat Creative Commons.

 

Note : l'exemple sur lequel nous allons travailler est pour l'instant imparfait (entre autre, des "parasites" apparaissent sur le calque), j'ai simplifié le script dans un premier temps pour une meilleure compréhension, nous l'étofferons au fur et à mesure.

Utilisons le script présenté en partie 1

Rappel : <toolbox> = fenêtre d'outils et <image> = fenêtre images.

Copiez le script ci-dessous dans le bloc note.

;; -*-scheme-*-
;; simple layer new script, Alan Horkan 2004
;; so long as remove these comments from your script
;; feel free to use it for whatever you like.
 
(define (script-fu-layers-new-layer-quick image drawable)
 
(set! width (car (gimp-image-width img)))
(set! height (car (gimp-image-height img)))
 
(set! new-layer (car (gimp-layer-new img width height RGBA-IMAGE "Nom du calque" 100 NORMAL)))
 
(gimp-image-add-layer img new-layer -1)
)
 
(script-fu-register "script-fu-layers-new-layer-quick" ;; nom du script
"<Image>/Layer/New/Quick Layer" ;; position du script dans le menu
"Cree un calque directement, sans dialogue" ;; commentaires
"Auteur" ;; auteur
"Copyright" ;; copyright
"Date" ;; date
"" ;; types d'images supportés par le script
SF-IMAGE "Image" 0 ;; image dans lequel le calque est ajouté
SF-DRAWABLE "Drawable" 0 ;; calque actif de l'image
) ;; fin du register

Enregistrez le avec le nom "new_layer.scm" au format txt, dans le répertoire des script-fu de Gimp, ou dans votre répertoire de script personnel .

Vous avez enregistrez le script sur votre disque dur, mais Gimp ne l'a pas reconnu, il ne sait pas qu'il peut en disposer. Vous pouvez relancer Gimp, mais il y a plus rapide : faites <toolbox> Exts > Script-fu > Rafraîchir les scripts. Maintenant vous pouvez utiliser le script. Il est accessible depuis <image> Calque > New > Quick layer (le menu par lequel un script-fu est accessible, n'est pas limité au menu script-fu).

Créez une nouvelle image RVB, avec les dimensions que vous voulez. Vous voyez qu'il n'existe qu'un seul calque, sans le canal Alpha (tout blanc si vous avez laissez les paramètres d'arrière-plan par défaut). Faites <image> Calque > New > Quick layer, un nouveau calque "Nom du calque" a été ajouté au dessus.

 

Pour plus de commodité

Ci-dessous, j'ai ajouté à chaque début de ligne un numéro arbitraire. Ne modifier pas votre script déjà enregistré. Je propose cela dans un but pragmatique. Lorsque je parle de la ligne n°x, vous pouvez alors facilement l'identifier.

10 (define (script-fu-layers-new-layer-quick image drawable)
 
20 (set! width (car (gimp-image-width img)))
30 (set! height (car (gimp-image-height img)))
 
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 ) 
 
100 (script-fu-register "script-fu-layers-new-layer-quick" ;; nom du script
110 "<Image>/Layer/New/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

 

Un nom pour identifier le script

Loin d'utiliser ici le jargon informatique de façon correcte et juste, je simplifierais à l'intention du débutant afin de ne pas pas l'écrouler par l'emploi de terme exact mais qui peuvent sembler au départ empli de contradiction, ceux ayant plus de connaissance préfèreront sans doute consulter d'autres sources que celle-ci.

Dans un script-fu, nous trouvons des instructions en Scheme, par exemple set!. Mais aussi des procédures (et c'est bien souvent la majorité) propre à Gimp, qui ne sont pas du Scheme, mais emprunté a ce que l'on nomme l'API de Gimp.

C'est le cas à la ligne 100 avec script-fu-register. Cela indique à Gimp que ce qui va suivre doit être prit en compte dans le registre (le registre permet d'identifier le script, avec ses paramètres, ses commentaires, le menu par lequel il sera accessible...).

La première chose que nous devons impérativement indiquer est le nom du script, nom qui est une identification toute personnelle. Chaque script doit posséder son propre nom, unique donc. Que se passe t-il si malgré tout on attribue un nom déjà utilisé par un autre script ? Et bien Gimp, n'en prendra en compte qu'un seul, le dernier qu'il aura rencontré, ignorant les autres.

Cette identification (le nom) vient de suite après l'instruction script-fu-register. Elle est indiquée entre guillemets. Dans notre exemple, "script-fu-layers-new-layer-quick".

Ce nom est entièrement arbitraire, entre les guillemets vous écrivez ce que vous voulez, mais c'est ainsi que le script sera identifié. La ligne 100 est donc uniquement consacré a la définition de cette identification.

La ligne 10 (nous y reviendrons) attribue des variables aux paramètres du script, et elle reprend le nom que l'on a attribué à notre script.

(define (script-fu-layers-new-layer-quick image drawable)

Notre identificateur script-fu-layers-new-layer-quick n'est pas ici spécifié entre guillemets car nous ne le définissons plus, nous l'utilisons. Ainsi la syntaxe est différente, pas de guillemets.

Gardons cela à l'esprit et continuons !

 

La base de procédure (explorer l'API de Gimp)

Faites <toolbox> Exts > Explorer la base de procédures.

Un dialogue s'affiche. A gauche, nous trouvons toute les procédures propres à Gimp, l'API de Gimp que nous avons déjà évoqué. A droite, des informations relatives a chaque procédure, comme son nom, sa description, les entrées, les sorties (absentes ici), l'auteur, le copyright, la date. C'est par l'utilisation des procédures que nous avons accès à toutes les fonctionnalités de Gimp.

Dans la liste de gauche, chercher (tout en bas) notre script-fu sous le nom script-fu-layers-new-layer-quick.

Notez la description, qui vous indique l'accès du script dans le menu.  L'aide reprend ce que l'on a indiqué à la ligne 120. Auteur, date et copyright correspond aux lignes 130, 140 et 150.

Comme vous avez pu le constater la liste des instructions API est assez conséquente (+ de 800 procédures). Aussi, disposez-vous de 2 outils de recherche par nom ou par description. Tapez quick dans Rechercher, et cliquez sur rechercher par nom. Désormais, sont listés les procédures comportant le mot quick, dont notre script.

Notez que l'API de Gimp a évolué entre Gimp 1.2 et Gimp 2.0. Ainsi des script fonctionnant sous Gimp 1.2 peuvent ne plus fonctionner sous Gimp 2.0.

 

L'API (Application Programming interface) liste de nombreuses fonctions ou procédures interne à Gimp. Cela signifie que lorsque vous appelez une procédure, du code est déclenché, et cela produit tel ou tel chose. Ce code est invisible, vous ne manipulez que les fonctions et les paramètres de ces fonctions.
 

 

Modification du nom identificateur

Nous allons modifier la ligne 100.

Remplacez,

(script-fu-register "script-fu-layers-new-layer-quick"

par

(script-fu-register "script-fu-nouveau-calque-rapide"

puis remplacez la ligne 10,

(define (script-fu-layers-new-layer-quick image drawable)

par

define (script-fu-nouveau-calque-rapide image drawable)

Enregistrez le fichier, puis faites <toolbox> Exts > Script-fu > Rafraîchir les scripts.

Retournez dans la base de procédure.

Le script n'est plus référencé comme avant, son nom est maintenantscript-fu-nouveau-calque-rapide.

A noter que le nom n'a pas nécessairement l'obligation de commencer par script-fu ; cela dit, ça permet de regrouper tous les scripts au même endroit dans la base de procédure, ce qui est pratique.

Bon vous n'avez peut-être pas tout saisis en détail, et demeure sans doute de nombreuses interrogations. L'important est que maintenant vous savez l'explorer la base de procédure, enregistrer un script, modifier son nom.

 

 

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.