Monimutkainen GEM??

GEM eli Graphics Environment Manager on  ympäristö, jossa
                     
ST-tietokoneen on tarkoitus toimia. Ja hyvinhän se
                     
toimii, kuten olet havainnut lukuisista GEM-pohjaisista ohjelmista.
                     
Silti on säilynyt tiettyjä ennakkoluuloja sitä kohtaan.
                     
GEM tuntuu monimutkaiselta ja vaikeaselkoiselta.
                     
                     
                     
Moni ohjelmointia harrastava tekee mieluummin omia rutiineja
                     
hiiren vahtimiseksi tai ikkunoiden tulostamiseksi kuin 
                     
ryhtyy opettelemaan GEMin valmiiden rutiinien käyttöä.
                     
                     
                     
Yksi syy siihen on varmasti kirjallisuuden vaikeaselkoisuus.
                     
Nyt tähän tulee apua, sillä itse Tim Oren, joka oli mukana
                     
Digital Research - yhtiössä tekemässä GEM-ympäristöä,
                     
selvittää sen osien käyttöä.
                     
PD-levy 69 sisältää artikkelisarjan ensimmäisen puoliskon.
                     
Hanki itsellesi tämä levy ennen kuin hylkäät GEM:n omien
                     
rakenteidesi vuoksi. Siten voit olla varma, että ohjelmasi toimii
                     
kunnolla myös tulevaisuudessa uusien laitekokoonpanojen kanssa.
                     
                     
                     
Otetaan yksi esimerkki:
                     
                     
                     
AES:n keskeisiä rutiineja on MULTIPLE EVENT.
                     
Se vahtii samanaikaisesti kahta aluetta kuvaruudussa siltä
                     
varalta, että hiiriosoitin kävisi näissä sekä näppäimistöä,
                     
hiirikorvia ja laskee tarpeen vaatiessa millisekunteja.
                     
                     
                     
Sen käyttöön on varattava kaksi muistialuetta:
                     
event-puskuri (32 tavua), jossa kaksi ensimmäiset sisältävät
                     
bitti-vektorin siitä, millaisia tapahtumia halutaan kontrolloida.
                     
                     
                     
0-bitti: näppäimistö vahditaan
                     
1-bitti: hiirikorvat
                     
2-bitti: eka alue
                     
3-bitti: toka alue
                     
4-bitti: viesti lähtee viesti-puskuriin
                     
5-bitti: odota
                     
                     
                     
Sijoittamalla event-puskurin alkuun %011110 se tarkoittaa:
                     
näppiksestä ei väliä, vahdi ilman odotusta sekä hiirikorvat että
                     
molemmat alueet ja lähetä viesti message-puskuriin kun jotain
                     
tapahtuu!
                     
                     
                     
Event-puskurin toinen sana (2. ja 3. tavu) sisältää luvun, kuinka
                     
monta hiiriklikkausta vaaditaan käyttäjältä.
                     
Kolmas sana sanoo, mitkä hiirinäppäimet ovat aktiiveja (0 = ei kumpaa-
                     
kaan, 1 = vasen, 2 = oikea, 3 = molemmat)
                     
Neljäs sana kertoo GEM:lle, mikä tila on ratkaiseva: 1=korva alhaalla,
                     
0=korva ylhäällä
                     
Viides sana: 0= odota että hiiri tulee eka alueelle
                     
             1= odota kunnes hiiri lähtee siitä
                     
                     
                     
Kuudes sana: eka alueen vasemman yläkulman x-arvo (pikselinä)
                     
7.                 "       "         "     y-arvo
                     
8.                 "    alueen leveys  x-pikseleinä (w)
                     
9.                 "    alueen korkeus y-pikselinä  (h)
                     
                
                     
10. sana     0= odota kunnes hiiri tulee toka alueelle
                     
             1= odota kunnes se lähtee siitä
                     
11. - 14. sana  toka alueen koordinaatit (x, y w, h)
                     
15. ja 16. odotusaika
                     
                     
                     
Message- eli viesti-puskurille on varattava 16 tavua.
                     
GEM lähettää viestin puskuriin siitä mitä on viimeiseksi on tapahtunut. 
                     
Sen 1. sana on tärkein, siitä ilmenee, minkäläinen tapahtuma
                     
on ollut: esim. 10 (desimaali) = käyttäjä klikkasi valikossa.
                     
Silloin puskurin 6. ja 7. tavu sanoo, missä laatikossa se oli
                     
ja 8. + 9. tavu on tarkka indeksiluku, josta voi päättää,
                     
mitä käyttäjä haluaa, esim. "Quit" tai "Load" tai mitä muuta 
                     
siinä valikossa luki.
                     
20 tarkoittaa, että jotakin ikkunaa on piirrettävä uudestaan.
                     
Ohjelma reagoi viestin mukaisesti ja viritää "ansan" uudestaan,
                     
joko samalla tai toisella event-puskurilla.
                     
                     
                     
Helpommaksi asiaa ei voi enää tehdä, kun tarkemmin ajattelee.
                     
Luonnollisesti kaiken lisäksi myös hiiren käynti valikossa
                     
huomataan automaattisesti.
                     
                     
                     
Tietysti riippuu paljon ohjelmointi-kielestä kuinka hankalaksi
                     
tai helpoksi GEM:n käyttö loppujen lopuksi tulee.
                     
PD-luettelosta löytyy eri kielille lähdekoodeja, joista voi
                     
ammentaa lisää tietoa eri funktioista.
                     
Ilman omia kokeiluja ei selviä kukaan.
                     
                     
                     
H. Pesch

Takaisin

(C) Marko, Suomen Atari-sivut / ArkiSTo 2003