ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > nicht die farbe | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- 2 | [ - Beitrag schreiben - ] |
04.07.2009, 18:05 Uhr AGSzabo Posts: 1663 Nutzer |
Ich habe nach erfolgreicher Umsetzung von GetVar() in mein Programm die Configurierbarkeit des APen eingebaut. Das funktioniert aber komischerweise nur mit den ersten 4 farben. die 5. farbe wäre eigentlich laut farbeinsteller ein dunkles grau, eskommt aber ein dunkles BLAU raus. ich habe nach antworten gesucht in docs und includes und vermute dass es etwas mit colormaps zu tun haben könnte, werde aber nicht schlau draus. wie mache ich dass pen 5 im programm die farbe des 5. pens aus dem voreinsteller hat? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 19:10 Uhr Goja Posts: 280 Nutzer |
Soweit ich weiss sind die Farben im "Voreinsteller" (meinst du sys:Prefs/Palette?) die ersten vier und die letzten vier. Die Farben sind nur dann hintereinander angeordnet wenn der Bildschirm lediglich 8 Farben hat. Hatte was mit der Art und Weise zu tun wie MagicWorkbench arbeitet, denke ich. -- http://www.baud.de Amiga A4000T MC68060RC50 PPC604E@233Mhz 274Mb OS3.9 & OS4.0 [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 19:12 Uhr thomas Posts: 7718 Nutzer |
@AGSzabo: Wenn du mit "Farbeinsteller" Prefs/Palette meinst, dann sind es nicht die ersten acht Farben, die eingestellt werden, sondern die ersten vier und die letzen vier. Wenn dein Screen also z.B. 16 Farben hast, dann setzt Palette die Pens 0, 1, 2 und 3 sowie 12, 13, 14 und 15. IMHO solltest du nicht den Pen konfigurierbar machen, sondern die Farbe (also den RGB-Wert). Dann kann dein Programm mit ObtainPen(-1) einen beliebigen freien Pen bekommen und mit SetRGB32 die Farbe setzen. Oder, wenn es nicht exakt die Farbe sein muß und du nicht davon abhängig sein möchtest, daß noch ein Pen frei ist, kannst du mit ObtainBestPen einen Pen auswählen, der am besten zu der eingestellten Farbe paßt. Nicht vergessen, alle Pens mit ReleasePen wieder freizugeben, wenn sie nicht mehr benötigt werden ! Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 21:13 Uhr AGSzabo Posts: 1663 Nutzer |
ah ja, das bringt mich weiter. aber gelten die reservierten pens systemweit oder nur für screen oder fenster? ich habe gelesen dass man dazu eine colormap barucht, verstehe aber den zusammenhang nicht. und ob ich palextra attachen muss? wo soll ich was reinpoken oder auslesen? für meine zwecke sollten die pens systemweit gelten... -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 04.07.2009 um 21:19 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 22:00 Uhr thomas Posts: 7718 Nutzer |
Die Colormap bekommst du aus Screen->ViewPort.ColorMap. "Poken" darfst du nie und nirgends !!! Wenn du etwas ändern möchtest, dann benutze die dafür vorgesehene Funktion. "Peeken" ist manchmal erlaubt, wie z.B. hier um die ColorMap zu bekommen. Trotzdem solltest du immer erst suchen, ob es nicht eine Funktion für die Ermittlung der gewünschten Werte gibt. Die Pens werden natürlich nur auf dem Screen reserviert, dessen ColorMap du benutzt hast. Systemweite Pens gibt es nicht. Jeder Screen hat seine eigene Bitmap und Palette. Die Anzahl Pens hängt von der Tiefe der Bitmap ab. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 22:41 Uhr AGSzabo Posts: 1663 Nutzer |
aha. jetzt frage ich mich ob ich den pubscreen gelockt lassen muss während ich pens darauf reserviert habe? oder reicht es wenn ich ihn nur locken muss BIS ich meine pens darauf reserviert habe? oder wie komme ich sonst an seine addresse? darf ich den lock aufheben wenn ich den pointer auf die colormap ausgelesen habe? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 04.07.2009 um 22:47 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 23:50 Uhr thomas Posts: 7718 Nutzer |
@AGSzabo: Du mußt verhindern, daß der Screen geschlossen wird, denn danach sind alle Pointer und Pens ungültig. Das geht entweder mit LockPubScreen oder mit OpenWindow. D.h. wenn du ein Fenster geöffnet hast, kannst du auch Window->WScreen nehmen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
04.07.2009, 23:51 Uhr NoImag Posts: 1050 Nutzer |
Zitat: Solange Du ein Fenster auf dem PubScreen geöffnet hast, wird der Pubscreen nicht geschlossen, Du brauchst ihn also nicht gelockt halten. Den Zeiger auf den Screen findest Du auch in der Window-Struktur. LockPubScreen() zu verwenden ist aber in Ordnung. Tschüß Nachtrag: thomas war schneller... [ Dieser Beitrag wurde von NoImag am 04.07.2009 um 23:52 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 08:28 Uhr AGSzabo Posts: 1663 Nutzer |
hmmm... vielleicht sollte ich etwas genauer beschreiben was ich machen will: ich habe da ein gui-system "xui" in arbeit, dessen farben einstellbar werden sollen. diese farben sollen für alle xui-apps gelten! -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 08:39 Uhr Ralf27 Posts: 2779 Nutzer |
Noch ein GUI-System für den Amiga? Hm, wieviele gibt es denn schon eigentlich? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 08:49 Uhr AGSzabo Posts: 1663 Nutzer |
@Ralf27: man sagt, gui system-erstellung ist wie hello world. dabei ist es heute noch ebensowenig ernst wie kreutzworträtsel. ich hasse sudoku, ich programmier lieber was! es hat den selben effekt. -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 08:57 Uhr Ralf27 Posts: 2779 Nutzer |
@AGSzabo: Ich kann dich schon verstehn, dadurch lernt man. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 09:02 Uhr thomas Posts: 7718 Nutzer |
Zitat: Kein Problem. Laß den Benutzer die RGB-Werte einstellen. Wenn du ein Fenster öffnest, besorgst du dir die Pens mit ObtainBestPen und beim Schließen des Fensters gibst du sie wieder frei. So machen das alle Anwendungen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 09:12 Uhr AGSzabo Posts: 1663 Nutzer |
@thomas: hmmm, bestpen um die pens zu sharen? die farbwerte aber in der xuibase (library)? sollte dann das fenster seine objekte mit der penlist versorgen (mit SET-methode an alle members broadcasten)? ps: und was meinen die docs der farbwert soll left-justified uebergeben werden? heist das "FFFFFF00" oder "00FFFFFF" oder hat das damit nix zu tun? [ Dieser Beitrag wurde von AGSzabo am 05.07.2009 um 09:46 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
05.07.2009, 09:51 Uhr thomas Posts: 7718 Nutzer |
Zitat: Jede Farbkomponente, also R, G und B, wird getrennt als 32bit-Wert zwischen 0 (ganz dunkel) und ffffffff (ganz hell) übergeben. Wenn du jetzt nur Werte zwischen 0 und ff hast, dann mußt du dafür sorgen, daß die nach ganz links kommen, sonst bekommst du nur "ganz dunkel" und "fast ganz dunkel", also alles schwarz. Also ein r=44 g=88 b=ff wird idealerweise als 0x44444444, 0x88888888, 0xffffffff übergeben. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
08.07.2009, 20:39 Uhr Mad_Dog Posts: 1944 Nutzer |
Siehe: http://w3.norman-interactive.com/C-Kurs_8_5.html http://w3.norman-interactive.com/C-Kurs_8_10.html Letzteres Beispiel zeigt die Verwendung von ObtainBestPen in einem praxisnahen Programm. -- http://www.norman-interactive.com [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 05:41 Uhr AGSzabo Posts: 1663 Nutzer |
@Mad_Dog: ok, gut, danke, jetzt hab ichs ganz kapiert. aber sind denn 3 x 32 bit nicht viel mehr als man wirklich darstellen kann? mir scheint es reicht wenn ich nicht pro guisystem-fenster eine penliste allokiere sondern per screen (beim öffnen des fensters) und diese von fenstern aus share. wird das letzte guisystem-fenster (used-counter) auf einem screen geschlossen werden die pens released. hat irgendjemand einwände? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 09.07.2009 um 08:07 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 08:22 Uhr Thore Posts: 2266 Nutzer |
@AGSzabo: Natürlich sind 3 x 32 Bit mehr als man darstellen kann. Hast Du schon vergessen daß in der Amiga-Welt immer alles schon für die Zukunft vorbereitet ist? Momentan gibt es ein Projekt, wobei die Customchips durch eigenkreierte FPGAs ersetzt werden sollen, mal sehen ob da nicht bald ein 96 Bit Modus für die Farben gibt *ironie* [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 08:32 Uhr AGSzabo Posts: 1663 Nutzer |
bezieht sich "ironie" auf den 96bitmodus oder auf die fpga geschichte oder beides? e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 09.07.2009 um 08:33 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 08:47 Uhr Thore Posts: 2266 Nutzer |
Nur auf den Farbmodus. Die FPGAs sind Tatsache. Dabei sollen die Customchips durch Replikate ersetzt werden, ähnlich wie Natami, nur daß die CustomChip-Ersatzteile in einem echten Amiga eingebaut werden können. Das ist aber ein anderes Thema und hier ziemlich off-topic =) [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 19:56 Uhr Andreas_Wolf Posts: 2980 Nutzer |
> nur daß die CustomChip-Ersatzteile in einem echten Amiga eingebaut > werden können. Gibt's dazu außer dem, was du gerade dazu geschrieben hast, schon irgendwelche öffentlichen Informationen? [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 22:14 Uhr AGSzabo Posts: 1663 Nutzer |
@Andreas_Wolf: ich programmiere mein guisystem jetzt so dass pens mit drei byte §FF FF FF reserviert werden können. ich rechne die werte zur allokierung hoch mittels multiplikation mit $01010101. ein longword pro pen lässt sich leichter handhaben als drei und wenn es negativ ist oder das höchste bit gesetzt ist kann das sogar noch was bedeuten. -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 22:18 Uhr Andreas_Wolf Posts: 2980 Nutzer |
@ AGSzabo: Hö? Auf welche Äußerung von mir beziehst du dich? [ - Antworten - Zitieren - Direktlink - ] |
09.07.2009, 22:27 Uhr AGSzabo Posts: 1663 Nutzer |
@Andreas_Wolf: oh. das war ein versehen. ist allgemein gemeint in sinne des topics des threads. -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 10:00 Uhr Thore Posts: 2266 Nutzer |
@Andreas_Wolf: Ja, und ich dachte, Dir entgeht sowas nicht =) Das mit den Farben war rein utopisch wie schon angemerkt, aber hier gibts Infos zum Rest: http://www.totalamiga.org/files/TA25_JensIviewExtract.pdf [ - Antworten - Zitieren - Direktlink - ] |
10.07.2009, 10:56 Uhr thomas Posts: 7718 Nutzer |
@Andreas_Wolf: Hat Jens Schoenfeld doch letztens großartig auf einer Messe vorgestellt, sogar mit Gewinnspiel für Software, die nicht kompatibel ist. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
14.07.2009, 01:44 Uhr AGSzabo Posts: 1663 Nutzer |
ok, jetzt funktioniert alles. ein wert in der größenordnung von 24 bit wird auf 96 bit hochgerechnet:code:allocpen: move.l (a0)+,d1 ; read color vaule $xxxxxx moveq #0,d2 moveq #0,d3 move.b d1,d3 lsr.l #8,d1 move.b d1,d2 lsr.l #8,d1 move.l d1,d0 move.l #$01010101,d1 bsr Mul32 ; d1*d0 to d0 move.l d0,d4 move.l d2,d0 bsr Mul32 move.l d0,d2 move.l d3,d0 bsr Mul32 move.l d0,d3 move.l d4,d1 move.l a2,a0 ; colormap lea .pens_tags(pc),a1 jsr _LVOObtainBestPenA(a6) außerdem hole ich mir wenn der obtain failt mit FindColor den besten änlichen pen. -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 14.07.2009 um 01:49 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
14.07.2009, 06:57 Uhr thomas Posts: 7718 Nutzer |
Zitat: Warum benutzt du nicht OBP_FailIfBad,FALSE ? Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
14.07.2009, 09:02 Uhr AGSzabo Posts: 1663 Nutzer |
@thomas:Zitat: In diesem fall liefert FindColor noch die passendsten Farbe. Oder seh ich das falsch: Zitat: hm? ps: außerdem benutze ich OBP_Precision, PRECISION_GUI. Is das gut in meinem Fall? Und mein Programm ist fixiert auf höchstens 256 pens wegen bytes als speicher für die Pen nummern. Ein rastport hat fuer die pen nummern auch blos bytes, obwohl OBP ein long zurückgibt! -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 14.07.2009 um 09:10 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
14.07.2009, 09:47 Uhr thomas Posts: 7718 Nutzer |
@AGSzabo:Zitat: Ist schon ok. Ich würde bei einer GUI nur davon ausgehen, daß ich immer auf einem Screen lande, der palette-sharing aktiv hat. Dann würde ObtainBestPen nie fehlschlagen und FindColor wäre überflüssig. Zitat: Für eine GUI genau richtig. Deshalb heißt es so. Zitat: Das Long ist für den Fehlschlag. Wie willst du bei einem Byte prüfen, ob die Funktion fehlgeschlagen ist, wenn alle Werte von 0 bis 255 ok sind ? Dafür brauchst du einen Wert, der außerhalb des gültigen Bereichs liegt. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
-1- 2 | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > nicht die farbe | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |