### 3.4. El vostre primer codi de Script-Fu

Do you not need to stop and catch your breath? No? Well then, let's proceed with your fourth lesson your first Script-Fu Script.

#### 3.4.1. Creació d'un script: un quadre de text

Una de les operacions més comunes que es realitza amb el GIMP és crear un quadre amb algun text dins per a una pàgina web, o un logotip. Però quan es comença, mai no se sap la mida adequada de la imatge, ni l'espai que ocuparà el text amb la mida de la lletra.

Aquest problema pot ser resolt i automatitzat amb l'Script-Fu.

Crearem un script anomenat «Text Box», que crearà una imatge amb la mida correcta, ajustada a una línia de text que l'usuari ha introduït. També deixarem a l'usuari triar la lletra tipogràfica, la seva mida i el color del text.

#### 3.4.2. Editeu i deseu els vostres scripts

Fins ara hem estat treballant a la consola Script-Fu. Ara, però, passarem a editar fitxers script. Els fitxers script han de ser fitxers de text senzill que podeu editar en un editor de text o codi. El nom que poseu no és tan important, tret de poder reconèixer l'script. Hauríeu de donar al fitxer script l'extensió «.scm».

On col·loqueu els scripts és una qüestió de preferència. A les preferències de carpetes del GIMP podeu veure en quines carpetes el GIMP cerca els scripts. També és possible afegir una carpeta nova allà. La carpeta on el GIMP emmagatzema els seus propis scripts normalment no és la millor opció per als scripts, però per a la resta no dubteu a triar el que més us convingui.

#### 3.4.3. Les necessitats essencials

Cada script de Script-Fu defineix almenys una funció, que és la funció principal de l'script. És on fa la feina.

Cada script ha de registrar-se també en la base de dades de procediments, de manera que s'hi pugui accedir amb el GIMP .

Es defineix primer la funció principal:

            (define (script-fu-text-box inText inFont inFontSize inTextColor))

Here, we've defined a new function called `script-fu-text-box` that takes four parameters, which will later correspond to some text, a font, the font size, and the text's color. The function is currently empty and thus does nothing. So far, so good nothing new, nothing fancy.

#### 3.4.4. Convencions de nomenclatura

Les Convencions de nomenclatura de l'Scheme prefereixen minúscules amb guions i s'han respectat dins el nom de la funció. No obstant això, es parteix de la convenció amb els paràmetres. Es volen noms més descriptius pels paràmetres i variables, i s'hi afegeix el prefix «in» als paràmetres, així es pot veure ràpidament quins valors entren en l'script, en comptes dels que es creen en ell. S'utilitza el prefix «the» per a les variables definides en l'script.

És la convenció del GIMP per a anomenar les funcions del vostre script `script-fu-abc`, perquè així apareixeran en la base de dades de procediments, totes elles es mostraran sota l'Script-Fu quan s'estiguin llistant les funcions. Això també ajuda a distingir-les dels connectors.

#### 3.4.5. Registre de la funció

Ara, registrem la funció amb el GIMP. Això es fa cridant la funció `script-fu-register`. Quan el GIMP llegeixi un script, executarà aquesta funció, que registrarà l'script en la base de dades de procediments. Podeu situar aquesta funció on vulgueu dins el vostre script, però normalment se situa al final, després de la resta de les línies del codi.

Aquest és el llistat de registre d'aquesta funció (s'explicaran tots aquests paràmetres de seguida):

      (script-fu-register
        "script-fu-text-box"                        ;function name
        "Text Box"                                  ;menu label
        "Creates a simple text box, sized to fit\
          around the user's choice of text,\
          font, font size, and color."              ;description
        "Michael Terry"                             ;author
        "copyright 1997, Michael Terry;\
          2009, the GIMP Documentation Team"        ;copyright notice
        "October 27, 1997"                          ;date created
        ""                                      ;image type that the script works on
        SF-STRING      "Text"          "Text Box"   ;a string variable
        SF-FONT        "Font"          "Charter"    ;a font variable
        SF-ADJUSTMENT  "Font size"     '(50 1 1000 1 10 0 1)
                                                    ;a spin-button
        SF-COLOR       "Color"         '(0 0 0)     ;color variable
      )
      (script-fu-menu-register "script-fu-text-box" "<Image>/Filters/Tutorial")

Save these functions in a text file with a `.scm` suffix in a subdirectory of your script directory, with the same name as your script file, then restart GIMP. The new script will appear as Filters → Tutorial → Text Box.

Si crideu aquest nou script, no farà res, per descomptat, però podeu veure les anotacions que es van fer quan es va registrar l'script (més informació del que es va fer, es mostrarà després).

Finalment, si obriu el Navegador de procediments (Ajuda → Navegador de procediments), veureu que l'script apareix en la base de dades.

#### 3.4.6. Passos per a registrar l'script

Per a registrar l'script en el GIMP, es cridarà la funció `script-fu-register`, s'ompliran els set paràmetres requerits i s'hi afegiran els nostres paràmetres, junt amb una descripció i els valors per defecte de cada paràmetre.

Els paràmetres requerits

- El nom de la funció que es defineix. Això és la crida de la funció quan es crida el nostre script (el punt d'entrada a l'script). És important perquè es poden definir funcions addicionals sota el mateix fitxer, i el GIMP necessita saber quines d'aquestes funcions crida. En aquest exemple, només es defineix una funció, «text-box», que s'ha registrat.

- L'etiqueta del menú és el nom que es mostrarà al menú. Per especificar la ubicació, vegeu Secció 3.4.9, «Registre la ubicació del menú».

- Una descripció del vostre script, que es mostrarà en el navegador de procediments.

- El vostre nom (l'autor de l'script).

- Informació dels Drets d'autor.

- La data en què es va fer l'script, o la data de la darrera revisió.

- The types of images the script works on. This may be any of the following: RGB, RGBA, GRAY, GRAYA, INDEXED, INDEXEDA. Or it may be none at all in our case, we're creating an image, and thus don't need to define the type of image on which we work.

#### 3.4.7. Registre dels paràmetres de l'script

Una vegada que s'han llistat els paràmetres requerits, cal precisar quins són els que corresponen amb les necessitats del nostre script. En llistar aquests paràmetres, es donen indicacions del tipus que són; això és pel diàleg que apareix quan l'usuari selecciona l'script. També es poden proporcionar valors per defecte.

Aquesta secció del procés de registre té el següent format:

Tipus de paràmetre | Descripció | Exemple
--- | --- | ---
`SF-IMAGE` | Si el vostre script opera en una imatge, hauria de ser el primer paràmetre després dels paràmetres requerits. El GIMP transmetrà una referència a la imatge en aquest paràmetre. | 3
`SF-DRAWABLE` | Si el vostre script opera sobre una imatge oberta, hauria de ser el segon paràmetre després del paràmetre `SF-IMAGE`. Es refereix a la capa activa. El GIMP transmetrà una referència a la capa activa en aquest paràmetre. | 17
`SF-STRING` | Accepta cadenes de caràcters. | «Un text»
`SF-COLOR` | Indica que un color es requereix en aquest paràmetre. | '(0 102 255)
`SF-TOGGLE` | Es mostra una casella de selecció, per a obtenir un valor booleà. | TRUE o FALSE (Vertader o Fals)

#### 3.4.8. Els paràmetres de l'API de Script-Fu[5]

| Nota
Beside the above parameter types there are more types for the interactive mode, each of them will create a widget in the control dialog. You will find a list of these parameters with descriptions and examples in the test script `plug-ins/script-fu/scripts/test-sphere-v3.scm` shipped with the GIMP source code.

