![]() |
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: 7719 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: 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: 7719 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: 7719 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: 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 ![]() 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-2025 by amiga-news.de - alle Rechte vorbehalten. |
![]() |