3. Didacticiel pour Script-Fu

Dans ce cours, nous commencerons par une introduction aux notions fondamentales indispensables à l’utilisation du langage de programmation Scheme. Puis nous programmerons un script-fu que vous pourrez ajouter à votre collection. Ce script demande un texte à l’utilisateur et l’affiche dans une nouvelle image dont la taille est parfaitement adaptée au texte. Ensuite, nous améliorerons ce script, en ajoutant un cadre autour du texte. Nous terminerons sur la façon d’augmenter vos connaissances sur les Script-Fus.

[Note] Note

This section was adapted from a tutorial written for the GIMP 1 User Manual by Mike Terry.

3.1. Faisons connaissance avec Scheme

3.1.1. Premières notions de Scheme

Scheme is a dialect of the Lisp family of programming languages. GIMP uses TinyScheme, which is a lightweight interpreter of a subset of the so-called R5RS standard.

Règle n°1 :

Chaque déclaration dans Scheme est entourée de parenthèses ().

Règle n°2 :

La fonction nom/opérateur est toujours le premier terme entre les parenthèses, et le reste constitue les paramètres pour la fonction.

Néanmoins, tout ce qui est entre les parenthèses n’est pas toujours une fonction – il peut s’agir des termes d’une liste – mais nous y reviendrons plus tard. Cette notation est qualifiée de notation préfixée, parce que la fonction vient avant tout autre chose. Si vous êtes familiarisé avec la notation postfixée, ou si vous possédez une calculatrice à notation Polonaise Inverse (comme la plupart des calculatrices HP), vous n’aurez pas de difficultés à vous adapter à la formulation des expressions dans Scheme.

Règle n°3 :

Les opérateurs mathématiques sont aussi considérés comme des fonctions et viennent donc en premier quand vous écrivez des formules mathématiques.

Ceci résulte logiquement de la notation préfixée.

3.1.2. Exemples de notations Préfixée, Infixée, et Postfixée

Voici quelques exemples rapides pour illustrer les différences entre les notations préfixée, infixée, et postfixée Nous allons ajouter 1 et 23 :

  • Notation préfixée : + 1 23 (c’est ce que veut Sheme)

  • Notation infixée : 1 + 23 (c’est la façon « naturelle » d’écrire)

  • Notation postfixée : 1 23 + (utilisée par les calculatrices HP)

3.1.3. Pratiquons Scheme

Appliquons maintenant ce que nous venons d’apprendre. Démarrez GIMP, si ce n’est pas déjà fait, et allez dans FiltresScript-FuConsole. Ceci lancera la fenêtre Console de Script-Fu, qui va nous permettre de travailler interactivement avec Scheme :

3.1.4. La fenêtre Console de Script-Fu

En bas de cette fenêtre se trouve un champ nommé Commande courante. Là, vous pouvez tester interactivement les commandes Scheme. Commençons par quelque chose de facile, l’addition de quelques nombres :

(+ 3 5)

En tapant cette séquence et en appuyant sur Entrée vous obtenez le résultat attendu : 8, dans le panneau central.

Figure 13.1. Utilisation de la console.

Utilisation de la console.

Maintenant, si nous voulons ajouter plus de deux nombres, pas de problème ; la fonction « + » accepte plus de deux arguments :

(+ 3 5 6)

Et, comme prévu, vous obtenez 14.

Bon, nous avons tapé une déclaration Scheme, et elle a été exécutée immédiatement dans la fenêtre Console pour Script-Fu. Très bien. Mais certaines précautions sont à prendre…

3.1.5. Faire attention aux parenthèses supplémentaires

Si vous êtes comme moi, vous avez certainement l’habitude d’utiliser des parenthèses supplémentaires pour rendre plus claires vos formules mathématiques. Dans Scheme, vous devez être prudent et ne pas utiliser ces parenthèses de façon incorrecte. Si, dans l’addition suivante, nous voulons par exemple, ajouter 3 au résultat de l’addition de 5 et 6 puis y ajouter 7 :

3 + (5 + 6) + 7 = :

Sachant que l’opérateur « + » accepte une liste de nombres à additionner, vous pourriez être tenté d’écrire :

(+ 3 (5 6) 7)

et ce serait une erreur. Rappelez-vous, chaque déclaration dans Scheme commence et finit par des parenthèses. Scheme considère que dans tout ce qui est entre deux parenthèses, il y a toujours une déclaration. Ici, il cherchera une fonction appelée 5… qui n’existe pas.

Il faut donc écrire :

(+ 3 (+ 5 6) 7)

3.1.6. Assurez-vous que les espacements sont corrects

Si vous êtes familier avec d’autres langages de programmation tels que C/C++, Perl ou Java, vous savez que vous n’avez pas besoin de mettre un espace avant ou après un opérateur mathématique :

        3+5, 3 +5, 3+ 5
      

Toutes ces formulations sont acceptées par C/C++, Java ou Perl. Mais ce n’est pas le cas de Sheme qui nécessite obligatoirement un espace après toute fonction ou tout opérateur.

Entraînez-vous avec de simples opérations mathématiques dans la Console pour Script-Fu jusqu’à ce que vous soyez parfaitement à l’aise avec ces premières notions.