Numero 14 di Michael J. Hammel traduzione di Antonio Cartelli



Si predisponga pure l'ampiezza del browser alla dimensione desiderata.
La Musa è stata progettata per adattarsi allo spazio disponibile!



Barra dei Bottoni Musa: 
  1. v; per farsi assalire dai pensieri 
  2. n; [fr. Una delle nove sorelle, dee delle scienze e delle arti nella mitologia greca]: sorgente di ispirazione 
 Benvenuti dalla Musa della Grafica! Perché una "musa"? Al di là dell'aspetto delle sorelle, le precedenti definizioni sono la maniera migliore di descrivere il mio interesse nella Computer Graphica: questa disciplina mi fa sprofondare nelle mie riflessioni ed è una sorgente giornaliera di ispirazione. 

[ Novità nella Grafica ] [ Meraviglie del Web ] [ Riflessioni ] [ Risorse ]

   Questo spazio è dedicato all'uso, alla creazione, alla distribuzione ed alla discussione di pacchetti per la Computer Grafica su sistemi Linux.
   E veniamo a noi. Effettivamente ci sono stati pochi annunci durante l'ultimo mese ed ho notato che non tutti sono stati inviati contemporaneamente alle due liste comp.os.linux.announce e freshmeat.net. Lo scorrere entrambe le liste richiede, da parte mia, una buona dose di diligenza ma, poiché visito entrambi i siti abbastanza spesso non mi crea gradi problemi. D'altro canto mi sono posto spesso la domanda: ma vale realmente la pena inserire questi annunci anche qui? Ho riflettuto a lungo sulla cosa ed alla fine sono giunto alla determinazione che vale la pena fare questo sacrificio poiché sia c.o.l.a. che freshmeat sono siti per annunci di carattere generale, nei quali comunicazioni specifiche relative alla grafica possono facilmente passare inosservate. Prendendo queste informazioni e riportandole qui posso far si che i miei lettori non debbano preoccuparsi della perdita di qualche notizia importante nel mare magnum degli annunci fatti periodicamente nei vari siti.

E alla fine ho anche ripreso a lavorare alle mie riflessioni.  Tra gli argomenti oggetto di discussione questo mese avremo: 

Ho anche preso in considerazione la possibilità di analizzare il Blender ma la mancanza di certezze relativamente alla stabilità del mio sistema ha fatto si che ritornassi sui miei passi. Il fatto è che la macchina da un po' di tempo si comporta in maniera piuttosto strana - ritengo che la causa vada ricercata in alcuni sbalzi di tensione avvenuti ultimamente che hanno rovinato alcune librerie di sistema. Ho già pianificato di aggiornare la macchina con la RedHat 5.2 non appena uscirà (mi aspetto che le difficoltà con libc/glibc saranno state risolte tutte per quella data un po' come è avvenuto con la versione 4.2 che ha risolto gran parte dei problemi tra a.out ed ELF) e dare un'occhiata al CDE Maximum della Xi Graphics, anche se non ho previsto di fare entrambe le cose entro ottobre. Forse sarò costretto a rivedere i miei piani.

Ad ogni buon conto, una rassegna dedicata al Blender sarà oggetto di una futura riflessione. L'ultima volta che ho provato il programma mi è sembrato stabile, nonostante che l'interfaccia sia piuttosto complessa. Ad un esame anche superficiale appare evidente, infatti, che questo modellizzatore è abbastanza ricco di caratteristiche, soltanto che la sua interfaccia non è intuitiva per un novizio degli ambienti 3D, e forse neanche per un artista con esperienza nel campo della grafica 3D. Sembra che della documentazione di migliore qualità sia in via di produzione e che possa essere pronta per settembre. Penso che aspetterò per vedere cosa verrà fuori prima di effettuare la rassegna del Blender.

I lettori più arditi possono provare a dare un'occhiata anche al nuovo e più ricco sito web della Musa della Grafica che presto sarà pronto. Prevedo di riuscire a far partire il nuovo sito nel periodo compreso tra la metà e la fine di settembre. Al suo interno troveranno una sistemazione organica il mini-Howto della Grafica in ambiente Linux ed i programmi di grafica per Unix, che verranno unificati in un unico database dotato di algoritmi di ricerca, ci sarà poi un elenco di materiale di lettura consigliato, sarà possibile inviare messaggi con rassegne di software, hardware e testi ed una gran quantità di novità connesse con il mondo della computer grafica per sistemi Linux. Ci saranno ovviamente anche tutti i numeri arretrati della Musa della Grafica presentati sulla Linux Gazette con i temi riportati mese per mese collegati successivamente al numero del mese corrispondente. Non appena sarà pronto effettuerò un annuncio sulla lista c.o.l.a.


 
Graphics Mews
      Avvertenza: Prima di addentrarmi eccessivamente nell'argomento devo far rilevare che ogni nuova informazione che inserisco in questa sezione ha solo ed essenzialmente un significato: quello di segnalazione di una novità. Ho avuto l'opportunità di venirne a conoscenza mediante alcune mailing-list cui sono iscritto, via gruppi di news Usenet, o infine, mediante messaggi inviatimi da lettori e curiosi. Certamente non garantisco questi prodotti (alcuni dei quali possono essere commerciali), faccio soltanto presente che ne ho sentito parlare il mese scorso.
 
