amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Passender Screen suchen lassen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

02.05.2006, 11:02 Uhr

Ralf27
Posts: 2779
Nutzer
Zur Zeit lass ich einen passenden Screen wie folgt suchen:

code:
...

  TAGLIST tagsl&, _
  BIDTAG_Depth&, Farbtiefe, _
  BIDTAG_NominalWidth& ,Breite, _
  BIDTAG_NominalHeight&,Hoehe, _
  TAG_END&
  DisplayID&=BestModeIDA&(tagsl&)

...


Leider ist das Displayformat eigentlich immer ein gutes Stück zu klein. Wie lass ich das System nach einem Screen suchen das *mindestes* so groß wie angegeben ist? Oder bleibt mir da auch nur ein ASLRequest mit manueller Auswahl?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

02.05.2006, 11:33 Uhr

thomas
Posts: 7717
Nutzer

Ich denke, wenn du Breite, Höhe und Farbtiefe vorher an gängige Größen anpaßt (z.B. 640x480, 800x600, 1024x768 etc.), dann müßte auch ein vernünftiger Modus herauskommen.

Alternativ kannst du die Display-Datenbank selbst durchgehen und den nach deinen Kriterien besten Modus heraussuchen. Siehe graphics.library/NextDisplayInfo und graphics.library/GetDisplayInfoData.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

02.05.2006, 22:18 Uhr

Ralf27
Posts: 2779
Nutzer
@Thomas:

Danke, also wird mir nichts anderes übrig bleiben als alles selbst zu durchsuchen.


--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 02.05.2006 um 22:18 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

04.05.2006, 22:31 Uhr

Ralf27
Posts: 2779
Nutzer
Ich war es eben testen und das was jetzt da unten als Code folgt, ist dabei raus gekommen:

code:
REM $INCLUDE Graphics.bh
LIBRARY OPEN "graphics.library", 39

a$=SPACE$(1000):REM Nur zum testen, also bitte übersehn :) 
buf&=SADD(a$):bufl&=LEN(a$)

ID&=NextDisplayInfo&(INVALID_ID&)
WHILE ID&<>INVALID_ID&
 handle&=FindDisplayInfo&(ID&)
 r=GetDisplayInfoData(handle&,buf&,bufl&,DTAG_DIMS&,NULL&)
 IF r THEN
  PRINT"ScreenMode:"
  PRINT"Tiefe: " PEEKW(buf&+MaxDepth%)
  PRINT"Breite:" PEEKW(buf&+MaxRasterWidth%)
  PRINT"Hoehe: " PEEKW(buf&+MaxRasterHeight%)
 END IF
 ID&=NextDisplayInfo(ID&)
WEND


Leider haut das ganze so nicht hin, bzw. bekomme ist bei MaxRaster#? wohl wirklich immer die maximalen Dimensionen dieser Auflösung aber nicht das, was der Monitor darstellen könnte. Anderstherum ist MinRaster#? genau so unbrauchbar.

Wenn ich mich recht entsinne muß man denn handler nicht ans System zurück geben. Wenn ich da falsch liege, bitte korrigierenn! :lickout:

Also, woher bekomme ich nun die gültigen, *darstellbaren* Auflösungen her? Mit BestModeIDA komme ich ja auch nicht weiter.

Danke im vorraus.
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 04.05.2006 um 22:37 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

04.05.2006, 22:57 Uhr

Ralf27
Posts: 2779
Nutzer
Ah, habs gefunden. Die Offsets 30 und 32 bringen mir die richtigen Daten aus dem buf&. Allerdings sind diese seltsamerweiße nicht in den Includes deklariert. Ich hab zwar ein Nominal (26), aber bei denn Offsets 30 und 32 erst die passenden Daten.

Ich hab auch kurz mal überlegt ob ich mir auch noch die unterschiedlichen Overscanauflösungen ansehn soll, aber das wäre dann zu arg.

Dann ist aber noch eine Sache:

HB und HAM sollten außen vor gehalten werden. Wie bekomme ich das hin?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

05.05.2006, 14:55 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
Ah, habs gefunden. Die Offsets 30 und 32 bringen mir die richtigen Daten aus dem buf&. Allerdings sind diese seltsamerweiße nicht in den Includes deklariert. Ich hab zwar ein Nominal (26), aber bei denn Offsets 30 und 32 erst die passenden Daten.

Wieso, was steht denn in den includes?
Rectangle?
Dann wäre es doch korrekt.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

05.05.2006, 22:50 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Holger:
Wieso, was steht denn in den includes?
Rectangle?
Dann wäre es doch korrekt.


Ich weis was du meinst, aber das steht da nicht. Ich hab das einfach durch testen rausgefunden. Genaugenommen steht da folgendes:

code:
'DimensionInfo fields 
CONST DimensionInfoHeader% = 0
CONST MaxDepth% = 16
CONST MinRasterWidth% = 18
CONST MinRasterHeight% = 20
CONST MaxRasterWidth% = 22
CONST MaxRasterHeight% = 24
CONST Nominal% = 26
CONST MaxOScan% = 34
CONST VideoOScan% = 42
CONST TxtOScan% = 50
CONST StdOScan% = 58
CONST DimensionInfopad% = 66
CONST DimensionInforeserved% = 80
CONST DimensionInfo_sizeof%=88


