No necessiteu parar i respirar? No? Bé, doncs llavors procedirem amb la quarta lliçó, el vostre primer codi de Script-Fu.
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.
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.
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))
Ací hem definit una nova funció anomenada script-fu-text-box
que pren quatre paràmetres que més tard correspondran a algun text, un tipus de lletra, la mida de la lletra i el color del text. La funció actualment està buida i per tant no fa res. Fins ara tot bé — res de nou, res d'elegant.
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.
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>/File/Create/Text")
Si deseu aquestes funcions en un fitxer de text amb un sufix .scm
al directori d'scripts, reinicieu el GIMP. El nou script apareixerà com a → → → .
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 (
→ ), veureu que l'script apareix en la base de dades.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ó.
Els tipus d'imatges amb què treballa l'script. Podrien ser: RGB, RGBA, GRAY, GRAYA, INDEXED, INDEXEDA. O no podrien ser cap d'elles, en aquest cas, s'està creant una imatge i no cal establir-ne el tipus.
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 |
---|---|---|
|
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 |
|
Si el vostre script opera sobre una imatge oberta, hauria de ser el segon paràmetre després del paràmetre |
17 |
|
Accepta nombres i cadenes de caràcters. Tingueu en compte que les cometes han d'estar precedides pel caràcter d'escapament, per la qual cosa és millor utilitzar |
42 |
|
Accepta cadenes de caràcters. |
«Un text» |
|
Indica que un color es requereix en aquest paràmetre. |
'(0 102 255) |
|
Es mostra una casella de selecció, per a obtenir un valor booleà. |
TRUE o FALSE (Vertader o Fals) |
Nota | |
---|---|
Al costat dels tipus de paràmetres anteriors n'hi ha d'altres en mode interactiu, cadascun d'ells crea un giny en el control del diàleg. Trobareu una llista d'aquests paràmetres amb descripcions i exemples en l'script de prova |
Tipus de paràmetre |
Descripció |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
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
|
||||||||||||||||
|
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
|
||||||||||||||||
|
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
|
||||||||||||||||
|
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). |
||||||||||||||||
|
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ó». |
||||||||||||||||
|
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». |
||||||||||||||||
|
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». |
||||||||||||||||
|
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. |
||||||||||||||||
|
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. |
||||||||||||||||
|
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ó. |
||||||||||||||||
|
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. |
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
i .Per a l'script actual que crea una imatge nova escollim un submenú de script-fu-menu-register
. Així hem registrat el nostre script de caixa de text ací: → → → .
Si us adoneu, el submenú Text en el menú
→ no hi era quan vam començar el —GIMP que crea automàticament qualsevol menú que no existeixi.