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

amiga-news.de Forum > Programmierung > JPEG-Loader [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

09.10.2002, 22:43 Uhr

Ralf27
Posts: 2779
Nutzer
Ich bräuchte einen möglichst schnellen JPEG-Loader der das Bild in den
Arbeitsspeicher einliest. Nun, bis jetzt ist es ja recht einfach.
Aber:

Wenn ich die Datatypes benutzen möchte, wie kann ich das mit
MaxonBasic machen? Ich kann leider nur MaxonBasic richtig.

Könnte mir da jemand auf die Sprünge helfen? :-)

Hab es damals schon versucht, aber leider ohne Erfolg. Ich kann leider
auch kein C-Code richtig lesen und konvertieren.

Danke im vorraus.

[ - Antworten - Zitieren - Direktlink - ]

10.10.2002, 09:04 Uhr

thomas
Posts: 7716
Nutzer

Wenn du mir erklärst, wie man mit MaxonBasic System-Funktionen aufruft, kann ich dir erklären, wie man DataTypes benutzt. Ich habe zwar kein Basic mehr gesehen, seit AmigaBasic out ist, aber zusammen schaffen wir das schon.

Gruß Thomas

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

[ - Antworten - Zitieren - Direktlink - ]

10.10.2002, 18:24 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von thomas:

Wenn du mir erklärst, wie man mit MaxonBasic System-Funktionen aufruft, kann ich dir erklären, wie man DataTypes benutzt. Ich habe zwar kein Basic mehr gesehen, seit AmigaBasic out ist, aber zusammen schaffen wir das schon.

Gruß Thomas

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



Hm, wie soll ich Dir das jetzt erklären. Also, der Syntax und die
Befehle sind genau so wie bei AmigaBasic, nur da es jetzt ein Compiler
ist und das er erweitert wurde.

Also wenn Du noch ein AmigaBasic-Buch findest, dann kannst Du es auch
nochmal nachlesen.

Hier aber mal ein kleines Beispiel:

Library"graphics.library"

rastport&=WINDOW(8)
x=100
y=100
a$="Hello World"

Move! rastport&,x,y
Text! rastport&,sadd(a$),len(a$)


Das kleine Hello World-Beispiel. :-)
Diesmal aber mit Aufruf von Systembefehlen. Die Befehle für die
Datatypes kann man genau so aufrufen.

Rückgabewerte bekommt man z.b. so(auszug):

declare function xWrite& function
library "dos.library"

...

AnzahlBytes&=xWrite&(Handler&,Speicherbereich&,Bytes&)

...

Kleines Beispiel.. diese Programm funktioniert natürlich so nicht.
Aber so kann man Werte zurück bekommen.


Kommst Du damit klar?

Ich fände es genial wenn ich das mit den Datatypes auf die Reihe
bekommen könnte. Hab da was kleines vor. :-)

Danke im vorraus!

[ Dieser Beitrag wurde von Ralf27 am 10.10.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

11.10.2002, 09:22 Uhr

thomas
Posts: 7716
Nutzer

Das habe ich im Aminet gefunden: http://uk.aminet.net/aminetbin/find?hsb+misc


Enthält Beispiele in MaxonBasic, wie man Bilder mit Datatypes lädt. Vielleicht kommst du damit klar ?

Gruß Thomas

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

[ - Antworten - Zitieren - Direktlink - ]

11.10.2002, 10:35 Uhr

Ralf27
Posts: 2779
Nutzer
Mein Problem ist halt das ich damals mit AmigaBasic begonnen habe und
auch noch so porgrammiere in MaxonBasic. Im Handbuch von MBasic steht
ja auch quasi das gleiche drin wie in ABasic, nur das ein paar
Befehel dazu gekommen sind.

Ich hab mir das Programmieren damals selbst beigebracht und leider
kenne ich auch keinen, der auf dem Amiga programmiert.

Ich hab mir das Beispielprogramm angesehn und stand/stehe und kappiere
nichts da es ganz anderst Aussieht als AmigaBasic. In AmigaBasic gibt
es halt sowas wie Taglists und dergleichen nicht.

Im großen und ganzen versteh ich den Quellcode ja schon, aber es liegt
im Detail.

Mein Vorhaben:
Laden eines Bildes ins Ram mit einer maximalen Farbtiefe
von 8 Bit. Dabei ist es egal ob HAM8 oder HAM6, HB oder normal.
Es soll aber nicht angezeigt werden. Mit dem Bild hab ich was anderes
vor. :-)
Ich denk mir mal, man kann die Datatypes auch dazu überreden z.b. JPG
auf HAM8 oder 256Farben zu bringe. Aber wie genau? Wo? Was soll das
mit dem AllocVec? Ist das das gleiche wie das AllocMem? Fragen über
Fragen...

Diese Routine habe ich bereits in Basic geschrieben, aber sie kann
halt nur IFF lesen.



Leider kenne ich auch viele Befehle nicht und bei vielen muß ich
raten. Zum anderen scheine ich auch Fehler im Quellcode von einem
Beispielprogramm gefunden habe, wo einfach frei drauf los ein
Speicherbereich beschrieben wird ohne es vorher anzufordern.
Jedenfalls scheint es mir so.


Ich hab noch einigs vor mir. Die Datatypes sind zwar recht einfach wie
ich im Quellcode gesehn habe, aber dennoch versteh ich es noch nicht
so ganz. :-)

[ - Antworten - Zitieren - Direktlink - ]

11.10.2002, 14:10 Uhr

thomas
Posts: 7716
Nutzer

Hättest du nicht Interresse, C zu lernen ? Damit sind einige Dinge einfacher, da das ganze AmigaOS einfach auf C ausgerichtet ist.

Auf jeden Fall solltest du dir das NDK für OS3.9 herunterladen. Da sind die AutoDocs dabei, die die Funktion jeder einzelnen System-Funktion beschreiben. Raten ist immer nicht so ganz das richtige.

Zum Konkreten Fall: Taglists sind eine neue Erfindung von OS2.0. Im Prinzip ist eine Taglist ein Array aus Integern (also 32Bit Ganzzahlen). Bei einer Taglist gehören immer zwei Elemente zusammen. Das erste ist ein Kommando und das zweite ein Parameter. Wenn also in der Taglist die Werte WA_Width und 200 nacheinander kommen, so bedeutet das, daß das Fenster 200 Pixel breit werden soll (für OpenWindowTags). Am Ende der Taglist muß immer das Kommando TAG_END stehen, damit das Ende erkannt wird.

Die Systemfunktionen, die im AmigaOS eingebaut sind, bekommen immer einen Zeiger auf das erste Array-Element der Taglist übergeben. Nur in C kann man sich einer speziellen Fähigkeit bedienen: der Varargs-Funktionen. Varargs heißt, daß du eine variable Anzahl Parametern an eine Funktion übergeben kannst.

Anstatt von

taglist[0] = WA_Width;
taglist[1] = 200;
taglist[2] = TAG_END;
fenster = OpenWindowTagList(NULL,ADDR(taglist[0]));

kann man einfach schreiben:

fenster = OpenWindowTags(NULL,WA_Width,200,TAG_END);

Das ist eine ziemliche Erleichterung.

WA_Width und TAG_END sind Konstanten, die in den Includes definiert sind.

Gruß Thomas

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

[ - Antworten - Zitieren - Direktlink - ]

11.10.2002, 16:26 Uhr

Ralf27
Posts: 2779
Nutzer
Hm, der Quellcode vom MaxonBasic-Demo sieht fast aus wie C. Da werden
auch TAGLISTs benutzt, wie Du es oben beschrieben hast.

Leider bin ich als noch nicht ganz durchgestiegen durch das Programm.
:-(

Vorallem die Zahlenwerte suche ich noch zusammen aus den ganzen
Includes. Was für ein Horror. :-)))

Läd das Datatype eigentlich die Daten sturr in den Chipram? Wenn ja,
wie kann ich das umgehn?

[ - Antworten - Zitieren - Direktlink - ]

21.10.2002, 02:55 Uhr

AchimStegemann
Posts: 112
Nutzer
Zitat:
Original von Ralf27:

Läd das Datatype eigentlich die Daten sturr in den Chipram? Wenn ja,
wie kann ich das umgehn?



Das hängt von deinem Amiga ab. Wenn du ein RTG-System mit entsprechendem picture.datatype installiert hast, so lädt Datatypes die Grafik-Daten ins FastRAM (weil da eben schneller ist).

Wenn du nur AGA hast, so werden die Daten automatisch ins ChipRAM gelegt, weil AGA ja nur dort Bilder darstellen kann.

Normalerweise muss man als Programmierer sich um solche Dinge nicht kümmern, da das DT-System einem die Arbeit automatisch abnimmt.

Im Zweifelsfall sollte man bei NewDTObject das Tag PDTA_DestMode immer auf PMODE_V43 stehen haben, damit man in den RTG-Genuss kommt. Unter AGA wird dieses Tag ignoriert.

ChipRAM kann unter RTG mittels PDTA_DestMode,PMODE_V42 erzwungen werden.


Das war: Fach-Chinesisch :D

Gruß
Achim

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > JPEG-Loader [ - Suche - Neue Beiträge - Registrieren - Login - ]


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