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.