Intuition ja Graphics -kysymyksiä

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2003 » Intuition ja Graphics -kysymyksiä « Edellinen Seuraava »

Kirjoittaja Viesti
 

Jon
Lauantaina, 15. maaliskuuta, 2003 - klo 12.31:   
Askarruttaa muutama asia käyttöliittymäohjelmointiin liittyen...

- miten saa rajattoman määrän ikkunoita käyttöön, ts. miten ikkunat pitää luoda ja niiden signaalit käsitellä? Tällä hetkellä olen kai rajoittunut noin 16 ikkunan käyttöön mikä tietenkin on ihan tarpeeksi ohjelmaani varten, ja saatan siinä rajoituksessa pysyäkin, jos menee kovin monimutkaiseksi muuten...

- Kynien varaus. Loin structin, jossa on kolme ULONGia red, green ja blue -arvoja varten. Käytän tätä structia tallentamaan paletista valittujen kynien RGB-arvot (GetRGB32():sta käyttäen) asetustiedostoon, ja luettaessa käytän sitten ObtainBestPen()-funktiota varaamaan sopivia kyniä. Nyt nämä kynät sitten tallennetaan vielä List-rakenteeseen, josta ne ohjelman lopussa käydään vapauttamassa ReleasePen()-funkkarilla..kuulostaako järkevältä? :)

Nämä kysymykset liittyvät AmiMemos-ohjelmaan, joka taitaa olla Aminetissa. Ja tuo RGB-arvojen tallennus on uusi feature, eli väsäsin sitä eilen. Vanha versio tallentaa tökerösti vain kynien numerot, jotka hyvällä tsägällä voivat olla melkein samaa väriä :)

 

Piru
Lauantaina, 15. maaliskuuta, 2003 - klo 15.33:   
Rajaton määrä ikkunoita: sharedidcmp.c

Tuo kynäjuttu kuulostaa aika järkevältä, tosin yleensä riittää että tallentaa vai 24bit RGB arvon, noita ylimääräisiä 72 bittiä ei koskaan käytetä.

 

Jon
Lauantaina, 15. maaliskuuta, 2003 - klo 18.39:   
Joo, kiitos koodista. Pitää tutustua. (prkl:n Windows avaa sen tietenkin VisualStudiolla :)

Haittaako, jos lainaan koodia tarpeen vaatiessa?

Jep, turhaa dataa menee tiedostoon, mutta ei kuitenkaan ihan overkilliksi asti. Ilmeisesti joutuisi ohjelmallisesti sitten käpistelemään niitä bittejä.

Lasken äkkiä että jos jollakin on 20 memo-ikkunaa (tuskin), niin siitä tulee sitten 20 * 2 * 4 tavua = 160 tavua enemmän, kuin jos tallentaa RGB-arvon yhteen ULONGiin. Ehkä se siinä ja siinä kannattaa kooditasolla, pitää testata :)

 

JPQ
Lauantaina, 15. maaliskuuta, 2003 - klo 20.07:   
Samaa mitä tuo Jon kyseli haittaako koodin lainaus ? en tiedä onko koskaan tarpeen mutta.

 

Jon
Lauantaina, 15. maaliskuuta, 2003 - klo 21.29:   
Jotain häikkää nyt omassa koodissa. GCC:llä käännetty koodi antaa luoda 7 ikkunaa, yksi signaali on varattu Timer.devicelle, kun taas VBCC-käännös antaa luoda 15 ikkunaa (yksi Timerille).

Kummallista! Koodi on sama. Kukaan törmännyt vastaavaan?

 

Piru
Sunnuntaina, 16. maaliskuuta, 2003 - klo 5.51:   
Tuon koodin headerissa sanon että se on public domainia, eli sitä saa abusata miten mielii.

Eli ollaan hereillä... :)

 

JPQ
Sunnuntaina, 16. maaliskuuta, 2003 - klo 14.42:   
Piru: niinpä sanotaankin minä ainakin tiedän mutta kun minä en näitä kaikkia lisenssi ehto vaihtoehtoja muista ulkoa.Koska Freeware ja Public Domain melkein muttei täysin sama asia.

 

Piru
Sunnuntaina, 16. maaliskuuta, 2003 - klo 15.28:   
JPQ: Ehhh. Ne on täysin eri asia. Freeware EI ole vapaasti abusoitavaa, eli kirjoittaja ei ole luopunut oikeuksistaan.

 

itix
Sunnuntaina, 16. maaliskuuta, 2003 - klo 17.38:   
Jon: Käytätköhän jotain ixemul-startuppia tai vastaavaa? Myös GCC:llä saa kaikki 16 signaalibittä käyttöön mutta tietynlaiset startupmoduulit varaa niitä omaan käyttöönsä.

 

