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

amiga-news.de Forum > Programmierung > Abfrage ob Screen >8bit [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2002-08-07, 09:35 h

tokai
Posts: 1071
User


Hallo,

sicherlich dumme Frage, aber wie kann ich abfragen ob die Workbenchscreentiefe grösser als 8bit ist?

struct Screen *testscr = LockPubScreen("Workbench");

und dann? Die Screenstruktur an sich liefert keinen Depth-
Wert zurück. Ich muss sicherlich über die VisualInfo gehen...
aber wo?

Sicherlich könnte ich das auch selbst herausfinden, aber ich verzettle mich immer in den AmigaGUIDE RKRMs :)

Thanks for help!

tokai

[ - Answer - Quote - Direct link - ]

2002-08-07, 10:48 h

gni
Posts: 1106
User
@tokai:
>wie kann ich abfragen ob die Workbenchscreentiefe grösser als 8bit ist?
if (V39)
GetBitMapAttr(scr->RastPort.BitMap,BMA_DEPTH);
else
scr->RastPort.BitMap->Depth

[ - Answer - Quote - Direct link - ]

2002-08-07, 11:24 h

thomas
Posts: 7718
User

Du meinst natürlich "V39 oder höher".

Gruß Thomas

--
Email: thomas-rapp@web.de

Home: home.t-online.de/home/thomas-rapp/


[ - Answer - Quote - Direct link - ]

2002-08-07, 11:52 h

gni
Posts: 1106
User
@thomas:
> Du meinst natürlich "V39 oder höher".

int V39 = (SysBase->LibNode.lib_Version >= 39);

[ - Answer - Quote - Direct link - ]

2002-08-07, 12:18 h

tokai
Posts: 1071
User

oh... über die Bitmap... auf die Idee bin ich dummerweise nicht gekommen... dabei ist das so naheliegend.

Das hilft weiter! Danke! :)

[ - Answer - Quote - Direct link - ]

2002-08-07, 13:44 h

DariusBrewka
Posts: 899
[Banned user]
Ich weiss nicht, ob dass wirklich über die BitMap struktur geht??,
ich dachte ich hätte das einmal ausgetestet und maximal 8 erhalten, aber eine vierfach breitere BitMap.

Ich denke man sollte schon zu GetBitmapAttr() greifen.

gruss


[ - Answer - Quote - Direct link - ]

2002-08-07, 15:23 h

tokai
Posts: 1071
User
Zitat:
Original von DariusBrewka:
Ich denke man sollte schon zu GetBitmapAttr() greifen.


hätte ich sowieso gemacht.... Programm soll eh' erst ab 3.x laufen. :)

bye,
tokai.



[ - Answer - Quote - Direct link - ]

2002-08-07, 17:04 h

AchimStegemann
Posts: 112
User
[quote]
Original von tokai:
Zitat:
Original von DariusBrewka:
Ich denke man sollte schon zu GetBitmapAttr() greifen.


Aber auschließlich!!;)

Seit OS 3.1 ist es eh verboten (!) Bitmap-Parameter direkt aus der Bitmap-Struktur zu lesen, weil viele Grafikkarten die Bitmap-Struktur in veränderter Form verwalten. Die alten OCS/ECS-Zeiten sind halt vorbei :O

Gruß
Achim

[ - Answer - Quote - Direct link - ]

2002-08-08, 08:42 h

tokai
Posts: 1071
User

Ich habe es gestern abend ausprobiert. Die BitMap-Struktur liefert maximal 8 zurück, von daher ist dieser Weg eh' zwecklos. Dumm wäre nur gewesen, wenn man das nicht gemerkt hätte und das wie folgt abfragen würde:

if(screendepth<15bit)
{
Exit();
}


;)

bye,
tokai

[ - Answer - Quote - Direct link - ]

2002-08-08, 09:29 h

thomas
Posts: 7718
User

Du weißt, daß du Exit() niemals benutzen darfst (außer vielleicht in Assembler) ?

Exit() springt sofort ins DOS zurück, ohne Resourcen freizugeben, die von der C-Runtime allokiert wurden (Libraries, Speicher für argv[], etc.). Nimm lieber exit(), das ist dafür gedacht.

Gruß Thomas

--
Email: thomas-rapp@web.de

Home: home.t-online.de/home/thomas-rapp/


[ - Answer - Quote - Direct link - ]

2002-08-08, 10:30 h

tokai
Posts: 1071
User
Zitat:
Original von thomas:

Du weißt, daß du Exit() niemals benutzen darfst (außer vielleicht in Assembler) ?

Exit() springt sofort ins DOS zurück, ohne Resourcen freizugeben, die von der C-Runtime allokiert wurden (Libraries, Speicher für argv[], etc.). Nimm lieber exit(), das ist dafür gedacht.


Im Beispiel wollte ich nur die Programmbeendigung an sich verdeutlichen... im Normalfall beenden sich meine Programme
immer mit einem return(RETURN_OK); in main(). :)

trotzdem danke für den Tipp!


Da fällt mir gleich noch eine Frage ein:

Unter welchen Umständen verwendet man die Fehlercodes:
RETURN_WARN (5), RETURN_ERROR (10) oder RETURN_FAIL (20).
Auf der Developer-CD habe ich dafür noch keine Erläuterung gefunden.

Ich verwende das immer ca. folgendermassen (sehr vereinfacht) :


if(!sehr wichtig) /* z.B. Intuition o.a. Libraries */
RETURN_FAIL;

if(!wichtig) /* z.B. Fensteröffnen etc. */
RETURN_ERROR;

if(!weniger wichtig) /* z.B. file mit bitmapdaten nicht gefunden o.ä. */
RETURN_WARN;

code...

RETURN_OK;



bye,
tokai




[ - Answer - Quote - Direct link - ]

2002-08-08, 11:47 h

thomas
Posts: 7718
User

Das müßte im AmigaDOS-Manual stehen, denn das interressiert die "normalen Benutzer" auch (für Shell-Skripte).

Für die meisten Programme reicht 0 = hat geklappt, 20 = hat nicht geklappt (bricht das Skript ab). 5 ist für IF-Verzweigungen in Skripten (z.B. Datei für Delete existiert nicht oder "Version exec.library 40" und OS ist älter als 3.1).

Wofür 10 ist, weiß ich nicht auswendig.

Gruß Thomas

--
Email: thomas-rapp@web.de

Home: home.t-online.de/home/thomas-rapp/


[ - Answer - Quote - Direct link - ]

2002-08-08, 12:29 h

tokai
Posts: 1071
User


Stimmt. Daran hatte ich gar nicht gedacht.

[ - Answer - Quote - Direct link - ]

2002-08-11, 20:39 h

Holger
Posts: 8116
User
Zitat:
Original von tokai:
Ich habe es gestern abend ausprobiert. Die BitMap-Struktur liefert maximal 8 zurück, von daher ist dieser Weg eh' zwecklos. Dumm wäre nur gewesen, wenn man das nicht gemerkt hätte und das wie folgt abfragen würde:

if(screendepth<15bit)
{
Exit();
}

Da Du die BitMap-Struktur nur in Versionen vor OS3.x direkt auslesen darfst, Grafikkarten-Treiber mit BitMap-Tiefen >8 aber OS3.x vorraussetzen, gibt es eigentlich überhaupt kein Problem.

mfg

--

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

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Abfrage ob Screen >8bit [ - Search - New posts - Register - Login - ]


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