3. Začetek programiranja s knjižnico PEXlib

3.1. Risanje slike s PEXlib

Pred začetkom programiranja je potrebno opraviti določene korake in nastavitve, ki so za vse programe s PEX enaki ali vsaj podobni.

3.1.1. Prvih šest korakov potrebnih za risanje s PEXlib

Koraki so sledeči:

1.) Odpiranje povezave z X strežnikom
2.) Zaznamovanje (initialize) PEXlib
3.) Določitev najbojše vidljivosti in barvne palete
4.) Kreiranje X okna
5.) Kreiranje PEX renderer-ja
6.) Risanje slike v X okno

Koraki so prikazani na sliki 13. Vidimo, da je prvih pet korakov le priprava na prikazovanje. Ti so lahko enaki v vseh programih. Jedro PEXlib programa je šesti korak, kjer so podani primitivi in lastnosti in se slika nariše.

3.1.2. Korak 1: odprtje povezave z X strežnikom

To je korak, ki je potreben v programih s PEXlib in v vseh drugih X programih. Z odpiranjem povezave se kreira povezovalni kanal med programom in X strežnikom. Izvede se s klicanjem funkcije iz Xlib XOpenDisplay, ki vrne kazalec na zaslon. Ta kazalec uporabljamo v vseh funkcijah Xlib in PEXlib ob klicih na strežnik.

3.1.3. Korak 2: zaznamovanje (initialize) PEXlib-a

PEXlib mora biti nakazan (zaznamovan) za vsak zaslon, ki ga bomo uporabili. Dokler ne izvedemo tega zaznamovanja ne moremo uspešno klicati funkcij iz PEXlib. Zaznamovanje se izvrši s funkcijo PEXInitialize, ki preveri ali obstaja razširitev PEX na strežniku. Funkcija potem zaznamuje notranje spremenljivke PEXlib, ki se uporabljajo pri komunikaciji s strežnikom in vrne uporabno informacijo o posamezni razširitvi PEX.

3.1.4. Korak 3: določitev najboljše vidljivosti in barvne palete

Različne barvne naprave podpirajo več različnih razredov vidljivosti, čeprav posamezni med njimi niso najboljši za določeno napravo. Primer je 8 bitna pseudo - color naprava, ki podpira DirectColor ali TrueColor razrede vidljivosti, toda dovoljuje uporabo majhnega števila različnih barv. PseudoColor vidljivost na isti napravi pa omogoča 256 barv. V skoraj vseh primerih je najbolj naravna vidljivost na napravi tista, ki podpira največ barv. Tako je priporočljiva izbrana vidljivost tista, ki omogoča največ barv.

Z določitvijo vidljivosti ob kreiranju okna nakažemo zahtevane barvne sposobnosti. Vidljivost lahko nastavljamo s funkcijo XGetVisualInfo iz Xlib.

Slika 13. Koraki potrebni za risanje s PEX

Barvne palete

Vsakemu oknu X so pridružene barvne palete X. Barvna paleta vsebuje vse barve, ki so v določenemu oknu lahko prikazane. Okna si lahko barvne palete delijo med seboj, tako da imajo različna okna skupne barvne palete. Ponavadi si okno deli barvno paleto z izvornim oknom (root window). Navadno so programi PEXlib bolj zahtevni glede barv kot navadni X programi. V teh primerih moramo biti pri izbiri barvnih palet bolj zahtevni. Barvna paleta izvornega okna (root window) ponavadi ne zadosti našim zahtevam.

Grafični programi pogosto zahtevajo veliko barv. Čeprav določenemu objektu priredimo eno samo barvo, je potrebno več barv, da ta predmet prikažemo glede na določitve o osvetlitvi in senčenju. Barvna paleta okna mora vsebovati barve in različne odtenke za senčenje. Pri kreiranju barvne palete uporabimo več funkcij iz Xlib. Ko bomo kasneje kreirali okno, mu bomo pridružili to barvno paleto.

Barvna paleta in vidljivost sta tesno povezani. Ko je barvna paleta kreirana, je kreirana za določeno vidljivost in se lahko deli le med okni, ki tako vidljivost uporabljajo.

Pri izbiri barvnih palet imamo dve možnosti:

- lahko kreiramo novo barvno paleto in jo pridružimo nizu barvnih odtenkov imenovanih barvna skala (gamut).
- v drugem primeru pa uporabimo eno od standardnih barvnih palet, ki je pridružena barvni skali.

Ponavadi je bolje izbirati med standardnimi barvnimi paletami. Te so kreirane s strani strežnika ali z window manager-jem ob zagonu. Primerne standardne barvne palete lahko določimo s povpraševanjem po možni paleti v izvornem oknu (root window) na zaslonu. To naredimo s funkcijo XGetRGBColormaps. V nadaljevanju izberemo tisto, ki je v skladu z izbrano vidljivostjo (visual).

3.1.5. Korak 4: kreiranje okna

Po določitvi vidljivosti in barvne palete, kličemo funkciji: XCreateWindow za kreiranje okna in XMapWindow za načrtovanje okna in ga tako prikažemo na zaslon.

3.1.6. Korak 5: kreiranje prikazovalnika PEX

Prikazovalnik (renderer) je jedro PEX-a. Predno lahko karkoli narišemo, ga moramo kreirati. To naredimo s tem, da mu določimo čas kreiranja in lastnosti, ki se razlikujejo od prvotno nastavljenih.

Ena od lastnosti, ki jo moramo spremeniti je povezana z usklajevanjem barv. Prikazovalnik mora vedeti nekaj detajlov o barvni paleti. Vedeti mora kako je urejena barvna skala. Ta informacija je del standardne barvne palete, ki jo vrne prej omenjena funkcija XGetRGBColor, če smo izbrali standardno barvno paleto. Zdaj se ta informacija shrani v prikazovalnik.

3.1.7. Korak 6: risanje slike v okno

Ko je prikazovalnik kreiran in je okno prikazano na zaslonu, začnemo pošiljati izhodne ukaze (podatki o primitivih in lastnosti primitivov) prikazovalniku, ki jih prikaže na zaslon.