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


Sezione 13.   Gruppi di oggetti

Esistono due diverse maniere per raggruppare più oggetti in Pic:

13.1   Raggruppamenti a graffe

Il metodo più semplice per raggruppare un insieme di oggetti è mediante una coppia di parentesi graffe ({ e }). All'uscita dal raggruppamento la posizione corrente e la direzione corrente vengono reimpostate ai loro valori precedenti all'ingresso nel raggruppamento.

13.2   Blocchi composti

Un blocco composto è un oggetto creato da una successione di comandi racchiusa fra parentesi quadre ([ e ]). Il blocco composto è analogo per molti aspetti a un singolo oggetto chiuso, avente la forma e le dimensioni del riquadro circoscritto. Ad esempio, il frammento di codice del listato 13.1 corrisponde alla figura 13.2 (la quale mostra il blocco senza e con punti di giunzione.). L'etichetta A corrisponde alla posizione del blocco.

Listato 13.1.

...
A: [
    circle;
    line up 1 at last circle .n;
    line down 1 at last circle .s;
    line right 1 at last circle .e;
    line left 1 at last circle .w;
    box dashed with .nw at last circle .se + (0.2, -0.2);
    Didascalia: center of last box;
]
...

Figura 13.2. Esempio di blocco composto.

Esempio di blocco composto

Per riferirsi a uno dei punti di giunzione del blocco composto, è possibile usare, ad esempio, la descrizione A .s. Ai fini della loro menzione, i blocchi composti sono delle classi. Si può utilizzare la descrizione last [] .s equivalentemente, ovunque sia necessaria l'indicazione di una posizione. Tale costrutto è molto importante al fine di assemblare diagrammi estesi e complessi.

I blocchi composti forniscono anche un meccanismo per il campo di azione delle variabili, analogamente a un ambiente Troff (v. sezione 23). Gli assegnamenti di variabile effettuati all'interno di un blocco vengono annullati all'uscita. Per accedere a un valore interno a un blocco, si deve scrivere il nome del blocco, seguito da un punto, seguito dall'etichetta desiderata. Ad esempio, si potrebbe far riferimento al centro del riquadro nel blocco composto, di cui a listato 13.1 e figura 13.2, mediante last [] .Didascalia oppure A.Didascalia.

Questo tipo di riferimento a un'etichetta può essere utilizzato esattamente come una qualsiasi posizione. Ad esempio, aggiungendo "Ciao!" at A.Didascalia al listato 13.1 si ottiene la figura 13.3.

Figura 13.3. Aggiunta di una didascalia mediante un'etichetta interna.

Aggiunta di una didascalia mediante un'etichetta interna

È altresì possibile utilizzare le etichette interne sia a destra che a sinistra del modificatore with. Ciò significa che l'esempio di cui a listato 13.1 e figura 13.2 si potrebbe posizionare relativamente alla posizione del riquadro delle didascalia mediante un comando contentente with A.Didascalia at.

Si osservi che larghezza e altezza dei blocchi composti devono sempre essere considerate positive (figura 13.4).

Figura 13.4. I blocchi composti hanno sempre larghezza e altezza positive.

I blocchi composti hanno sempre larghezza e altezza positive

I blocchi composti si possono annidare; ciò significa che si possono utilizzare i punti di giunzione dei blocchi per costruire complesse strutture gerarchiche, dall'interno all'esterno. Si osservi che last e gli altri meccanismi di denominazione sequenziale non scendono ai livelli più interni, sicché nel listato 13.5 la freccia di cui alla riga 7 partirà dall'oggetto P e non dall'oggetto Q.

Listato 13.5. Blocchi composti annidati.

      1 .PS
      2 P: [box "foo"; ellipse "bar"];
      3 Q: [
      4      [box "baz"; ellipse "quxx"]
      5      "testo assurdo";
      6    ]
      7 arrow from 2nd last [];
      8 .PE

DWB Pic prevedeva che ci si potesse riferire ai livelli interni sino al massimo di un livello; GNU Gpic ha eliminato tale restrizione.


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 gruppi_di_oggetti.html

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

Valid ISO-HTML!

CSS validator!