indent

La home page di ParPov e Pov2Rib

ParPov è una libreria aperta e libera (nel senso GNU), orientata agli oggetti, scritta in C++ utile ad effettuare l'analisi e la codifica di file di scenario realizzati mediante il software di traccia di raggi POV-Ray. Grazie ad essa è possibile leggere una scena realizzata utilizzando le versioni da 1 a 3 della sintassi e si può creare una struttura di oggetti C++ che rappresenta tutti i possibili dettagli della descrizione originaria. Si può poi interrogare la struttura per analizzare gli oggetti ed utilizzare le informazioni ottenute per convertire la scena in altri formati o per mille altri usi. Pov2Rib è anch'esso un programma disponibile liberamente che consente di convertire file di scenario da POV-Ray nel formato dell'interfaccia Renderman (RIB). Il pacchetto risulta essere la prima applicazione di libParPov. 

Si veda: http://www9.informatik. uni-erlangen.de/~cnvogelg/pov2rib/index.html


GQview 0.4.0

GQview è un visualizzatore di immagini per il sistema operativo Linux. Tra le sue caratteristiche principali abbiamo la visualizzazione di file su singolo click, il supporto per un editor esterno, la visualizzazione in anteprima dei thumbnail, la memorizzazione in cache degli stessi e lo zoom selettivo. Il pacchetto GQview è attualmente disponibile in formato sorgente, eseguibile e nella versione rpm, richiede per un corretto funzionamento l'ultima versione della libreria GTK e la libreria lmlib. 

Si veda: http://www.geocities.com/ SiliconValley/Haven/5235/
 

indent

TKMatman

TKMatman è un pacchetto che consente la predisposizione e la correzione interattiva dei valori dei parametri per gli ombreggiatori RenderMan e la visualizzazione d'anteprima di immagini con parametri preassegnati. Può gestire superfici, spostamenti, interni, esterni, atmosfere, luci, ombreggiatori di immagini e loro combinazioni. L'idea originaria di questo programma è da attribuire a Sam Samai che ha scritto la versione per Irix. Con l'avvento dei pacchetti di rappresentazione Blue Moon (BMR) nell'ambito di diverse piattaforme l'autore di TkMatman ha pensato che molti si sarebbero spinti ad utilizzare l'interfaccia RenderMan ed avrebbero avuto l'esigenza di selezionare i loro ombreggiatori. È per questo motivo che ha pubblicato la sua versione ad uso personale, in ambiente Linux, di MatMan. Il programma è stato realizzato inizialmente per un uso prettamente personale ma è arrivato ora ad un punto in cui lo si può ritenere piuttosto stabile.  Ogni commento è ben accetto ed ogni nuova versione del software sarà resa disponibile sul sito: 

Si veda: http://www.dfki.uni-sb.de/ ~butz/tkmatman/


ImPress

ImPress consente di creare documenti di buona qualità utilizzando grafica vettoriale. Esso può essere utilizzato all'interno di un browser web dotato del plugin Tcl/Tk. È un pacchetto di desktop publishing e realizzazione di presentazioni ragguardevole; è compatto ed è stato progettato per Linux e per l'integrazione con Ghostscript. 

La versione .03alpha GPL contiene molte correzioni di problemi e prevede migliori funzionalità web e di presentazione. :

Si veda: http://www.tcltk.com/tclets/impress/index.html
 

LibVRML97/Lookat 0.7

LibVRML97 è un pacchetto che consente di includere realizzazioni VRML in ogni tipo di applicazione, mentre Lookat è un semplice browser VRML che poggia su quella libreria. Il codice del software è ancora in fase di sviluppo anche se il programma si presenta come il più completo browser VRML disponibile di tipo open source. Vengono supportate tutte le caratteristiche VRML97 eccettuate Text/FontStyle ed i sensori di individuazione oggetti (CylinderSensor, Piano, Sfera). La caratteristica di Scripting supporta la maggior parte delle API JavaScript e molto è ancora in fase di realizzazione.

La versione 0.7 del software comprende, in aggiunta, la gestione di script Javascript, MovieTextures, TouchSensor, Anchor, Inline, e argomenti a riga di comando quali -url e -geometry per l'esecuzione in XSwallow come plugin di Netscape.

Si veda: http://www.vermontel.net/ ~cmorley/vrml.html

Slidedraw

Slidedraw è un programma di disegno realizzato con Tcl/tk utile a presentare slide, è dotato di uscita postscript ed è ricco di caratteristiche. Si possono visualizzare immagini catturate, o si possono ottenere collezioni di slide o, infine, si può scaricare l'ultima versione del software mediante il nuovissimo sito web.

URL: http://web.usc.es/~phdavidl/slidedraw/

Sono benvenuti coloro che vogliono testare il software in questa versione di prova e si invita chi è disponibile a fornire contributi per le collezioni di slide e per la documentazione.


MindsEye 0.5.27

