Scheme è il linguaggio di scripting per Gimp.
Prime regole sintattiche:
Ad esempio per richiedere la somma del numero 1 con il numero 23 si scrive
(+ 1 23)
Per preparare un semplice script in GIMP, scegliere
Nella parte inferiore della finestra c'è un'area di testo denominata Comando corrente. In quest'area si possono provare interattivamente semplici comandi Scheme. Per iniziare si sommino alcuni numeri:
(+ 3 5)
Dopo aver premuto Invio si otterrà la risposta esatta al centro della finestra. Anche l'istruzione seguente funziona correttamente:
(+ 3 5 6)
Infatti al centro della finestra si ottiene la risposta corretta: 14. L'interprete del linguaggio Scheme esegue immediatamente l'istruzione.
Nelle espressioni matematiche le parentesi ricorrono frequentemente, quindi si ricordi che ogni volta che si apre una parentesi tonda bisogna specificare per primo l'operatore e poi gli operandi.
In Scheme è obbligatorio far seguire da uno spazio un operatore matematico o un nome di funzione.
Per dichiarare le variabili si usa il costrutto let*. Ad esempio per dichiarare due variabili, a e b, inizializzarle rispettivamente a 1 e 2 e poi sommarle si scrive:
(let* ( (a 1) (b 2) ) (+ a b) )
Se si lavora nella finestra della console di Script-fu si deve immettere una intera espressione su un unica linea, quindi la stessa dichiarazione di variabili, seguita dalla somma, deve essere scritta:
(let* ( (a 1) (b 2) ) (+ a b) )
Si noti che l'addizione (+ a b) è stata scritta all'interno delle parentesi dell'espressione let* e non dopo di essa.
Infatti l'istruzione let* definisce un'area nello script in cui le variabili dichiarate sono utilizzabili; se si digita l'istruzione (+ a b) dopo l'istruzione (let* ...) si ottiene un errore poichè le variabili dichiarate sono valide unicamente nel contesto dell'istruzione let*, sono cioè variabili locali.
La sintassi dell'istruzione let* è:
(let* ( variabili ) espressioni )
Le variabili sono dichiarate all'interno delle parentesi, per esempio (a 2).
In una dichiarazione si assegna il valore iniziale alla variabile, infatti, dopo che viene creata le si può solo assegnare il valore iniziale. Nel corso del programma alla variabile può essere assegnato un nuovo valore con l'istruzione set!:
(let* ( (numero 10) ) (set! numero (+ numero numero)) )
Le funzioni si dichiarano con la seguente sintassi:
(define ( nome elenco parametri ) espressioni )
dove nome è il nome assegnato alla funzione, elenco parametri è una lista di parametri separati da spazi e espressioni è una serie di espressioni che la funzione esegue quando viene chiamata. Ad esempio:
(define (AddXY inX inY) (+ inX inY) )
AddXY è il nome della funzione e inX e inY sono le variabili. Questa funzione prende i suoi due parametri e li somma.
Si osservi che in un linguaggio di script come Scheme non occorre dichiarare il tipo dei parametri. Inoltre il risultato ritornato dalla funzione viene fornito dall'ultima istruzione. Si immetta la funzione nella console e poi si provi qualcosa del tipo:
(AddXY (AddXY 5 6) 4)
Una variabile contiene un valore semplice: un intero, un carattere, ecc. Ad esempio l'istruzione:
(let* ( (x 8) ) x)
letta come funzione, dichiara una variabile x, le assegna il valore iniziale 8 e infine restituisce il valore contenuto in x, ciò significa che l'interprete sostituisce il risultato al posto della funzione (in altri termini lo stampa).
Una variabile può anche riferirsi ad un elenco di valori (è il caso degli array). Per assegnare alla variabile x la lista di valori 1, 3, 5 si digiti:
(let* ( (x '(1 3 5))) x)
Si provi a digitare entrambe le istruzioni nella console Script-fu e si osservino le risposte. Quando si esegue la prima istruzione si ottiene il risultato: 8. Quando si esegue la seconda istruzione si ottiene il risultato: (1 3 5).
Si noti che non ci sono virgole nè nella dichiarazione e inizializzazione della lista, nè nel risultato stampato.
La sintassi per definire una lista è:
'(a b c)
dove a, b, e c sono variabili. Si usa l'apostrofo (') per indicare che ciò che segue nelle parentesi è una lista di valori piuttosto che una funzione o un'espressione. Una lista vuota può essere definita come segue:
'()
o semplicemente:
()
Le liste possono contenere valori semplici così come possono contenere altre liste:
(let* ( (x '("GIMP" (1 2 3) ("il" ("fotoritoccatore" () ) ) ) ) ) x )
Si noti che il primo apostrofo definisce elementi di lista fino alla corrispondente parentesi chiusa, e quindi tutte le coppie di parentesi interne rappresentano elementi di liste. Si copi l'istruzione nella console Script-Fu e la si esegua.
Sulle liste sono possibili le operazioni:
Questa operazione è svolta dalla funzione Cons. Richiede due parametri, il primo è l'elemento da inserire, il secondo è la lista in cui inserirlo.
Una lista potrebbe essere creata come segue:
(cons 1 '(2 3 4) )
Il cui risultato è la lista (1 2 3 4).
La seguente istruzione crea una lista di un solo elemento:
(cons 1 () )
Per definire una lista composta da variabili precedentemente dichiarate si utilizza la funzione list: Ad esempio la dichiarazione:
(list 5 4 3 a b c)
Produce una lista contenente i valori contenuti nelle variabili a, b e c. Ad esempio:
(let* ( (a 1) (b 2) (c 3) ) (list 5 4 3 a b c) )
la lista conterrà: (5 4 3 1 2 3).
La funzione car restituisce l'elemento di testa della lista.
La lista deve essere non-nulla.
L'istruzione seguente restituisce il primo elemento della lista:
(car '("primo" 2 "secondo"))"
cioè: "primo"
La funzione cdr restituisce la parte restante della lista dopo il primo elemento (la coda della lista). Se vi è un solo elemento nella lista, restituisce una lista vuota. Ad esempio:
(cdr '("primo" 2 "terzo"))
restituisce: (2 "terzo"), mentre l'istruzione seguente:
(cdr '("uno e solo"))restituisce: ()
Per accedere alla testa della lista: (caadr). Per accedere alla coda di una lista: (cddr).
La convenzione sui nomi di base è: la a indica la testa e la d indica la cosa. Quindi:
(car (cdr (car x) ) )
si potrebbe scrivere come:
(cadar x)
Si provi a digitare quanto segue (su di un'unica riga se si utilizza la console), e poi si formino delle varianti di car e cdr per accedere ai differenti elementi della lista:
(let* ( (x '( (1 2 (3 4 5) 6) 7 8 (9 10) ) ) ) ; metti il tuo codice car/cdr qui )
Esercizio:
Si acceda al numero 3 nella lista utilizzando solo due chiamate di funzione.
Commenti:
In Scheme, un punto e virgola (;) indica un commento. Il segno stesso e quanto segue sulla stessa linea sono ignorati
dall'interprete.
In questo esercizio si costruirà uno script per la creazione di un rettangolo con del testo. Lo script, intitolato Text Box, crea un'immagine delle dimensioni corrette per contenere una linea di testo immessa dall'utente. Si consentirà inoltre all'utente di scegliere il font, la sua dimensione e il suo colore.
Un programma composto da molte istruzioni non può trovare posto nella console Script-Fu.
Nella directory che GIMP crea durante l'installazione si dovrebbe trovare una directory denominata scripts. GIMP controlla in questa directory se esiste la directory scripts e aggiunge gli scripts contenuti in questa directory al database di Script-Fu. Perciò bisogna usare questa directory per memorizzare i propri script.
Ogni script Script-Fu definisce almeno una funzione che è la funzione principale dello script. Questa è la funzione dove si fa il lavoro. Inoltre ogni script deve registrarsi nel database delle procedure per poter risultare accessibile a GIMP.
Si definisca dapprima la funzione principale:
(define (script-fu-text-box inText inFont inFontSize inTextColor))
Subito dopo la parentesi tonda viene dato il nome della funzione: script-fu-text-box, poi seguono quattro parametri. Nel caso specifico questi corrisponderanno al testo, al font, alla dimensione del font e al colore del testo. Al momento la funzione è vuota e non fa nulla.
Nell'assegnazione dei nomi si preferisce usare lettere minuscole e separare le parti del nome con trattini (ved. il nome della funzione). Agli argomenti si è aggiunto il prefisso "in" in modo da distinguerli rapidamente come argomenti passati allo script piuttosto che creati al suo interno. Le variabili definite all'interno dello script sono precedute da "the".
Il prefisso script-fu davanti al nome della funzione rispetta una convenzione, quindi bisogna usarlo.
Per registrare la funzione si richiama la funzione script-fu-register. Quando l'interprete esegue questa funzione registra lo script nel database delle procedure. Pur non essendo obbligatorio, di solito, questa funzione viene scritta alla fine, dopo tutto il codice.
Ecco il listato per registrare questa funzione:
(script-fu-register "script-fu-text-box" ; nome della funzione "Text Box" ; voce che comparirà nel menu "Crea una casella con un testo, dimensionata\ per adattarsi al testo che contiene,\ al carattere, alla dimensione e al colore."; descrizione "Michele" ;autore "copyright 2010, Michael Terry;\ 2009, the GIMP Documentation Team" ; diritti d'autore "27 Ottobre 1997" ; data di creazione "" ;tipo di immagine su cui lavora lo script SF-STRING "Text" "Text Box" ; dichiarazione di variabile di tipo string SF-FONT "Font" "Charter" ; Variabile per il font SF-ADJUSTMENT "Font size" '(50 1 1000 1 10 0 1) ; un pulsante SF-COLOR "Color" '(0 0 0) ; variabile per il colore ) (script-fu-menu-register "script-fu-text-box" "/File/Create/Text")
Salvare queste funzioni in un file di testo con estensione .scm all'interno della directory degli script, quindi si seleziona
Filtri → Script-Fu &rarr, Rinfresca gli scripts
questo nuovo script comparirà nel menu Filtri:
Filtri → Script-Fu → Text → Text Box.
Ovviamente, richiamando questo comando non succede ancora niente, tranne le richieste di parametri definite quando si registra lo script.
Per registrare lo script in GIMP si richiama la funzione script-fu-register, passando prima i sette parametri richiesti e poi gli argomenti dello script insieme con una descrizione e un valore predefinito per ciascun argomento.
Gli argomenti richiesti:
Dopo aver elencato gli argomenti necessari alla registrazione occorre elencare gli argomenti che corrispondono a quelli richiesti dallo script. Quando si elencano questi argomenti si deve specificare anche il tipo, questo serve per il riquadro di dialogo che compare quando l'utente seleziona lo script. Si deve anche fornire un valore predefinito, assunto quando l'utente non effettua una scelta.
Questa sezione del processo di registrazione ha il seguente formato:
Tipo argomento | Descrizione | Esempio |
SF-IMAGE | Se lo script opera su un'immagine già aperta, questo dovrebbe essere il primo argomento dopo quelli richiesti. GIMP passa un riferimento all'immagine in questo parametro. | 3 |
SF-DRAWABLE | Se lo script opera su un'immagine aperta questo dovrebbe essere il secondo argomento dopo SF-IMAGE. Si riferisce al livello attivo. GIMP passa un riferimento al livello attivo in questo parametro. | 17 |
SF-VALUE | Accetta numeri e stringhe. Si noti che le virgolette devono essere sottoposte ad escape perciò, in caso di stringhe di testo, è preferibile utilizzare SF-STRING. | 42 |
SF-STRING | Accetta stringhe. | "Del testo" |
SF-COLOR | Indica che questo argomento richiede un colore. | '(0 102 255) |
SF-TOGGLE | Viene mostrata una casella di scelta per richiedere un valore booleano. | TRUE o FALSE (vero o falso) |
Tipo argomento | Descrizione |
SF-ADJUSTMENT |
Nel riquadro di dialogo crea un pulsante di regolazione dall'aspetto a slitta.
SF-ADJUSTMENT "testo" '(valore inf sup passo_inc pagina_inc cifre tipo) Elenco argomenti del pulsante Elemento Descrizione "testo" Testo stampato prima del pulsante. valore Valore stampato alla partenza. inf / sup I valori inferiore / superiore (campo libero). passo_inc valore di Incremento/decremento. pagina_inc valore di Incremento/decremento usando i tasti pagina. cifre Cifre dopo il punto decimale. tipo Uno di: SF-SLIDER o 0, SF-SPINNER o 1 |
SF-COLOR | Nel riquadro di dialogo crea un pulsante per la scelta di un colore.
SF-COLOR "etichetta" '(rosso verde blu) o SF-COLOR "etichetta" "colore" Elenco argomenti del pulsante Elemento Descrizione "etichetta" Testo stampato prima del pulsante. '(rosso verde blu) valori per le componenti rosso, verde e blu. "colore" Nome colore in notazione CSS. |
SF-FONT |
Crea un pulsante per selezionare caratteri nel pannello. Restituisce un nome di carattere come stringa. Ci sono due nuove procedure per facilitare l'uso di questo parametro di ritorno:
(gimp-text-fontname image drawable x-pos y-pos text border antialias size unit font) (gimp-text-get-extents-fontname text size unit font) dove font è il nome del carattere ottenuto. La dimensione specificata nel nome del carattere viene ignorata. Viene usata solo nel selettore del font. Per questa ragione si suggerisce di impostarla ad un valore corretto (24 pixel è una buona scelta). SF-FONT "etichetta" "nomecarattere"Elenco argomenti del pulsante Elemento Descrizione "etichetta" Testo stampato prima del pulsante. "nomecarattere" Nome del carattere predefinito. |
SF-BRUSH | Nel pannello di controllo crea un'area di anteprima (che se premuta porta in primo piano una finestra di anteprima) ed un pulsante con etichetta "...". Il pulsante provocherà a sua volta la creazione di un riquadro di dialogo in primo piano dove si potrà selezionare un pennello e si potrà modificare qualsiasi loro caratteristica.
SF-BRUSH "Brush" '("Circle (03)" 100 44 0)In questo esempio il pannello dei pennelli verrà portato in primo piano con un pennello predefinito circolare (03) con opacità 100, spaziatura 44 e modalità di disegno Normale (valore 0). Se questa selezione non è stata modificata, il valore passato alla funzione come parametro sarà '("Circle (03)" 100 44 0). |
SF-PATTERN |
Nel pannello di controllo crea un'area di anteprima (che se premuta porta in primo piano una finestra di anteprima) ed un pulsante con etichetta "...". Il pulsante porta a sua volta in primo piano un riquadro di dialogo con il quale è possibile selezionare i motivi.
SF-PATTERN "Motivo" "Maple Leaves"Il valore restituito all'invocazione dello script è una stringa contenente il nome del motivo. Se la selezione precedente non è stata modificata la stringa contiene "Maple Leaves". |
SF-GRADIENT |
Nel pannello di controllo crea un pulsante contenente un'anteprima del gradiente selezionato.
Quando si preme il pulsante si apre un riquadro di dialogo per la scelta del gradiente.
SF-GRADIENT "Gradiente" "Deep Sea"Il valore restituito quando lo script viene invocato è una stringa contenente il nome del gradiente. Se la selezione precedente non è stata modificata, la stringa contiene "Deep Sea". |
SF-PALETTE |
Crea un pulsante contenente il nome della tavolozza selezionata.
Se il pulsante viene premuto viene portata in primo piano una finestra di dialogo di scelta della tavolozza.
SF-PALETTE "Tavolozza" "Colori con nome"Il valore restituito quando lo script viene invocato è una stringa contenente il nome della tavolozza. Se la selezione precedente non è stata alterata, la stringa dovrebbe contenere "Colori con nome". |
SF-FILENAME |
Nel pannello di controllo inserisce un pulsante per scegliere un file.
Se viene premuto il pulsante, viene portata in primo piano un riquadro di selezione file.
SF-FILENAME "etichetta" (string-append "" gimp-data-directory "/scripts/beavis.jpg") Il valore restituito quando lo script viene invocato è una stringa contenente il nome del file. |
SF-DIRNAME |
Simile a SF-FILENAME, il pulsante creato permette di scegliere una directory invece di un file.
SF-DIRNAME "etichetta" "/var/tmp/images"Il valore restituito quando lo script viene invocato è una stringa contenente il nome della directory. |
SF-OPTION |
Crea una casella combinata che mostra le opzioni passate come lista.
La prima opzione è la predefinita.
SF-OPTION "etichetta" '("opzione1" "opzione2")Il valore restituito quando lo script viene invocato è il numero dell'opzione scelta, dove la prima opzione viene contata come 0. |
SF-ENUM |
Crea una casella combinata che mostra tutti i valori enumerativi per il dato tipo enumerativo. Quest'ultimo deve essere il nome di un enumerato registrato, senza il prefisso "Gimp". Il secondo parametro specifica il valore predefinito, usando il nick del valore enumerativo.
SF-ENUM "Interpolazione" '("TipoInterpolazione" "lineare")Il valore restituito, quando lo script viene invocato, corrisponde al valore scelto. |
In questo paragrafo si crea una nuova immagine, si aggiunge il testo immesso dall'utente e si ridimensiona l'immagine per contenere esattamente il testo.
Una volta che si sa come definire variabili, definire le funzioni e accedere agli elementi di una lista, il resto è presto fatto, si deve solo familiarizzare con le funzioni disponibili nel database delle procedure di GIMP e chiamare tali funzioni direttamente. Il comando "navigatore delle procedure" è accessibile tramite il menu "Aiuto".
Cominciare creando una nuova immagine. Creare una nuova variabile, theImage, a cui assegnare il valore di ritorno della funzione interna gimp-image-new.
Come si può vedere dal navigatore delle procedure la funzione gimp-image-new prende tre parametri: la larghezza dell'immagine, l'altezza e il tipo. Poichè l'immagine verrà ridimensionata per contenere il testo, creare una immagine 10x10 RGB. Memorizzare le dimensioni dell'immagine in alcune variabili, per potervi fare riferimento e manipolarle più avanti nello script.
(define (script-fu-text-box inText inFont inFontSize inTextColor) (let* ( ;definizione delle variabili locali ;creazione di una nuova immagine: (theImageWidth 10) (theImageHeight 10) (theImage (car (gimp-image-new theImageWidth theImageHeight RGB ) ) ) (theText) ;una dichiarazione per il testo ;che creeremo più avanti
Nota: si è specificato che l'immagine è di tipo RGB. Si sarebbe potuto anche utilizzare il valore 0 ma RGB ricorda meglio il significato del parametro.
Si noti anche che si è prelevato l'elemento di testa del risultato fornito dalla chiamata a funzione. Ciò perchè tutte le funzioni di GIMP ritornano una lista, anche se contenente un unico elemento.
L'immagine deve essere collocata su un nuovo livello. Chiamare la funzione gimp-layer-new per creare il livello passando l'ID dell'immagine precedentemente creata (da adesso in poi, invece di elencare l'intera funzione, verranno mostrate solo le linee da aggiungere. Questo è lo script completo).
Poichè si sono dichiarate tutte le variabili locali utilizzate, si chiuderanno tutte le parentesi segnando la fine del blocco di dichiarazione delle variabili:
;crea un nuovo livello per l'immagine: (theLayer (car (gimp-layer-new theImage theImageWidth theImageHeight RGB-IMAGE "layer 1" 100 NORMAL ) ) ) ) ;fine delle variabili locali
Una volta disponibile il nuovo livello occorre aggiungerlo all'immagine:
(gimp-image-add-layer theImage theLayer 0)
Si provi ora a testare il risultato del lavoro svolto fino a questo punto aggiungendo la linea seguente per mostrare la nuova immagine:
(gimp-display-new theImage)
Si salvi il lavoro e si selezioni
Rimuovere la riga per visualizzare l'immagine (o la si trasformi in commento facendola precedere da un ; ad inizio linea).
Prima di aggiungere il testo all'immagine occorre impostare i colori di primo piano e di sfondo in modo che il testo abbia il colore selezionato dall'utente. Utilizzare le funzioni:
(gimp-context-set-background '(255 255 255) ) (gimp-context-set-foreground inTextColor)
Con i colori opportunamente impostati cancellare il contenuto dell'immagine riempiendo l'area con il colore di sfondo:
(gimp-drawable-fill theLayer BACKGROUND-FILL)
Dopo aver pulito l'immagine si è pronti per l'aggiunta del testo:
(set! theText (car (gimp-text-fontname theImage theLayer 0 0 inText 0 TRUE inFontSize PIXELS "Sans") ) )
Anche se la chiamata della funzione passa molti valori se ne comprende il funzionamento esaminando i parametri scegliendo la funzione nel Navigatore delle procedure. Essenzialmente si sta creando un nuovo livello di testo e lo si sta assegnando alla variabile theText.
Ora che il testo è disponibile si possono richiedere le sue dimensioni e ritagliare l'immagine e il suo livello:
(set! theImageWidth (car (gimp-drawable-width theText) ) ) (set! theImageHeight (car (gimp-drawable-height theText) ) ) (gimp-image-resize theImage theImageWidth theImageHeight 0 0) (gimp-layer-resize theLayer theImageWidth theImageHeight 0 0)
Adesso si può reinserire la riga per la visualizzazione:
(gimp-display-new theImage)
Quando si crea uno script, si deve dare agli utenti la possibilità di annullare le loro operazioni nel caso commettano degli errori. Questo si ottiene facilmente chiamando le funzioni gimp-undo-push-group-start e gimp-undo-push-group-end prima e dopo il codice che elabora l'immagine. Esse possono essere pensate come istruzioni accoppiate, che fanno sapere a GIMP quando iniziare e fermare la registrazione delle operazioni sull'immagine, in modo da poterle annullare in un secondo momento.
Se si crea una immagine completamente nuova non ha molto senso utilizzare queste funzioni poichè non si sta modificando una immagine preesistente. Tuttavia quando si modificano altre immagini si consiglia di farne uso.
Per consentire all'utente di specificare la dimensione della spaziatura si aggiungerà un parametro alla funzione principale e alla funzione di registrazione:
(define (script-fu-text-box inTest inFont inFontSize inTextColor inBufferAmount) (let* ( ;definizione delle variabili locali ;creazione di una nuova immagine: (theImageWidth 10) (theImageHeight 10) (theImage (car (gimp-image-new theImageWidth theImageHeight RGB ) ) ) (theText) ;una dichiarazione per il testo ;che si creerà in seguito (theBuffer) ;aggiunto (theLayer (car (gimp-layer-new theImage theImageWidth theImageHeight RGB-IMAGE "layer 1" 100 NORMAL ) ) ) ) ;fine variabili locali [Sezione Codice] )
(script-fu-register "script-fu-text-box" ; nome della funzione "Text Box" ; voce che comparirà nel menu "Crea una casella con un testo, dimensionata\ per adattarsi al testo che contiene,\ al carattere, alla dimensione e al colore."; descrizione "Michele" ;autore "copyright 2010, Michael Terry;\ 2009, the GIMP Documentation Team" ; diritti d'autore "27 Ottobre 1997" ; data di creazione "" ;tipo di immagine su cui lavora lo script SF-STRING "Text" "Text Box" ; dichiarazione di variabile di tipo string SF-FONT "Font" "Charter" ; Variabile per il font SF-ADJUSTMENT "Font size" '(50 1 1000 1 10 0 1) ; un pulsante SF-COLOR "Color" '(0 0 0) ; variabile per il colore ) (script-fu-menu-register "script-fu-text-box" "<Image>/File/Create/Text")
Dopo aver ottenuto le dimensioni del testo si devono aggiustare i valori in base all'entità della spaziatura specificata dall'utente. Non si effettuerà nessun controllo di errore per assicurarsi che il valore sia compreso tra 0 e 100% anche per dare la possibilità di immettere valori superiori come ad esempio "200" come percentuale del buffer da aggiungere.
(set! theBuffer (* theImageHeight (/ inBufferAmount 100) ) ) (set! theImageHeight (+ theImageHeight theBuffer theBuffer) ) (set! theImageWidth (+ theImageWidth theBuffer theBuffer) )
Il codice imposta la spaziatura in base all'altezza del testo e, poichè la spaziatura deve trovarsi su entrambi i lati, la somma due volte sia all'altezza che alla larghezza della nuova immagine.
Ora che l'immagine è stata ridimensionata tenendo conto della spaziatura si deve centrare il testo all'interno dell'immagine. Questo si ottiene spostando lungo le coordinate (x, y) il livello del testo di (theBuffer, theBuffer). Aggiungere la linea seguente dopo il ridimensionamento dell'immagine:
(gimp-layer-set-offsets theText theBuffer theBuffer)
Salvare lo script e provarlo dopo aver aggiornato il database.
Resta da ritornare l'immagine, il livello e il livello del testo. Dopo la visualizzazione dell'immagine aggiungere la linea seguente:
(list theImage theLayer theText)
Questa è l'ultima linea della funzione, la lista viene quindi resa disponibile ad altri script che vogliano farne uso.
Per utilizzare il nuovo script Text Box in un'altro script si potrebbe scrivere qualcosa come:
(set! theResult (script-fu-text-box "un testo" "Charter" "30" '(0 0 0) "35" ) ) (gimp-image-flatten (car theResult))