Il mio primo linguaggio di
programmazione è stato il BASIC, l'unico disponibile sul Sinclair
ZX Spectrum. Mi sono dedicato poi all'assembler Z80.
Quando sono passato ai PC, ho proseguito con il GwBasic e poi il
QuickBasic. In tutti questi dialetti del Basic, la grafica era molto
diversa, ma sempre presente.
Ho
imparato a programmare in C negli anni, prima per hobby e poi a scuola, dedicandomi sempre e solo a
funzioni algoritmiche, soprattutto perché la libreria standard
del C purtroppo non contempla funzioni di grafica e nemmeno ha
funzioni per la gestione delle finestre. Recentemente ho promosso anche una petizione per questo.
Quando Microsoft presentò Windows, già con la
versione 1, ma poi la 3.1, i programmi in QBasic giravano in finestra e
non mi preoccupai. Il C lo stavo ancora imparando e non mi resi conto
che gli mancava la grafica. Del resto il C è nato per la
programmazione di sistema, dove servono le prestazioni, per cui la
grafica è all'opposto, sempre la parte lenta.
Con il rilascio di Win95, WinNT4 e poi di Linux, abbandonai
sempre più il Basic e mi concentrai solo sul C per la potenza,
le prestazioni che offriva e per via dei molti limiti nella gestione
della memoria del QuickBasic. Subito dopo ho cominciato ad apprezzare
una
grande caratteristica unica del C, la sua portabilità tra
tutte le architetture, indipendenza dal sistema operativo e dal
microprocessore (x86,
ppc, sparc, alpha, ...) usato sulla macchina. Ricordo di aver anche comprato a quell'epoca una
copia di VisualBasic3 in licenza studenti, ma non l'ho mai nemmeno installata.
Su DOS e WinNT ho sempre usato il compilatore djgpp, un porting
del gcc per MS-DOS. Su Linux il gcc è installato di serie. Per motivi di
lavoro poi il gcc è diventato il compilatore di fiducia anche su
altri sistemi operativi come HPUX, Solaris, OSF, VxWorks, ecc... ma
sempre nella parte algoritmica o CLI, mai GUI, dal momento che sviluppavo
driver per VxWorks e Linux.
In anni recenti su 2000/XP ho sempre usato il porting del gcc
compreso in Cygwin, che fornisce un layer di emulazione di un sistema
GNU Posix completo anche su piattaforma Win32 che ne sarebbe sprovvista.
Intorno al 2005 ho cominciato a sentire la necessità di
fare dei grafici per alcune funzioni matematiche, o di fare dei
semplici disegni con il linguaggio C.
Abituato com'ero a poter compilare per qualsiasi architettura
tutti i miei programmi C, mi pareva troppo limitativo imparare qualcosa
di mono piattaforma. Ho visto che c'erano diverse librerie grafiche per
il disegno di linee, punti e grafici matematici, ma tutte unicamente
per piattaforme Unix, oppure c'era la libreria GDI di Microsoft (usata dal VisualBasic e VisualC) ma solo per Windows.
In pratica cercavo una libreria C crossplatform per il disegno e
la realizzazione di applicazioni GUI. Ho cominciato a cercare le
soluzioni disponibili. Ho certamente escluso le GDI e le DirectX perché funzionanti solo su
Windows. Una volta imparate, mi sarei trovato con una tool spuntato, da
usare su una sola piattaforma, inutile per il mio lavoro, e magari se
in futuro Windows sparirà, inutile anche come conoscenza personale.
Nel mondo Unix esistevano due soluzioni mature: le librerie QT
di KDE portate avanti dalla Trolltech, e le GTK di GNOME portate avanti
dalla comunità GNU. Di entrambe esiste il porting per Win32 e
per MacOS, ma quello delle QT è in licenza commerciale a pagamento.
Un'altra soluzione valida sono le WxWidgets, in licenza open su tutte le
piattaforme. Ho cercato di capire quale delle tre soluzioni fosse
meglio per me, quale avesse maggiori possibilità di
sopravvivere, quale fosse migliore.
Cercando in giro ho notato che sono molto di più i
progetti grossi, famosi e crossplatform (Mozilla, Gimp,
Ethereal/Wireshark,
Gaim/Pidgin, Inkscape, ...) scritti per le GTK rispetto alle altre due librerie,
probabilmente perché GNOME è portato avanti dalla
comunità GNU che vanta tantissimi sviluppatori, che vogliono prendere parte al processo decisionale. Inoltre GTK
è nativa in C, mentre le altre due sono per il C++ che conosco
poco. Mi sono dedicato allora a studiare il tutorial delle GTK.
Imparati i rudimenti e i concetti base, si trattava di provare a
compilare. A quell'epoca a casa tenevo in esecuzione principalmente
Windows, e solo occasionalmente usavo Linux, soprattutto quando dovevo
programmare, per via del miglior supporto offerto agli sviluppatori.
Cygwin in tutte queste occasioni si è rivelato molto valido
sopperendo alle carenze di Win32. Cygwin fornisce di serie anche le GTK
per cui era abbastanza facile provare. Quando si è trattato di
fare le finestre del tutorial tutto bene. Con applicativi anche un po'
più complessi, realizzati con il GUI rapid developer Glade,
ancora
tutto bene, ma, tornando all'esigenza fondamentale di disegnare punti,
linee e grafici di funzioni matematiche, si trattava di usare le
funzioni di base su cui sono basate le GTK, le GDK.
In quel periodo le
GTK ultima versione erano le 2.8, che non si basavano più per il
disegno 2D e il rendering dei font unicamente su GDK, ma dalla 2.6 alla
2.8 erano migrate alla libreria grafica crossplatform Cairo. Fortunatamente in quel periodo ho conosciuto
Luca, un collega del mio carissimo compagno di università Marco,
che mi ha fortemente consigliato di imparare le Cairo per disegnare
linee e punti, dato che l'orientamento della comunità di GTK e
GNOME ormai era di usarle per tutto al posto di GDK.
Purtroppo Cygwin fornisce fino a tutto il 2007 le GTK2.6 che non
si basano su Cairo. Si trattava quindi di integrare le ultime GTK in
Cygwin. Ho cercato un po' in rete ma non ho trovato guide apposite.
Chi usa Linux troverà banale compilare applicazioni GTK per
Linux perché compilatori, librerie e ambiente di generazione sono forniti di serie.
Su Windows invece niente è scontato perché, tanto per
cominciare, il compilatore non è compreso nel prezzo. In
rete inoltre trovate guide passo passo alla compilazione delle GTK su
Linux. E troverete anche guide su come compilare le ultime GTK usando
l'altro porting per Win32 del gcc, il MinGW/Msys, ma niente per Cygwin.
Dopo un po di prove ho trovato la soluzione e sono riuscito a compilare
le GTK2.12 con Cygwin, quindi ecco questa guida.
From 20/10/1999 - 31/03/2000 the counter showed 770 visits, but it was resetted from the provider (so add 770 ...)
Copyright (C) 2006,2007,2008 Valerio Messina http://users.iol.it/efa
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts
and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License" or
can be downloaded at: http://www.gnu.org/licenses/fdl.html