MindsEye è un progetto teso allo sviluppo di un programma aperto (nel senso GPL) di modellizzazione 3D in ambiente Linux. Il progetto del software si presenta modulare, il concetto su cui poggia è il rapporto Multi-scena/utente, la visualizzazione è del tipo Nucleo-sistema in luogo di Modellizzatore-sistema, il progetto di modellizzazione è orientato agli oggetti ed è previsto il supporto di rete in modalità MindsEye-kernel.

Si veda: http://mindseye.luna.net/

Visual DHTML

Visual DHTML è un pacchetto per autori web che consente di creare pagine web interattive utilizzando svariate tecniche DHTML. Visual DHTML porta JavaScript 1.2 e DHTML al massimo grado di utilizzo a livello di applicazione trasponendo le tecniche ed i metodi di programmazione tradizionale di basso livello nei linguaggi di scripting web. Tra le sue caratteristiche vanno annoverate cose come un'architettura orientata agli oggetti, basata su componenti (nello stile "Bean") con funzionalità "Drag and Drop". Nel pacchetto sono compresi anche diversi oggettini DHTML precostituiti, come il Disegnatore e Registratore dinamico che si può personalizzare e le proprietà dei vari componenti che si possono modificare. Se poi la funzionalità di questo pacchetto piace si può copiare ed incollare il codice sorgente visualizzando il formato HTML della pagina dall'interno del Navigatore.

Si veda: http://developer.netscape.com/docs/examples/dynhtml/visual/index.html


Javascript Debugger 1.1

JavaScript Debugger della Netscape è un potente pacchetto per il debug di JavaScript su diverse piattaforme. Scritto in Java il software può essere eseguito all'interno del Communicator Netscape. Esso supporta possibilità di debug JavaScript sul versante client, comprende caratteristiche come meccanismi di supervisione (watch mechanism), punti di interuzione condizionati (conditional breakpoints), visualizzazione evidenziata di errori, supporto per script sottolineato e la possibilità di evolvere passo passo del codice. Se si utilizza il debugger mentre si stanno sviluppando applicazioni Javascript si possono controllare gli script stessi mentre sono in esecuzione, determinare ciò che sta accadendo nello script in ogni momento e trovare e risolvere rapidamente i problemi. Non si parla esplicitamente di versione per Linux ma la versione Unix funziona alla perfezione.

http://developer.netscape.com/software/jsdebug.html


S.u.S.E. annuncia XFCom_P9x00 ed una nuova versione di XFCom_3DLabs

XFCom_P9x00-1.0

Ci è voluto un po' ma è finalmente disponibile un server aperto per schede Weitek P9100. XFCom_P9100 non è ancora accelerato e non è stato ancora sottoposto a tutti i test possibili, così come avremmo voluto, ma dovrebbe funzionare in maniera egregia su ogni scheda P9100.

XFCom_3DLabs-4.12

Con questa nuova versione diXFCom_3DLabs sono stati risolti molti dei problemi presenti nelle precedenti versioni. Le nuove caratteristiche comprendono:

Entrambi i server (come pure il resto della famiglia XFCom) può essere reperita presso il sito web: http://www.suse.de/XSuSE/XSuSE_E.html

Come sempre questi server sono disponibili liberamente, i loro sorgenti fanno già parte integrante del progetto di sviluppo XFree86. Gli eseguibili per altri sistemi operativi verranno resi disponibili compatibilmente con il tempo necessario a realizzarli.

supporto XSuse per Matrox Millenium G200

Sembra che Suse abbia aggiunto alla propria famiglia di server per Matrox quello per la Matrox Millennium G200 AGP. Non si è visto nessun annuncio ufficiale ma notizia di questo evento è giunta alla 'Musa attraverso Slashdot.org.

Il driver è disponibile sul sito ftp://ftp.suse.com/pub/suse_update/XSuSE/xmatrox/.


La Rivista Visual Computer

Visual Computer Journal Numero speciale sui mondi virtuali in tempo reale
Data ultima invio testi: 31 Ottobre 1998

Mondi virtuali in tempo reale sono ora possibili sulla maggior parte delle workstation e dei PC. L'obiettivo è quello di realizzare sistemi accattivanti (user-friendly) per la creazione di nuove applicazioni. Questo numero speciale di Visual Computer è dedicato a nuovi algoritmi, metodi e sistemi nell'ambito dei mondi virtuali in tempo reale.  Sono attese ricerche originali non pubblicate, esperienze sul campo, descrizione di esperienze rivolte a tutti gli aspetti che emergono dai Mondi virtuali in tempo reale. Temi possibili, ma non solo, sono:

Calendario eventi:
Invio lavori entro:  31 ottobre 1998
Notifica dell'accettazione o meno:  15 gennaio 1999
Invio dei manoscritti in versione definitiva:  15 febbraio 1999
Pubblicazione:  Estate 1999
La redazione di questo numero di Visual Computer è affidata a:

Nadia Magnenat-Thalmann
Capo redattore associato
MIRALab, Università di Ginevra
Email: thalmann@cui.unige.ch

Daniel Thalmann
Computer Graphics Lab
EPFL
Email: thalmann@lig.di.epfl.ch
 