Jon
Sunnuntaina, 16. maaliskuuta, 2003 - klo 18.22:   
Mitäs mulla lukeekaan makefilessa... -noixemul -s -MC68020 ainakin ulkomuistista. Heh, mulla onkin kunnolla ongelmia nyt kun en saanut Pirunkaan vinkeillä jaetulla portilla toimimaan. Lisäksi on jotain muistivuotoa yms. "kivaa".

Huom. Pirun koodi toimii eikä vuoda muistia. :)

Eli jostain syystä en saa todellakaan luotua enempää ikkunoita vaikka käytin CreateMsgPort()-funktiota, ja annoin sen portin kaikille ikkunoille käyttöön. Varmuuden vuoksi disabloin vielä timer.devicenkin käyttö mutta ei se vaikuttanut asiaan. On niin hubaa että jatkuu varmaan ensi viikolla ;)

Mutta mistä se sitten johtuu, että kun laittaa optioksi -noixemul niin kuitenkin saattaa tulla jotain virherequestereita jotka mainitsevat ixemulista jotain?

 

Jon
Sunnuntaina, 16. maaliskuuta, 2003 - klo 23.09:   
Ähhh. Eihän se linkannutkaan -noixemulilla, oli väärään kohtaan lipsahtanut parametri. GCC/VBCC-ongelma siis ratkesi. Siksi nuo Ixemul-requesteritkin...

Muut bugit odottavat lahtausta...

 

Jon
Torstaina, 20. maaliskuuta, 2003 - klo 23.16:   
Noniin. Eli akkunalle ei saanutkaan esimääritellä niitä napattavia IDCMP-viestejä, vaan ne piti ottaa käyttöön myöhemmin ModifyIDCMP()-funktiolla.

Näin se homma etenee.

 

itix
Keskiviikkona, 2. huhtikuuta, 2003 - klo 0.08:   
Juju perustuu siihen että Intuition jättää viestiportin tekemättä jos IDCMP-lippuja ei ole. ModifyIDCMP()-funktioon liittyy samantapaisia sivuvaikutuksia joten kannattaa vilkaista autodocit ettei tule ikäviä yllätyksiä :)

 

JPQ
Keskiviikkona, 2. huhtikuuta, 2003 - klo 1.13:   
itix: olikos yksi se että valikoita ei saa jos haluaa oikean hiiren napin tilasta tietoja? jotain tuollaista käsitin joskus.

 

JPQ
Keskiviikkona, 2. huhtikuuta, 2003 - klo 1.15:   
Piru: tuleekohan niille ylimääräisille biteille koskaan käyttöä jännä nähdä edes osittain siis...Matroxillalhan on se joku 10-bit RGB arvot salliva kortti kait ja 12-bit harmaa sävyt salliva lääke tieteenkäyttöön....

 

itix
Keskiviikkona, 2. huhtikuuta, 2003 - klo 3.26:   
JPQ: Valikot kyllä saa mutta se vaatii hiukan kikkailua. Normaalistihan jos WFLG_RMBRAP on päällä niin valikoita ei saa. Mutta ongelmiin on aina ratkaisu :) WFLG_RMBTRAPin saa nimittäin asettaa ja nollata milloin tahansa. Jotkut ohjelmat tekevät sen siten että jos hiiren vie ikkunan ulkopuolelle se pyyhkii RMBTRAPin (valikot päälle) ja ikkunan sisäpuolella RMBTRAP takaisin (valikot pois).

Esimerkiksi:

/* Ikkunan ulkopuolella */

Forbid();
window &= ~WFLG_RMBTRAP;
Permit();


/* Ikkunan sisäpuolella */

Forbid();
window |= WFLG_RMBTRAP;
Permit();


Käytännössä RMBTRAP pitäisi rajoittaa mahdollisimman pienelle alueelle tietysti.

 

Jon
Keskiviikkona, 23. huhtikuuta, 2003 - klo 23.25:   
Laajennetaanpa vielä GadToolsiin.

Jos käyttää GT:tä ohjelmassa, niin onko syytä sitten aina käyttää myös GT_GetIMsg() ja GT_ReplyIMsg() -funktioita ikkunoille? Autodoc mainitsee Replyn kohdalla että eksplisiittisesti...ymmärrän tämän niin, että esim. CloseWindowSafelyssä pitää käyttää GT-versiota viestien vastailuun?

(vain yhdessä ikkunassa on GT-nappeja, lopuissa vain grafiikkaa ja tekstiä)

Ps. kummasti alkaa bugit löytyä kun kuukauden päästä palaa asiaan :)

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: