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 09 avr 2008
consultée 8771 fois
Apprendre  ›  Écrire un script-fu  ›  Le script-fu-register

 

Scheme : Le script-fu-register

Ce document est sous un contrat Creative Commons.

 

Introduction

Nous allons voir le script-fu-register, la procédure servant a identifier notre script dans Gimp, permettant à celle-ci d'être appelé de façon interactive ou par d'autres scripts (en mode interactif ou non).

L'étude de 6 points particuliers nous permettrons de faire un tout assez complet (mais probablement pas exhaustif) de ce sujet.

script-fu-register est une procédure

Le Scheme exige une syntaxe avec des ouverture et fermeture de parenthèses emboîtées. Cette procédure n'échappe pas à la règle.

Identifier la fonction

Dans un second temps, il convient de spécifier le nom de votre fonction tel que vous l'avez déclarée ; la syntaxe exige que cela soit fait entre guillemets.

Sa position dans le menu

Vient ensuite une ligne permettant de définir le chemin d'accès dans le menu de Gimp ; la syntaxe exige que cela soit fait entre guillemets.

En premier, vous devez indiquer depuis qu'elle fenêtre de Gimp le script pourra être appelé. Il y a 4 possibilités :

<Image> 

C'est la fenêtre image de Gimp, le plan de travail. Cela convient bien aux scripts travaillant sur des images déjà existante.

<Toolbox>

C'est la fenêtre d'outils de Gimp. Cela convient bien aux scripts qui n'utiliseront aucunes images existantes et en créeront une nouvelle.

<Load> et <Save> 

Vous avez la possibilité d'écrire des scripts de lecture ou de sauvegarde d'image(s). Par exemple pour des traitements par lots.

Ensuite vous spécifiez les différents niveaux de menu. Vous êtes totalement libre, c'est à dire que vous pouvez indiquer un ou des menus déjà existant, ou créer un ou des menus personnels inexistant. (A noter que les menus existant doivent être indiqués en anglais : le menu Calque est en fait Layer). La syntaxe exige que chaque niveaux soit précédé d'un slash (/).

Commentaires, auteur, copyright, date

Les 4 lignes suivante sont des commentaires qui apparaîtront à la fois dans la base de procédure (<toolbox> Exts > Script-fu > Explorer la base de procédure), et dans la fenêtre à propos du dialogue du script (si il y en a un !) ; la syntaxe exige que cela soit fait entre guillemets.

Types d'images supportés par la fonction

Ce paramètres permet de filtrer l'utilisation du script suivant le mode de l'image. Ainsi avec des images utilisant un mode non supporté, le script ne pourra être lancé.

Les 3 modes de base sont : RVB, niveaux de gris et Couleurs indexées :

          RVB         Niveaux de Gris Couleurs Indexées
Sans le canal Alpha "RGB" "GRAY" "INDEXED"
Avec le canal Alpha "RGBA" "GRAYA" "INDEXEDA"
Sans ou avec le canal Alpha "RGB*" "GRAY*" "INDEXED*"
Tous les modes "RGB* GRAY* INDEXED*" ou ""

Il est tout à fait possible de combiner ces paramètres. Divers exemples :

"RGB GRAYA"

"RGB* GRAY*"

"RGBA INDEXEDA"

"RGB* GRAY INDEXEDA"

Les paramètres

6.1 les variables des paramètres

Chaque paramètres déclarés dans le script-fu-register doit être lié a une variable dans la déclaration de la fonction correspondante. La première variable assignée au premier paramètre, la seconde au second paramètre, la troisième au troisième paramètre, ainsi de suite...

Voici un exemple (notez que le code de la fonction n'y apparaît pas) :

Le nom de ces variables est a votre discrétion, mais attribuez un nom unique pour chaque.

6.2 Les paramètres

6.2.1 Les paramètres obligatoires

Si votre script travaille avec une image existante vous devrez impérativement utiliser 2 paramètres obligatoires, à écrire en premier paramètre.

SF-IMAGE "Image" 0

Ce paramètre permet d'identifier l'image active dans Gimp. Ainsi cette image sera celle que l'utilisateur voudra utiliser.

SF-DRAWABLE "Drawable" 0

Ce paramètre permet d'identifier le calque actif dans Gimp. Ainsi ce calque sera celui que l'utilisateur voudra utiliser. Ce paramètre est obligatoires, même si vous ne l'utilisez pas concrètement dans votre script.

 

6.2.2 Les paramètres optionnels

De nombreux types de paramètres peuvent être utilisés, offrant un vaste panel d'objets (tirette, bouton, listbox...). A chaque fois vous spécifiez une chaîne décrivant le paramètres et vous lui octroyez une valeur par défaut.

 

6.2.2.1 la boîte de valeur numérique simple

La valeur est numérique ou alphanumérique. syntaxe :

SF-VALUE "Description" "[valeur]"

SF-VALUE "Nom du parametre" "100"

Si vous désirez spécifier des guillemets dans les chaînes, il vous faudra les faire précéder d'un anti-slash (\) comme en JavaScript.

Par exemple : SF-VALUE "Description" "\"valeur\""

 

6.2.2.2 la boîte de valeur numérique complexe

La valeur est numérique. syntaxe :

SF-ADJUSTMENT "Description"
'([valeur par défaut]
[mini]
[maxi]
[incrément]
[incrément rapide]
[nbre de décimal après la virgule, 0=entier]
[mode, SF-SLIDER (0), SF-SPINNER (1)]
)

SF-ADJUSTMENT "Nom du parametre"
'(10 1 30 1 10 0 1)
SF-ADJUSTMENT "Nom du parametre"
'(10 1 30 0.1 10 1 0)

 

6.2.2.3 la textbox

La valeur est alphanumérique. syntaxe :

SF-STRING "Description" "[chaîne]

SF-STRING "Nom du parametre" "The Gimp"

Si vous désirez spécifier des guillemets dans les chaînes, il vous faudra les faire précéder d'un anti-slash (\) comme en JavaScript.

Par exemple : SF-STRING "Description" "\"The Gimp\""

 

6.2.2.4 la checkbox

Une valeur de type binaire. syntaxe :

SF-TOGGLE "Description" Flag

SF-TOGGLE "Nom du parametre" TRUE

 

6.2.2.5 la listbox

Une valeur a choisir parmi d'autres. syntaxe :

SF-OPTION "Description" '("[valeur]" "[valeur]" ... )

SF-OPTION "Nom du parametre"
'("texte 1" "texte 2" "etc...")

 

6.2.2.6 la colorbox

Définie une couleur. syntaxe :

SF-COLOR "Description" '([liste])

SF-COLOR "Nom du parametre" '(63 252 0)

 

6.2.2.7 la boite de fonte

Définie une fonte. syntaxe :

SF-FONT "Description" "[fonte]"

SF-FONT "Nom du parametre" "Arial"

 

6.2.2.8 la boite de brosse

Définie une brosse. syntaxe :

SF-BRUSH "Description" '("[brosse]" [opacité] [espacement] [mode de peinture])

SF-BRUSH "Nom du parametre"
'("Circle (03)" 1.0 44 0)

 

6.2.2.9 la boite de pattern

Définie un motif. syntaxe :

SF-PATTERN "Description" "[motif]"

SF-PATTERN "Nom du parametre"
"Parque #1"

 

6.2.2.10 la boite de gradient

Définie un dégradé. syntaxe :

SF-GRADIENT "Description" "[dégradé]"

SF-GRADIENT "Nom du parametre"
"German flag smooth"

 

6.2.2.11 la boite de fichiers

Définie un fichier. syntaxe :

SF-FILENAME "Description" "[chemin/fichier]"

Sous une forme absolue ou relative, exemple :

SF-FILENAME "Nom du parametre"
(string-append "" gimp-data-dir "/scripts/images/texture.jpg")

gimp-data-dir permet de spécifier le chemin des données de Gimp, suivi d'un chemin relatif. string-append permet une concaténation de chaîne, vide ici, mais indispensable pour ne pas générer  une erreur.

A noter les dossiers séparés par un slash (forme linux) et non pas un anti-slash.

 

6.2.2.12 la boite de chemin de fichier

Définie un chemin de fichier. syntaxe :

SF-DIRNAME "Description" "[chemin]"

SF-DIRNAME "Nom du parametre" "c:/blender"

A noter les dossiers séparés par un slash (forme linux) et non pas un anti-slash.

 

6.2.2.13 la boite d'images

Indépendamment de l'image active obtenu par la même option, vous pouvez l'utiliser afin d'obtenir une liste de toutes les sessions image ouverte.

SF-IMAGE "Image" 0

SF-IMAGE "Nom du parametre" 0

 

6.2.2.14 la boite de calques

Indépendamment du calque actif obtenu par la même option, vous pouvez l'utiliser afin d'obtenir une liste de tous les calques d'une image.

SF-LAYER "Description" 0

 

6.2.2.15 la boite de calques

Une liste de tous les canaux d'une image.

SF-CHANNEL "Description" 0

 

6.2.2.16 la boite de drawable

Une liste des calques et des canaux d'une image.

SF-DRAWABLE "Description" 0

Recommandations

Caractères indésirables

Certains caractères provoque une erreur "invalid UTF-8 strings" s'ils sont utilisés dans les chaînes, tel le é, è, ç, ù, à, ^ (tous les caractères avec l'accent circonflexe), ¨ (tous les caractères avec le tréma), §, £, ¤.

 

Méfiez-vous des guillemets, et choisissez les options adaptées à vos besoin

Ainsi pour definir un mode de calque au moyen d'un

SF-VALUE "Mode de calque" "NORMAL"

en utilisant une variable mode par exemple. Nous écrirons :

(set! (new-layer (car (gimp-layer-new img width height RGBA-IMAGE "Mon calque" 100 mode))))

En revanche, pour définir le nom du calque par le même moyen nous aurions une erreur. Ainsi la forme accompagné d'une variable name :

SF-VALUE "Nom du calque" "Mon calque"

puis,

(set! (new-layer (car (gimp-layer-new img width height RGBA-IMAGE name 100 ORMAL))))

serait impropre.

Vous noterez que le nom doit être dans la procédure gimp-layer-new spécifiée entre guillemets. Aussi vous faudra-t-il utiliser la forme :

SF-VALUE "Nom du calque" "\"Mon calque\""

qui serait juste.

Petit inconvénient qui pourrait-être évité en utilisant une autre option :

SF-STRING "Nom du calque" "Mon calque"

 

utilisation de l'underscore

Vous pouvez utiliser un _ (underscore) dans 2 conditions différentes qu'il faut bien distinguer :

Par exemple essayez la forme suivante,

SF-VALUE _"Seed" "10"

Bien que le texte "Seed" soit en anglais, le _ indique à Gimp de chercher à traduire ce texte. Il consulte son catalogue de mot, et s'il le trouve, il traduit en fonction de la langue utilisez sur votre ordinateur. En français cela donnera "Graine". Attention, ne vous attendez pas à un traducteur bi-lingue, vous seriez déçu !

Par exemple essayez cette autre forme,

"<Image>/Script-Fu/_Exemple"

Cette fois, il ne s'agit pas de traduction. Le texte affiché dans le menu est non pas Exemple mais Exemple. Le soulignement du E indique qu'en tapant la touche clavier <b>e</b>, vous feriez apparaitre le dialogue du script, de même que si vous aviez cliqué sur lui avec votre souris.

Vous pouvez mettre ce _ où vous le désirez :

"<Image>/Script-Fu/Exem_ple"

Enfin, minuscule ou majuscule, c'est du pareil au même.

Notons que le focus joue des tours. Il ne suffit pas de faire apparaitre le menu pour que le raccourci fonctionne. il faut aussi que le curseur de la souris soit à l'intérieur du menu, sinon vous pouvez tapez sur les touches jusqu'a la saint glinglin, le dialogue ne s'affichera pas !

 

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.