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

amiga-news.de Forum > Programmierung > Abfrage ob Screen >8bit [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

07.08.2002, 09:35 Uhr

tokai
Posts: 1071
Nutzer


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

[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 10:48 Uhr

gni
Posts: 1106
Nutzer
@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

[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 11:24 Uhr

thomas
Posts: 7675
Nutzer

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

Gruß Thomas

--
Email: thomas-rapp@web.de

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


[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 11:52 Uhr

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

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

[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 12:18 Uhr

tokai
Posts: 1071
Nutzer

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

Das hilft weiter! Danke! :)

[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 13:44 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
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


[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 15:23 Uhr

tokai
Posts: 1071
Nutzer
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.



[ - Antworten - Zitieren - Direktlink - ]

07.08.2002, 17:04 Uhr

AchimStegemann
Posts: 112
Nutzer
[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

[ - Antworten - Zitieren - Direktlink - ]

08.08.2002, 08:42 Uhr

tokai
Posts: 1071
Nutzer

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

[ - Antworten - Zitieren - Direktlink - ]

08.08.2002, 09:29 Uhr

thomas
Posts: 7675
Nutzer

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/


[ - Antworten - Zitieren - Direktlink - ]

08.08.2002, 10:30 Uhr

tokai
Posts: 1071
Nutzer
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




[ - Antworten - Zitieren - Direktlink - ]

08.08.2002, 11:47 Uhr

thomas
Posts: 7675
Nutzer

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/


[ - Antworten - Zitieren - Direktlink - ]

08.08.2002, 12:29 Uhr

tokai
Posts: 1071
Nutzer


Stimmt. Daran hatte ich gar nicht gedacht.

[ - Antworten - Zitieren - Direktlink - ]

11.08.2002, 20:39 Uhr

Holger
Posts: 8089
Nutzer
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.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Abfrage ob Screen >8bit [ - Suche - Neue Beiträge - Registrieren - Login - ]


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