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. Start with 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

In GIMP, select FiltersDevelopmentScript-FuScript-Fu Console from the main menu. This will start up the Script-Fu Console window, which allows us to work interactively in Scheme.

3.1.4. La fenêtre Console de Script-Fu

At the bottom of this window is a text entry field for commands. Here, we can test out simple Scheme commands interactively. Let's start out easy, and add some numbers:

(+ 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.

The « + » function can take more arguments, so we can add more than one number:

(+ 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.