Tipus de paràmetre | Descripció
--- | ---
`SF-ADJUSTMENT` | Crea un giny d'ajustament en el diàleg. SF-ADJUSTMENT "label" '(value lower upper step_inc page_inc digits type) Llista d'arguments del giny
Element | Descripció
--- | ---
"label" | Text imprès abans del giny.
valor | Valor imprès al principi.
lower / upper | Els valors mini / maxi (rang d'elecció).
step_inc | Incrementa/redueix el valor.
page_inc | Incrementa/redueix el valor utilitzant les tecles Pàgina.
dígits | Dígits després del punt (part decimal).
tipus | Un de: SF-SLIDER o 0, SF-SPINNER o 1
`SF-COLOR` | Crea un botó de color en el diàleg. SF-COLOR "label" '(red green blue) o SF-COLOR "label" "color" Llista d'arguments del giny
Element | Descripció
--- | ---
"label" | Text imprès abans del giny.
(vermell verd blau) | Llista dels tres valors per als components vermell, verd i blau.
"color" | Nom del color en notació CSS.
`SF-FONT` | Crea un giny per a la selecció de la lletra tipogràfica en el diàleg. Retorna un nom de la lletra com una cadena. Hi ha dos procediments nous del gimp-text per a facilitar l'ús d'aquest paràmetre de tornada: (gimp-text-fontname image drawable x-pos y-pos text border antialias size unit font) (gimp-text-get-extents-fontname text size unit font) on el paràmetre «font» és el nom de la lletra tipogràfica que s'obté. La mida especificada en el «fontname» s'ignora. S'utilitza només al gestor de la lletra. Us preguntarà que doneu un valor útil (24 píxels és una opció correcta). SF-FONT "label" "fontname" Llista d'arguments del giny
Element | Descripció
--- | ---
"label" | Text imprès abans del giny.
"nom de la tipografia" | Nom de la lletra tipogràfica per defecte.
`SF-BRUSH` | Crearà un giny en el diàleg de control. El giny consisteix en una zona de previsualització (que quan es prem produeix una previsualització emergent) i un botó amb l'etiqueta «...». El botó obre un diàleg on es poden seleccionar els pinzells i modificar-ne cadascuna de les característiques. SF-BRUSH "Brush" '("Cercle (03)" 100 44 0) En aquest cas, el diàleg del pinzell s'obrirà amb el pinzell per defecte Cercle (03) opacitat 100, espaiat 44 i en mode normal (valor 0). Si aquesta selecció no canvia el valor passat a la funció com a paràmetre, serà '("Cercle (03)" 100 44 0).
`SF-PATTERN` | Crearà un giny en el diàleg de control. El giny consisteix en una zona de previsualització (que quan es prem produeix una previsualització emergent) i un botó amb l'etiqueta «...». El botó obre un diàleg on es poden seleccionar els patrons. SF-PATTERN "Pattern" "Maple Leaves" El valor retornat quan es crida l'script és una cadena que conté el nom del patró. Si la selecció anterior no s'ha modificat, la cadena contindrà «Fulles d'auró».
`SF-GRADIENT` | Crearà un giny en el diàleg de control. El giny consisteix en un botó que conté una previsualització del degradat seleccionat. Si es prem el botó, apareixerà un diàleg de selecció del degradat. SF-GRADIENT "Gradient" "Deep Sea" El valor retornat quan es crida l'script és una cadena que conté el nom del degradat. Si la selecció anterior no s'ha modificat, la cadena contindrà «Mar profund».
`SF-PALETTE` | Crearà un giny en el diàleg de control. El giny consisteix en un botó que conté el nom de la paleta seleccionada. Si premeu el botó, apareixerà un diàleg de selecció de la paleta. SF-PALETTE "Palette" "Named Colors" El valor retornat quan es crida l'script és una cadena que conté el nom del patró. Si la selecció anterior no s'ha modificat, la cadena contindrà «Colors amb nom».
`SF-FILENAME` | Crearà un giny en el diàleg de control. El giny consisteix en un botó que conté el nom d'un fitxer. Si premeu el botó, apareixerà un diàleg de selecció del fitxer. SF-FILENAME "label" (string-append "" gimp-data-directory "/scripts/beavis.jpg") El valor retornat quan es crida l'script és una cadena que conté el nom del fitxer.
`SF-DIRNAME` | Només és útil en mode interactiu. Molt semblant a SF-FILENAME, però el giny creat permet triar un directori en lloc d'un fitxer. SF-DIRNAME "etiqueta" "/var/tmp/images" El valor retornat quan es crida l'script és una cadena que conté el nom del directori.
`SF-OPTION` | Crearà un giny en el diàleg del control. El giny és un quadre combinat (combo-box) que mostra les possibles opcions. La primera opció és l'opció per defecte. SF-OPTION "label" '("option1" "option2") El valor retornat quan es crida l'script és el nombre de l'opció triada, 0 correspon a la primera opció.
`SF-ENUM` | Crearà un giny en el diàleg de control. El giny és un quadre combinat que mostra tots els valors possibles per un tipus d'enumeració donat. Ha de ser el nom d'enumeració registrada, sense el prefix del «GIMP». El segon paràmetre especifica el valor per defecte. SF-ENUM "Interpolació" '("InterpolationType" "lineal") El valor retornat quan es crida l'script correspon al valor enumerat triat.

#### 3.4.9. Registre la ubicació del menú

Un cop hàgim registrat el nostre script, hem de dir-li al GIMP on s'ha de trobar en el menú.

La millor ubicació del menú de l'script depèn de la seva funció. La majoria dels scripts es troben als menús dels Filtres i Colors.

For the current script, which creates a new image, we choose a submenu of Filters → Tutorial. This is what the line with the `script-fu-menu-register` function does. Thus, we registered our Text Box script here: Filters → Tutorial → Text Box.

Any submenu that you specify in your script that doesn't exist yet will be automatically created by GIMP.

[5] Aquesta secció no és part del programa d'aprenentatge original.

3.3. Llistes, llistes i més llistes |  | 3.5. Afegeix funcionalitats addicionals

Report a bug in GIMP Informa d'un error de documentació