Guida alla redazione dei lavori: Gli autori possono inviare i loro lavori sia mediante un URL HTML sia mediante FTP, in quest'ultimo caso la versione elettronica del lavoro deve essere in formato PDF (preferito) o postscript (compresso mediante gzip) e va inviata mediante ftp anonimo all'indirizzo ligsg2.epfl.ch. Il lavoro deve essere inviato come un unico file il cui nome deve essere quello del primo autore. Si segua la procedura descritta appresso:

In ogni caso si invii un messaggio a tvcanim@lig.di.epfl.ch indicando il titolo del lavoro, gli autori che hanno collaborato alla sua estensione e la loro dipendenza, la persona da contattare per comunicazioni ed infine l'URL o il nome del file utilizzato per l'FTP. Per ulteriori e più dettagliate informazioni gli autori posso consultare:  http://www.computer.org/multimedia/edguide.htm

KIllustrator 0.4

KIllustrator è un programma aperto (disponibile liberamente) di disegno vettoriale utilizzabile nell'ambiente K Desktop, analogo a Corel Draw(tm) o ad Adobe Illustrator(tm).

Tra le sue caratteristiche vanno annoverati:

L'installazione richiede un KDE 1.0 ed un QT 1.40 funzionanti così come un gcc-2.8.1 o un egc-1.03. KIllustrator è stato provato su Linux, FreeBSD e Solaris.

Per ogni ulteriore informazione (analisi di schermate, possibilità di download) si consulti pure la mia home page all'indirizzo:

Per ogni domanda, per commenti, per segnalazione di problemi o per contributi non esitate a contattarmi via e-mail all'indirizzo kus@iti.cs.uni-magdeburg.de.

Kai-Uwe Sattler


RenderPark

RenderPark è un pacchetto per la rappresentazione di immagini con una qualità prossima a quella di una fotografia, realizzato presso il gruppo di ricerca per la Computer Grafica dell'Università Cattolica di Lovanio in Belgio. L'obiettivo è quello di offrire un'implementazione professionale di molti algoritmi di rappresentazione di alta qualità in modo da poterli confrontare in maniera corretta, valutarne pregi e difetti, trovare soluzioni che consentano di superare questi ultimi e sviluppare nuovi algoritmi che siano più robusti ed efficienti di quelli attualmente disponibili. RenderPark offre, in effetti, diversi algoritmi che rappresentano lo stato dell'arte nel campo della rappresentazione e che non sono ancora presenti in altri pacchetti di rappresentazione, neanche commerciali. Sebbene RenderPark sia innanzitutto un ambiente di test per algoritmi di rappresentazione, sta evolvendo avviandosi a diventare un sistema di rappresentazione basato sulla tecnica fisica di illuminazione globale, ricco di caratteristiche.

Si veda: http://www.cs.kuleuven.ac.be/cwis/research/graphics/RENDERPARK/
 

Lo sapevate?

Domande e Risposte

D: C'è un modo di includere gli accapo all'interno di un testo? o di allineare frasi create signolarmente mediante un pacchetto di gestione testi?

R:  Non conosco la risposta esatta a questa domanda ma ho trovato la seguente affermazione sulla mail list dell'utente Gimp (sfortunatamente non ho conservato il nome di chi l'ha scritta - tutte le mie scuse all'autore):

Si provi con il comando "Script-fu --> Utils --> ASCII 2 Image Layer". In tal modo si potrà importare un testo come uno o più strati di testo.
Si noti che si può accedere a questo Script o dalla opzione Script-Fu del menu della Finestra delle Immagini (Image Window) o dall'opzione Script-Fu del menu Xtns.

D: Mark Lenigan (mlenigan@umdsun2.umd.umich.edu) ha scritto alla mail list dell'utente Gimp:

Sto cercando di creare un GIF trasparente con un'ombra a scalare per un grafico che rappresenta il titolo della mia pagina web. Sto seguendo per lo più il testo riportato in www.gimp.org/tutorials, se si eccettua il fatto che non sto includendo nell'immagine lo strato con il colore di sfondo e non sto utilizzando l'opzione "fondi gli strati visibili" per ottenere l'immagine finale trasparente. Tutto funziona alla perfezione fintanto che non ho l'esigenza di convertire questa figura in un'immagine indicizzata, esattamente prima di provvedere a salvarla nel formato .gif. In quel preciso momento, infatti, l'ombra all'interno della mia immagine scompare ed il testo sembra perdere il suo anti-aliasing. Qualcuno può essere così gentile da gettare un po' di luce su questo mare di tenebre?
A: Simon Budig ha risposto:
Certo. il Gimp può gestire la trasparenza ad 1 solo bit in modalità colore indicizzato. Ne consegue che quando si converte un'immagine in indicizzata, i differenti livelli di trasparenza vengono persi. Per risolvere il problema accennato c'è il notevole plugin "Filtri/Colori/Semi-appiattimento". Esso fonde tutte le regioni parzialmente trasparenti sul colore di sfondo corrente. Si selezioni un colore di sfondo (che corrisponda ovviamente allo sfondo della propria pagina Web) e si veda l'effetto del plugin. A questo punto si può convertire la propria immagine in indicizzata e salvarla come GIF (esso può gestire proprio la trasparenza ad 1 bit).

L'angolo della posta


zen@getsystems.com ha scritto:

'Musa:  Sfortunatamente io non sono in grado di effettuare questo confronto. A casa utilizzo esclusivamente macchine Unix (ed in maniera particolare Linux) e non dispongo di alcun pacchetto Photoshop. Al più potrei fare un confronto basandomi su quanto riportato nei testi, ma questo è proprio il massimo che posso fare. 'Musa:  In realtà non ci sono concorrenti per Lightwave e 3D-StudioMax in ambiente Linux. I modellizzatori utilizzabili sono piuttosto pochi ed ognuno ha diversi livelli di sofisticazione, nessuno di questi, però, può essere neanche lontanamente paragonato ad uno dei pacchetti menzionati. Una lista di modellizzatori può essere reperita nel mio la musa della grafica di giugno 1997. Si noti che non tutti i link ivi riportati sono ancora validi, alcuni dei modellizzatori sembrano scomparsi ed altri hanno cambiato indirizzo. Si può provare a fare una ricerca utilizzando il nome del pacchetto mediante freshmeat.net, qualora i link riportati sul numero di giugno della Musa non dovessero funzionare.

Un modellizzatore che non è riportato in quelle pagine ma che sembra abbastanza interessante è il Blender, pacchetto commerciale di cui solo recentemente è stato concesso l'utilizzo gratuito (senza codice sorgente) agli utenti Linux.  Spero di riuscire a passarlo in rassegna al più presto. Ad ogni modo l'ultima versione che ho provato non era documentata neanche quel tanto da consentirmi di comprendere come effettuare le operazioni più semplici. L'interfaccia è complessa e ricca di caratteristiche, ma non intuitiva per i neofiti della grafica 3D.

'Musa:  Vedrò cosa posso fare relativamente a questo argomento. Un pacchetto da tenere in considerazione è PVMPOV, si tratta di un patch (aggiornamento/correzioni) a POV-Ray in grado di consentire la rappresentazione distribuita attraverso diversi sistemi in una rete.  PVM  è la Macchina Parallela Virtuale, un pacchetto per l'elaborazione distribuita su macchine Unix. Va comunque notato che si tratta di un patch a POV-Ray per cui, per poterlo utilizzare, occorre innanzitutto sapere come si applica un patch ad un programma sorgente. 'Musa:  Ancora grazie per le idee. Vedrò quello che posso fare.
 

Come amministrare i propri scrit Perl:  utilizzando 'require'

Il mese scorso abbiamo esaminato come accedere ad un database mSQL mediante l'utilizzo di due moduli di script CGI realizzati in Perl:  CGI.pm e Msql.  Nell'esempio descritto si sono realizzate un paio di tabelle HTML ed al loro interno è stato disposto del testo memorizzato in un database mSQL.  È emerso che generare pagine HTML mediante l'uso di CGI.pm è piuttosto semplice e che l'uso del Perl con il modulo Msql consente di combinare le proprie pagine HTML con informazioni prelevate da un database senza eccessiva difficoltà.

Si dà il caso però che l'esempio realizzato fosse estremamente semplice, rispetto ad esempi più realistici che prevedono pagine dinamiche realizzate mediante l'utilizzo di database multipli, nelle quali, tra l'altro, compaiono spesso collegamenti ad altre pagine dinamiche che prevedono alcune, o anche tutte, le stesse informazioni provenienti dagli stessi database.  In altre parole, parte di ogni pagina contiene le stesse impostazioni HTML e gli stessi dati.  Ebbene, come si può ovviare all'inconveniente di veder duplicata la medesima frazione di codice HTML in ogni pagina?

Con le vecchie tecniche di svilupo di pagine statiche non c'era verso di includere zone di codice comune in più pagine, a meno di non utilizzare i frame; grazie a questi si è in grado di creare aree video del browser che costituiscono un'unica pagina HTML e che possono essere visualizzate insieme ad altre pagine web.  Con questo stratagemma si ha l'esigenza di dover manutenere soltanto una copia della pagina comune del frame.  Dal punto di vista di chi sviluppa Web, inoltre, quella raggiunta era la condizione ideale in quanto la probabilità di commettere errori, durante l'aggiornamento di porzioni identiche di codice HTML in diverse pagine, era praticamente annullata. Per di più ci si guadagnava in termini di tempo da dedicare al lavoro di aggiornamento delle pagine. Per i navigatori di Interent, però, quest'esperienza è stata fonte di notevole frustrazione in quanto non tutti i browser dell'epoca supportavano i frame. Ancora oggi la gestione dei frame, da parte dei due maggiori prodotti di browsing, Netscape Navigator e Microsoft Internet Explorer, non avviene alla stessa maniera. In pratica sebbene l'utilizzo dei frame possa condurre alla realizzazione di pagine web per certi versi sconvolgenti i frame stessi non si sono rivelati essere la soluzione ideale nel supporto di browser differenti, soprattutto quelli di prima generazione.

Fortunatamente questo problema oggi può essere superato grazie al nostro nuovo amico Perl.  La tecnica per l'inclusione in più pagine di formati e dati comuni è relativamente semplice, anche se la gestione delle aree comuni delle pagine richiede qualche piccola riflessione aggiuntiva. Vediamo innanzitutto come includere del codice Perl proveniente da diversi file all'interno dello script principale, sempre in Perl.

In Perl una porzione di codice da condividere o una routine devono essere scritti in un modulo, un vero e proprio file separato di codice perl. Ogni modulo può essere incluso in un punto qualsiasi di uno script perl; normalmente (per default) il Perl controlla una speciale variabile denominata @INC per determinare dove rintracciare questi moduli. Sempre per default l'area di lavoro corrente "." viene riportata nella variabile @INC come l'ultima area all'interno della quale andare a cercare i moduli. Nota@INC è una variabile di tipo lista, ovvero un vettore di stringhe nel quale ogni stringa contiene il nome di un'area all'interno della quale cercare moduli.

Per includere un modulo nel proprio script principale cgi in Perl si deve utilizzare la funzione require, la cui sintassi è molto semplice:

Questa funzione dice all'interprete Perl di includere nel file corrente il modulo specificato, ma solo se non lo si sia già incluso precedentemente, in tal modo si può essere certi di non aver problemi di alcun tipo anche se si provvede a richiamare un modulo più volte.

Una volta che il modulo sia stato incluso nello script il codice di cui è costituito va in esecuzione nel punto in cui è avvenuta l'inclusione. Si può, se lo si desidera, scrivere moduli che si vuole poter mandare in esecuzione e quindi utilizzare variabili con una visibilità globale (in effetti visibili sia al programma originario che al modulo incluso).  In effetti ha più senso scrivere il modulo come una subroutine ed effettuare un'operazione di inclusione; in tal modo si potranno ancora utilizzare variabili a visibilità globale ma ci si garantirà che il codice che lo costituisce vada in esecuzione soltanto se lo si richiede esplicitamente.  Lo si potrà eseguire anche più di una volta se lo si desidera.

Ma come si fa a realizzare una subroutine? Basta inserire il codice all'interno del seguente costrutto:

L'1 alla fine è importante - i moduli devono contenerlo, altrimenti la funzione chiamante andrà in errore. Si chiami quindi la subroutine mediante il seguente comando: Il simbolo & è importante - si deve sempre premettere alle chiamate di subroutine.  Sebbene tutto possa funzionare bene anche se non si premette l'&, in quest'ultimo caso i risultati possono essere imprevedibili (almeno così suggerisce la sintassi del Perl).

Se si vogliono passare dei parametri alla subroutine lo si può fare mediante una lista. Ad esempio:

Per accedere agli argomenti a riga di comando della subroutine si può fare qualcosa di molto simile a quanto riportato di seguito:
<continua>

 
Musings

libgr - Una collezione di librerie per immagini

Molti utenti dei pacchetti grafici che vengono presentati su queste pagine avranno trovato che questi programmi dipendono da un certo numero di librerie specifiche per il formato di file utilizzato. Ad esempio il Gimp richiede le librerie per JPEG, PNG, PNM, MPEG ed XPM per poter gestire i file immagine nei formati corrispondenti.  Il Gimp non sa come leggere direttamente questi file - esso dipende dalle librerie dei vari tipi di immagine per l'assistenza nel leggere e scrivere file in questi formati.  Poiché il Gimp (ma anche molto altro software è nelle stesse conzioni) non prevede queste librerie all'interno del pacchetto in distribuzione con i sorgenti, gli utenti che intendono utilizzarlo devono procurarsi autonomamente le librerie ed installarle.

Usualmente gli utenti provvedono a scaricare librerie di un tipo ben preciso ed a compilarle separatamente. Ciascuno dei formati appena menzionati, con l'aggiunta di qualche altro, è sicuramente disponibile in qualche anfrattoo della rete, in formato sorgente. La maggior parte di essi è raggiungibile in qualche sottoarea degli archivi Sunsite, sfortunatamente, però, non tutte queste librerie specifiche per i vari tipi di file vengono compilate in maniera indolore in ambiente Linux. La mail list degli utenti Gimp è spesso affollata di messaggi con domande relative a come procurarsi la libreria JPEG ed a come realizzare delle librerie condivise. Normalmente questa libreria non viene compilata in modo da realizzare una libreria condivisa ELF su Linux. Si dà il caso infatti che anche con la migliore e più completa delle configurazioni il risultato che si ottiene non va oltre una libreria condivisa a.out. Serve una soluzione migliore.

Entriamo in libgr.  Si tratta di una collezione di librerie di immagini impachettate tutte insieme, organizzata in maniera da essere agevolmente compilata ed installata su sistemi Linux. Il pacchetto consente di ottenere automaticamente sia librerie condivise ELF che librerie statiche. Il software viene gestito ed aggiornato da Neal Becker (neal@ctd.comsat.com) e poggia sul lavoro svolto originariamente da Rob Hooft (hooft@EMBL-Heidelberg.DE).  L'ultima versione del pacchetto libgr, la 2.0.13, può essere reperita presso  ftp.ctd.comsat.com:/pub/linux/ELF

Libgr contiene i seguenti insiemi di librerie grafiche:

  • fbm
  • jpeg
  • pbm
  • pgm
  • pnm
  • ppm
  • png
  • rle
  • tiff
Contiene anche la libreria di compressione zlib utilizzata specificatamente dalle librerie grafiche TIFF e PNG.  Questa può essere utilizzata, anche se non ne sono proprio certo, dalla libreria FBM per gestire (al minimo) il formato GIF.

FBM è la libreria di manipolazione pixmap fuzzy (Fuzzy Pixmap Manipulation library).  Questo pacchetto è collegato, anche se non ne è parte integrante, al pacchetto PBMPlus di Jef Poskazner.  Questa libreria può leggere e scrivere un certo numero di tipi di file grafici tra i quali:

  • Rasterfile Sun 
  • File GIF 
  • Amiga IFF 
  • PCX 
  • PBM 
  • File Face (formato CMU format per file ad 1 bit)
  • FBM 
  • File Utah RLE (from the Utah Raster Toolkit)
Questa libreria supporta anche un certo numero di operazioni tra immagini, tutte descritte nel file di testo Features contenuto nell'area fbm.  Come nel caso di PBM, FBM è un formato progettato appositamente dall'autore della libreria FBM per gestire immagini amministrate da questa libreria (nonostante questo formato possa essere scritto anche sotto forma di un file).

JPEG è attualmente uno standard mediante il quale viene definita una serie di codifiche per immagini rasterizzate con tutta la gamma dei colori (full-color) e con toni continui (continuous-tone) 1.  Il software di questa libreria, che è essenzialmente lo stesso che viene fornito con il pacchetto individuale della libreria JPEG che si trova nel sito ftp del Gimp, proviene dal gruppo indipendente JPEG e per quanto ne so supporta in pieno i canoni e le regole JPEG. Questo formato è molto comune su Web in quanto si tratta di uno dei formati riportati nel WC3 al momento della definizione delle prime specifiche HTML delle immagini Web.

I formati PBM, PGM, PNM, and PPM vengono gestiti tutti dal software che costituisce i pacchetti NetPBM/PBMPlus.  Questi formati vengono spesso utilizzati come formati intermedi durante le fasi di elaborazione da parte di NetPBM/PBMPlus. Sebbene queste librerie prevedano la possibilità di salvare file di immagini in questi formati non mi è mai capitato di vederlo fare in maniera sistematica. Ciò è probabilmente dovuto al fatto che i file risultanti sono piuttosto grandi e che non vengono supportati in ambienti non-Unix. Questi formati sono abbondantemente supportati, però, da software grafico in ambiente Unix.

La libreria PNG supporta il formato relativamente recente PNG (Portable Network Graphics), progettato, almeno in parte per, rimpiazzare il formato GIF il quale aveva sia limitazioni dipendenti dalla licenza di utilizzo che limitazioni di formato. Il formato PNG è ora supportato ufficialmente dal WC3 anche se né Netscape né MSIE parlano mai del supporto a questo formato di immagini. Addirittura non so neanche se una o entrambe le società supportino il formato PNG.

RLE è un formato grafico (Run Length Encoding) dell'Università dello Utah progettato per immagini rasterizzate multilivello indipendenti da ogni tipo di unità grafica. Sebbene tale formato sia ancora utilizzato attualmente, è abbastanza inusuale trovarlo referenziato in pacchetti come il Gimp (sebbene il Gimp supporti tale formato) o con motori di rappresentazione 3D quali sono BMRT o POV-Ray.
 
 

- all'inizio della colonna accanto -

Approfondimenti ...
Per finire troviamo la libreria TIFF, un insieme di routine per il supporto alla lettura ed alla scrittura di file TIFF. I file TIFF sono molto popolari a causa dell'esteso supporto di cui godono sulle più diverse piattaforme (Mac, MS e Unix) e dell'alta qualità delle immagini corrispondenti. Per converso le immagini di questo formato tendono ad essere estremamente grandi poiché non viene utilizzato alcun tipo di compressione nei loro confronti.

Come si compila il pacchetto

Una volta che ci sia procurato il pacchetto libgr lo si può scompattare mediante l'utilizzo del comando seguente: 
    % tar xvzf libgr-2.0.13.tar.gz
In tal modo verrà creata un'area denominata libgr-2.0.13 all'interno della quale si troveranno delle aree specifiche per ogni formato, i vari Makefile ed un certo numero di file di testo. Nel file di testo INSTALL si troveranno istruzioni su come compilare il software, il che in ambiente Linux è un processo che si realizza facilmente scrivendo:
    % make most
con tale comando tutto il software verrà compilato ma non verrà installato. Io raccomando di seguire questa procedura in modo da potersi garantire che il processo di compilazione vada in porto per tutte le sottoaree, prima di provare ad installare alcunché. Se il processo di compilazione fallisce e si prova ad installare il pacchetto ci si ritroverà, infatti, con una gran confusione, non sapendo ciò che è stato installato correttamente e ciò che non lo è stato. Al termine del processo di compilazione si controllino tutte le sottoaree per vedere se i file lib*.so - le librerie condivise - sono state create. Se tutto appare in ordine si scriva:
    % make install
Con questo comando verranno installate le librerie. Si tenga presente che sono disponibili anche altre opzioni per la compilazione e l'installazione del pacchetto stesso; per sapere di più su tali opzioni si legga il file INSTALL nell'area di più alto livello in cui si trova il software.

