Grafika a GNOME-ban

Mi az a GTK+?

A GTK+ a "Gimp Toolkit". Eredetileg a GTK+ a Gimp projekt része volt, de kinőtte azt, és remek általános widget készletté fejlődött. Többet a GTK+ weblapján olvashatsz: http://www.gtk.org.

Milyen szerepet játszik a GTK+ a GNOME-ban?

A GTK+ az a felület, amin keresztül a felhasználók az alkalmazásokat használják. A GTK+ olyan a GNOME-nak, mint a Motif a CDE-nek, a Qt a KDE-nek vagy a névtelen-widget-készlet a Win32-nek.

Milyen nyelveket támogat a GTK+?

Kismillió nyelven írhatsz GTK+-os alkalmazásokat. A kedvenc GyIK íród a következő nyelvekről tud:

C (eredeti)
C++
Objective C
Python
Perl 5
Scheme (Guile)
TOM
Gwydion Dylan
Ada95
Pike
Pascal (Free Pascal Compiler)

Ha más nyelvek is vannak, szólj és felvesszük azokat is erre a listára. (lásd Hogyan érem el a FAQ karbantartóját.)

Természetesen, ha nagyon lelkes vagy, írhatsz támogatást új nyelvekhez is. Megjegyezném, hogy a Scheme csatolásban az API-nak egy formális reprezentációja található, tehát ha új csatolásokon szeretnél dolgozni, érdemes itt kezdeni.

Ha már ezt így leírtam, elgondolkodtam azon, hogy nem tudnánk-e esetleg a CORBA segítségével elvágni ezt a gordiuszi csomót. Ha az ORBit fejlesztői a lokális CORBA függvény-hívásokat olyan gyorsakká tudják tenni, mint az osztott programkönyvtárak függvény-hívásait, akkor a GTK-t is lehetne CORBA-sítani, és az új nyelvi csatolásokat az ORBit-hoz megírni, nem? Tudom, hogy hagyományosan azt mondják, hogy a CORBA túl nehézkes az olyan nagy volumenű cuccokhoz, mint az X függvényhívások. Hé, ne kövezzetek meg, ha hülyeségeket írok: azért tartom én karban ezt a FAQ-t, mert nem tudok programozni!

Mi az az imlib?

A GTK mellett a GNOME az imlib-et használja. A imlib egy X-es képkezelő programkönyvtár, amely a programozók számára transzparens módon támogat számos képformátumot. Az imlib használhat külső konvertáló programokat is, mint pl. az ImageMagick vagy a pmbplus, tehát ha létezik konvertáló program egy adott képformátumhoz, akkor szinte biztos, hogy használhatsz ilyet az alkalmazásodban! Az imlib támogat még ezen felül több színmélységet, a 24 bitestől az 1 bites monokrómig, mindezt szintén a programozó számára teljesen átlátszó módon, valamint intelligensen allokálja a színeket és automatikus színszórással (dithering) hozza ki a lehető legtöbbet a számítógépe, grafikájából. Mindenki, aki próbált már X alatt ilyen alkalmazást írni, vagy csak el kellett viselnie a privát színtérképek miatt furcsa színekben villogó alkalmazásokat, szeretni fogja ezt a funkciót.

Az imlib iránt érdeklődők vethetnek egy pillantást a http://www.labs.redhat.com/imlib weblapra.

Mi a helyzet a témákkal?

A témákkal megváltoztathatod a GTK+-os alkalmazásaid kinézetét, újrafordításuk nélkül. A használatukkal egy csapásra megváltoztathatod az adott "display"-en futó összes GTK+-os alkalmazás kinézetét.

A GTK+-os témának igazából két része van, az engine és a konfiguráció. Az engine egy speciálisan a témákhoz írt osztott programkönyvtár, ez határozza meg, hogy az X hogyan jelenítse meg a különböző widget-eket (az ablakokon vagy ablakokban található gombokat, gördülősávokat, menüket). A konfigurációban vannak a színek, betűtípusok, a használt engine neve, esetleg a képek, amiket a téma használ. A kettő együtt alkotja a témát, ez adja a GTK+-nak a kaméleon jellegét.

Ha kíváncsi vagy néhány GTK+-os témázott alkalmazás kinézetére, vess egy pillantást a: http://gtk.themes.org lapra.

Hogyan bírom működésre a témákat?

Először kell egy friss GTK+. Az 1.2.6-os verzió most az új, azt ajánlanám, de jó már az 1.2.0-ás is. Ez után kellenek a témák. Sok témát találhatsz a gtk-emgine modulban. Még több érhető el a http://gtk.themes.org weblapon.

Sok téma tartalmaz engine-t. Az engine-t le kell fordítani és telepíteni. A gtk-engine-el ugyanúgy kell eljárni mint bármely más csomaggal. Ha a webkiszolgálóról töltöd le a témát, nézd meg a dokumentációját. Sok a weben található téma csupán a konfigurációban tér el egymástól és ugyanazt az engine-t használja, gyakran a pixmap engine-t a gtk-engine modulból.

Ha sikerül feltelepíteni a témát, elérheted és megváltoztathatod a GNOME Vezérlőpulján keresztül a Munkaasztal -> Témaválasztónál. A témaválasztóval válogathatsz a feltelepített témák közül, láthatsz egy előnézetet, és ha 1.04-esnél újabb verziód van, kiválaszthatod a használt betűtípust is.

Mi az az OpenGL?

Az OpenGL a Silicon Graphics 2D és 3D megjelenítő API-ja, ez lett az idő során az elfogadott szabvány. Arról van lényegében szó, hogy veszel egy nézőpontot a 3D-s térben és csinálsz egy 2D-s képet, amit meg tudsz jeleníteni a képernyőn. Idézet az SGI GyIK-jéből:

Az OpenGL egy kizárólag megjelenítésre szolgáló, gyártó-független API, ami 2- és 3D-s grafikus funkciókat nyújt mint a modellezés, a transzformációk, színek, megvilágítás, árnyéksimítás, valamint összetettebb funkciókat, mint a mintafelhúzás, NURBS, köd, alfa keverés és a mozgás elmosása. Az OpenGL működik azonnali (immediate) és visszatartott (retained - display list) grafikus módban is.

A GNOME az OpenGL Mesa nevű implementációját használja. A Mesa nem maga az OpenGL, hanem egy Free Software projekt, ami nem esett át az OpenGL márkanév licencelési procedúrája alatt, de hűen tükrözi az OpenGL API-t. A Mesa nem OpenGL, ahogyan a GNU/Linux és a FreeBSD sem Unix(tm).

Mi van a "Drag and Drop" támogatással?

A GNOME jelenleg az Xde "Drag and Drop" protokollt használja. A XDE-t lassan helyettesíti az X Window "Drag and Drop" Protokoll, ez a különböző alkalmazások együttműködését hivatott elősegíteni. Többet a következő címen tudhatsz meg: http://www.cco.caltech.edu/~jafl/xdnd/.