amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Passender Screen suchen lassen [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2006-05-02, 11:02 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-05-02, 11:33 h

thomas
Posts: 7718
User

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/

[ - Answer - Quote - Direct link - ]

2006-05-02, 22:18 h

Ralf27
Posts: 2779
User
@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. ]

[ - Answer - Quote - Direct link - ]

2006-05-04, 22:31 h

Ralf27
Posts: 2779
User
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. ]

[ - Answer - Quote - Direct link - ]

2006-05-04, 22:57 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-05-05, 14:55 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-05-05, 22:50 h

Ralf27
Posts: 2779
User
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. ]

[ - Answer - Quote - Direct link - ]

2006-05-05, 22:52 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]

2006-05-05, 23:57 h

Ralf27
Posts: 2779
User
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. ]

[ - Answer - Quote - Direct link - ]

2006-05-06, 08:22 h

Ralf27
Posts: 2779
User
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. ]

[ - Answer - Quote - Direct link - ]

2006-05-06, 14:50 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-05-06, 14:56 h

Holger
Posts: 8116
User
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.

[ - Answer - Quote - Direct link - ]

2006-05-06, 19:11 h

Ralf27
Posts: 2779
User
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

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Passender Screen suchen lassen [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.