A questo punto si è pronti ad utilizzare le librerie con ogni tipo di pacchetto, Gimp incluso.

Perché utilizzare libgr in luogo delle singole librerie? 

Libgr fornisce il supporto per un vasto quanto variegato insieme di formati di file di immagini anche se non proprio per tutti i formati più comuni e popolari. Ma allora, perché utilizzarlo invece delle singole librerie dei vari tipi di formato? Un primo motivo è sicuramente la convenienza:  invece di doversi procurare una miriade di pacchetti basta reperirne uno solo. In secondo luogo, come accennato in precedenza, non tutti i singoli pacchetti sono predisposti per fornire, in ambiente Linux, una volta compilati, le librerie condivise ELF, libgr è stata progettata, invece, per fornire specificatamente questo tipo di librerie.

Quali sono le librerie non incluse in libgr e che si potrebbe aver l'esigenza di dovercisi procurarsi? Una è sicuramente quella legata al formato piuttosto diffuso in ambito X Window: XPM (libgr non lo supporta per cui ci si deve procurare separatamente questa libreria). Fortunatamente la maggior parte delle distribuzioni Linux viene distribuita con questa libreria precompilata e già accessibile durante l'installazione del sistema operativo.

Libgr non supporta neanche alcun tipo di formato di file con animazioni, per cui se si devono leggere o scrivere file nei formati MPEG, FLI o FLC, ad esempio, ci si dovrà procurare le singole librerie ed installarle individualmente.

Avvertenze

Un problema secondario connesso all'utilizzo della libreria libgr viene dall'utilizzo del pacchetto zlib in essa contenuto.  Secondo quanto riportato nella documentazione libgr (nel file di testo NEWS) il numero della versione di zlib ad un certo punto se n'è andato per i fatti suoi; in altre parole è possibile che la versione di zlib installata sia piuttosto vecchia anche se il suo numero di versione è più alto di quello riportato in libgr. Come risolvere questo problema è un bel dilemma, ma per quanto mi riguarda ritengo abbia senso esclusivamente installare il zlib che viene fornito con libgr in quanto è risaputo che funziona egregiamente con le altre librerie di immagini contenute nel pacchetto libgr. Se ci si riconosce in questa logica allora si vorrà innanzitutto rimuovere la vecchia versione di zlib prima di dare il comando make install per l'installazione di libgr.

Riassunto

Libgr non è la panacea che risolve il problema della gestione di tutti i possibili formati di file di immagini, offre però dei vantaggi in più agli utenti Linux in quanto consente loro di utilizzare un ambiente di compilazione ed installazione specifico e di facile uso. Poiché le librerie di cui è costituito il pacchetto libgr non cambiano tanto facilmente col passare del tempo, un buon amministratore di sistema consiglierebbe di cominciare con quest'unico pacchetto piuttosto che impelagarsi con gli aggiornamenti di una miriade di programmi per la gestione dei diversi formati di immagini. Se poi ci si vuole misurare con la compilazione del Gimp che richiede molte librerie di immagini, libgr è sicuramente la soluzione più semplice e che consente di arrivare all'obiettivo prefissato con la minore perdita di tempo e con il minor numero di insuccessi.
 


 

1.  C. Wayne Brown and Barry J. Shepherd, Graphics File Formats:  Reference and Guide, (Guida ai formati dei file grafici) Prentice Hall/Manning, 1995. 
Resources
I riferimenti che seguono rappresentano esclusivamente il punto di partenza per l'acquisizione di ulteriori informazioni sulla computer grafica e, più in generale, sulla multimedialiltà, per sistemi Linux.  Se disponete di informazioni specifiche su qualche applicazione e me ne mettete al corrente le aggiungerò alle mie pagine o, se lo preferite, potrete contattare qualche altro amministratore di siti web e prendere accordi con lui.  Prenderò in considerazione la possibilità di aggiungere qualche altro riferimento di carattere generale qui di seguito, ma informazioni spedifiche su applicazioni o siti troveranno migliore collocazione nei riferimenti di carattere generale riportati di seguito piuttosto che qui.
 
Periodici Online e fonti di novità 
C|Net Tech News 
Linux Weekly News 
Slashdot.org 
Digital Video
Computer Graphics World

Siti Web di carattere generales 
mini-Howto della grafica per Linux 
Programmi grafici in Unix 
La pagina Sound/Midi per Linux

Alcune delle Mailing List e dei Newsgroup che tengo sotto controllo e dai quali traggo la maggior parte delle informazioni che riporto qui 
Le liste degli utenti e sviluppatori Gimp
comp.graphics.rendering.raytracing 
comp.graphics.rendering.renderman 
comp.graphics.api.opengl 
comp.os.linux.announce 

Sviluppi Futuri

Per il prossimo mese:

Fatemi sapere di cosa volete che mi occupi!


Alla Home Page

Per l'articolo originale: © 1998 Michael J. Hammel - Pubblicato sul n. 32 della Linux Gazette
Per l'edizione italiana: © 1998 A. Cartelli - Pubblicato sul n. 8 anno II di LGEI, cura di un gruppo di volontari.