Aber ich hab eben auch nochmal genauer nachgesehn und hab auch noch was gefunden:

code:
'Rectangle fields 
CONST RectangleMinX% = 0
CONST RectangleMinY% = 2
CONST RectangleMaxX% = 4
CONST RectangleMaxY% = 6
CONST Rectangle_sizeof%=8


Ich hatte ja keine Ahnung das die beiden zusammenhängen. Denn hat dat das ganze wirklich wieder einen Sinn!
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 05.05.2006 um 22:51 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

05.05.2006, 22:52 Uhr

Ralf27
Posts: 2779
Nutzer
Ok, fragt sich jetzt nur noch wie ich HAM und HB aussortieren könnte.

Hm, ich vermute mal über die Viewportstory.
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

05.05.2006, 23:57 Uhr

Ralf27
Posts: 2779
Nutzer
Ok, hab das eben auch herrausgefunden:

PropertyFlags%:

Kontrollieren auf:
DIPF_IS_HAM&
DIPF_IS_EXTRAHALFBRITE&
DIPF_IS_DUALPF&

Was muß ich noch ausfiltern?

Bzw. folgende Frage:
Wenn ich nur die Screenmodes zulasse die eine Namen haben, bekomme ich dann nur die, die keine Spezialmodes wie HB, DUALPF, HAM, etc. haben? Denn genau so scheint es mir gerade so sein.

Und nochwas (jetzt bitte keine Steine werfen :D ):
Bekomme ich auch so die Modes von Grafikkarten? (ich vermute schon, kann es aber leider nicht testen)

--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 06.05.2006 um 00:01 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

06.05.2006, 08:22 Uhr

Ralf27
Posts: 2779
Nutzer
Hm, da ist nochwas:

Ich öffne meinen Screen, auf dem ich teilweise meine mit den Datatypes geladenen Bilder wiedergebe, wie folgt:

code:
TAGLIST tagsl&,_
  SA_Depth&, Farbtiefe,_
  SA_Width&, Breite, _
  SA_Height&, Hoehe, _
  SA_SharePens&, TRUE&, _         <- Knackpunkt
  SA_DisplayID&, DisplayID&,_
  TAG_END&
  eigenerscr&=OpenScreenTagList&(0,tagsl&)


Dank SA_SharePens können ja die Datatypes die Farben reservieren, aber leider bleiben da wohl immer noch ein paar Farben privat, bzw. werden nicht benutzt/verändert. Wie kann ich das ändern? Denn die Bilder sind z.b. auf deinem Screen mit Farbtiefe 2 (gleiche Farbtiefe wie im Bild) sichtbar "Farbärmer" als auf der WB. Und es wird in diesem Beispiel nur das eine Bild und sonst nix angezeigt (ok, Menu ist noch vorhanden).

Hinweis:
Wollte eben auch mal die Prefs zu MagicMenu öffnen, aber leider will sich die Prefs nicht öffnen: gtlayout.lib V37 wird vermisst... super... :(
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 06.05.2006 um 08:22 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

06.05.2006, 14:50 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
Ok, hab das eben auch herrausgefunden:

PropertyFlags%:

Kontrollieren auf:
DIPF_IS_HAM&
DIPF_IS_EXTRAHALFBRITE&
DIPF_IS_DUALPF&

Was muß ich noch ausfiltern?


Du kannst es umgekehrt machen, überprüfe ob DIPF_IS_WORKBENCH (oder so ähnlich) gesetzt ist. Das sagt in etwa aus, daß der Modus keine Besonderheiten besitzt, und die Workbench deshalb darauf laufen kann.
Das ist im Allgemeinen ein gutes Kriterium für "normale" Anwendungen, ob sie auch darauf laufen können.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

06.05.2006, 14:56 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
Dank SA_SharePens können ja die Datatypes die Farben reservieren, aber leider bleiben da wohl immer noch ein paar Farben privat, bzw. werden nicht benutzt/verändert.

Richtig, die ersten vier und die letzten vier Farben sind bereits reserviert. Das sind eben die typischerweise für Gadgets/Menüs benutzen und deren invertierten Farbindizes.
Zitat:
Wie kann ich das ändern?
Ich weiß nicht, ob ein manuelles Freigeben dieser Pens systemkonform wäre, vermutlich nicht.
Aber ich denke, die Pens sind shared, wenn Du sie also beim Screen Öffnen schon mit Farben belegst, die mit dem anzuzeigenden Bild harmonieren, sollten die datatypes sie auch benutzen können.

Ansonsten helfen nur mehr Farben...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

06.05.2006, 19:11 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Holger:
Aber ich denke, die Pens sind shared, wenn Du sie also beim Screen Öffnen schon mit Farben belegst, die mit dem anzuzeigenden Bild harmonieren, sollten die datatypes sie auch benutzen können.


Hm, das könnte die Lösung sein. Also, wenn ich die Datatypes öffne und ich einen Screen finde der die Anzahl Farben darstellen kann, dann forderen ich die Farbpalette von den Datatypes an und öffne denn Screen mit diese Farbpalette.
Wenn ich keinen Screen finde mit der benötigten Farbanzahl, dann wird logischerweise einer mit der maximal möglichen Farbanzahl geöffnet, aber beim Screen öffnen ohne Farbpalette.

Arg, langsam wird das ganze wieder recht kompliziert. :D
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Passender Screen suchen lassen [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.