[successivo] [precedente] [inizio] [fine] [indice generale]


Sezione 5.   Concetti fondamentali

Un sorgente Pic è come un piccolo programma che contiene la descrizione di una figura. Pic compila tale programma traformandolo in delle macro per Troff. Di conseguenza, qualsiasi altro programma che debba elaborare l'output del programma Troff può tranquillamente ignorare il fatto che originariamente il sorgente conteneva codice Pic.

Pic tenta dunque di tradurre tutto ciò che si trova compreso fra le macro .PS e .PE, lasciando invariato tutto il resto. In realtà, le suddette macro sono definite nel pacchetto di macro ms (e altrove) e hanno l'effetto di centrare orizzontalmente l'output di Pic.

Le immagini sono descritte in modo procedurale, come collezioni di oggetti collegati da movimenti. Normalmente, Pic cerca di allineare gli oggetti da sinistra a destra nell'ordine di descrizione, collegandoli in punti che siano visivamente naturali. Il listato 5.1 e la figura 5.2 illustrano, ad esempio, il flusso dei dati nell'elaborazione di un sorgente Pic.

Listato 5.1.

.PS
ellipse "sorgente";
arrow;
box width 0.6 "\fIpic\/\fP(1)"
arrow;
box width 1.1 "\fItbl\/\fP(1) or \fIeqn\/\fP(1)" "(opzionale)" dashed;
arrow;
box width 0.6 "\fItroff\/\fP(1)";
arrow;
ellipse "PostScript"
.PE

Figura 5.2. Il flusso dei dati nell'elaborazione di un sorgente (Pic).

Il flusso dei dati nell'elaborazione di un sorgente Pic

Il listato 5.1 illustra già parecchi concetti fondamentali di Pic: per prima cosa l'invocazione di tre degli oggetti fondamentali (ellisse, freccia, riquadro); poi la dichiarazione di righe di testo da inserire negli oggetti (si noti che si può anche indicare il tipo di carattere); poi l'indicazione di uno stile tratteggiato per un oggetto; infine l'allargamento di un riquadro per adattarlo al testo incluso.

Dal punto di vista sintattico, si noti che le istruzioni terminano con il carattere newline oppure con il carattere punto e virgola (;); gli argomenti testuali devono essere inclusi fra apici doppi ("); in generale l'ordine degli argomenti e dei modificatori (come width 1.2 o dashed) è ininfluente, tranne nel caso degli argomenti testuali.

La figura 5.3 presenta sei dei sette oggetti Pic fondamentali, alla loro dimensione predefinita.

Figura 5.3. Sei dei sette oggetti Pic fondamentali.

Sei dei sette oggetti Pic fondamentali

L'oggetto mancante è spline; inoltre esiste una maniera per raccogliere vari oggetti in un blocco composto in modo da trattare per molti versi il gruppo come un oggetto singolo (similmente a un riquadro). Se ne parlerà nelle sezioni 7.3 e 13.2, rispettivamente.

Gli oggetti riquadro, ellisse, cerchio e blocco composto sono oggetti chiusi; gli oggetti linea, freccia, arco e spline sono oggetti aperti. Tale distinzione risulta importante per comprendere il funzionamento dei modificatori dei comandi.

La figura 5.3 è stata creata mediante il codice presentato nel listato 5.4, nel quale vengono introdotti alcuni altri concetti fondamentali.

Listato 5.4.

      1 .PS
      2 box "riquadro";
      3 move;
      4 line "linea" "";
      5 move;
      6 arrow "freccia" "";
      7 move;
      8 circle "cerchio";
      9 move;
     10 ellipse "ellisse";
     11 move;
     12 arc; down; move; "arco"
     13 .PE

La prima cosa da notare è il comando move, il quale esegue uno spostamento nella direzione corrente di una lunghezza predefinita (0,5 in).

Si noti inoltre come sia possibile arricchire linee e frecce mediante del testo. In questo esempio i comandi line e arrow ricevono entrambi due argomenti, i quali specificano rispettivamente il testo che andrà al di sopra e al di sotto dell'oggetto. Il motivo per cui un argomento testuale solo non va bene dovrebbe essere chiaro osservando l'output di arrow "Ahi!" (figura 5.5).

Figura 5.5. Testo centrato su una freccia.

Testo centrato su una freccia.

Quando un comando riceve una stringa di testo, Pic tenta di posizionarla al centro geometrico dell'oggetto; aggiungendo più stringhe, si ottiene un blocco verticale che viene complessivamente centrato; si osservi ad esempio il codice del listato 5.6 e la corrispondente figura 5.7.

Listato 5.6.

.PS
line "1";
line "1" "2";
line "1" "2" "3";
line "1" "2" "3" "4";
line "1" "2" "3" "4" "5";
.PE

Figura 5.7. Effetto di argomenti testuali multipli.

Effetto di argomenti testuali multipli

La riga 12 del listato 5.4, la quale descrive l'arco con didascalia, introduce alcuni ulteriori concetti. Si osservi intanto come sia possibile variare la direzione di congiungimento fra i vari oggetti: omettendo l'argomento down, la didascalia si sarebbe congiunta al di sopra dell'arco (figura 5.8).

Figura 5.8. Output di arc; move; "arco".

Output di «arc; move; arco»

La causa del suddetto comportamento risiede nel fatto che il tracciamento di un arco modifica la direzione corrente in quella verso cui punta il suo estremo finale. Se la cosa non fosse ancora chiara si consideri la figura 5.9.

Figura 5.9. Output di arc cw; move; "arco".

Output di «arc cw; move; arco»

Nella figura 5.9 l'unica differenza rispetto alla figura 5.8 sta nell'uso dell'argomento cw, che sta per clockwise ossia «verso orario» (ccw invece sta per counter-clockwise ossia «verso antiorario»). Si osservi come ciò cambi la direzione corrente verso il basso, piuttosto che verso l'alto.

Un'altra maniera per rendersi conto di quanto sopra osservato è presentata in figura 5.10.

Figura 5.10. Output di line; arc; arc cw; line.

Output di «line; arc; arc cw; line»

Si noti che nella figura 5.10 non è stato necessario specificare la direzione verso l'alto per il secondo arco per ottenere una giunzione «liscia» con il primo.

Si osservi infine che una stringa isolata viene considerata come se fosse circondata da un riquadro invisibile dalle dimensioni specificate dagli attributi width e height oppure dai valori predefiniti delle variabili textwid e textht (il cui valore iniziale è zero per entrambe, visto che non si può prevedere la dimensione dei caratteri).


Informatica per sopravvivere 2006.01.30 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome concetti_fondamentali.html

[successivo] [precedente] [inizio] [fine] [indice generale]

Valid ISO-HTML!

CSS validator!