[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
In questo capitolo si raccolgono alcuni esempi di funzioni PostScript che possono essere utili a vario titolo. Trattandosi di un linguaggio specifico per la stampa, non vengono proposti esempi di programmazione standard.
L'unità di misura utilizzata è sempre il punto tipografico, che in questo ambito corrisponde a 1/72-esimo di pollice, ovvero a 0,352 777 7 mm (per converso, un millimetro è pari a 2,834 646 punti). Volendo usare unità di misura più comuni, si possono realizzare alcune funzioni molto semplici che si limitano a moltiplicare il valore per una costante, in modo da ottenere come risultato l'equivalente in punti:
|
In questo modo, al posto di inserire un valore puro e semplice, basta aggiungere subito dopo la sigla dell'unità di misura, che in realtà è una funzione. Per esempio:
|
Evidentemente, la funzione pt è inutile, ma può servire per mantenere coerenza con il resto, nel momento in cui si utilizzi sistematicamente questo meccanismo per indicare le coordinate o le distanze.
Pur non trattandosi di un linguaggio di programmazione normale, quando si cerca di realizzare qualcosa di particolare, può essere comoda la possibilità di mostrare un valore da qualche parte, per verificare il contenuto di una data informazione.
|
La funzione appena mostrata, serve per ottenere la conversione di un numero in stringa, che poi viene visualizzato nelle coordinate previste. Andrebbe usata nel modo seguente, dove x,y sono le coordinate a partire dalle quali mostrare il valore:
n x y diag_display_number |
Dal momento che questa funzione preleva il valore dalla pila, potrebbe essere conveniente la duplicazione di tale valore prima di utilizzarlo:
n dup x y diag_display_number |
Volendo completare il problema con una funzione equivalente per la visualizzazione delle stringhe, basta la variante seguente:
|
Quando si disegnano delle figure o dei grafici, può essere comodo disporre di qualche funzione che faciliti la collocazione di didascalie o di annotazioni di qualunque tipo. Qui viene proposto un sistema molto semplice, con cui è possibile piazzare delle stringhe allineate correttamente a sinistra, a destra o al centro, date le coordinate di riferimento. Si parte con la definizione di alcune «variabili», che servono per fissare i punti di riferimento delle stringhe:
|
La funzione line_t viene usata per conoscere la posizione verticale (Y) della stringa da collocare; la funzione line_l serve per fornire la posizione iniziale (X) di una stringa da allineare a sinistra; line_r fornisce la posizione finale (X) di una stringa da allineare a destra; line_c fornisce la posizione centrale (X) di una stringa da centrare; infine, line_h serve per conoscere la distanza tra le righe.
Per usare le funzioni che vengono presentate nel seguito, devono essere impostati inizialmente i valori per le variabili appena descritte. Per esempio, sapendo che si vuole scrivere un testo allineato a sinistra a partire dalla coordinata 100 , 50, con una distanza tra le righe di 14 punti, basta impostare i valori nel modo seguente:
|
Dal momento che non si devono centrare le righe e nemmeno allineare a destra, le altre variabili non servono, altrimenti occorrerebbe impostare line_c o line_r, al posto di line_l.
|
Si osservi la funzione show_line_left: si usano i valori restituiti dalle funzioni line_l e line_t per impostare le coordinate iniziali, quindi si visualizza la stringa. Subito dopo si provvede a ridurre il valore della variabile corrispondente alla funzione line_t del valore restituito da line_h (la distanza tra le righe), in modo da poter continuare con la visualizzazione di altre stringhe, con lo stesso allineamento sinistro, subito sotto quella appena inserita.
|
La funzione show_line_right è molto simile, con la differenza che occorre fare qualche calcolo per individuare la posizione orizzontale di inizio, sapendo la posizione finale ottenuta dalla funzione line_r. Per questo, viene fatta una copia della stringa, che quindi viene misurata con la funzione setlinewidth. Da questa misurazione si espelle l'informazione verticale, che risulta inutile, sottraendo poi a questa il valore restituito da line_r. Quello che si ottiene è la distanza dalla posizione destra finale, con segno invertito, pertanto si inverte nuovamente con la funzione neg. Disponendo della coordinata X, si aggiunge la coordinata Y, data da line_t, spostando la posizione corrente, per poi mostrare la stringa e infine preparare nuovamente la posizione verticale per una nuova riga.
|
La funzione show_line_center centra la stringa in riferimento alla posizione line_c. I calcoli sono simili a quelli per l'allineamento a destra, con la differenza che la distanza dal centro è pari alla metà della lunghezza della stringa. Il resto è equivalente.
L'esempio seguente mostra come scrivere qualcosa con queste funzioni; la figura 313.11 mostra il risultato che si ottiene osservando il riquadro che va da 0 , 0 a 150 , 100:
|
|
Naturalmente, si possono predisporre anche delle abbreviazioni a queste funzioni:
|
In questo modo, l'indicazione delle stringhe può essere ridotto alla forma seguente:
|
Cappella Archive
David Byram-Wigfield, Practical PostScript
David Byram-Wigfield, Tinydict
David Byram-Wigfield, Making an electronic book
First Guide to PostScript
<http://www.cs.indiana.edu/docproject/programming/postscript/postscript.html>
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome esempi_di_funzioni_postscript.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]