ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
malte2
Nutzer
12.09.2006, 00:41 Uhr [ - Direktlink - ] |
Thema: jpeg's sichern unter OS4?
Brett: Programmierung #include <intuition/intuition.h> #include <datatypes/datatypesclass.h> #include <datatypes/pictureclass.h> #include <proto/datatypes.h> #include <proto/exec.h> #include <proto/dos.h> #include <proto/graphics.h> #include <proto/intuition.h> int main(int argc, char **argv) { struct Screen *scr; struct BitMap *bm = NULL; Object *dto; if (argc < 2) return 0; if ((scr = LockPubScreen(NULL))) { if ((bm = AllocBitMap( GetBitMapAttr(scr->RastPort.BitMap, BMA_WIDTH), GetBitMapAttr(scr->RastPort.BitMap, BMA_HEIGHT), GetBitMapAttr(scr->RastPort.BitMap, BMA_DEPTH), BMF_MINPLANES, scr->RastPort.BitMap))) { BltBitMap(scr->RastPort.BitMap,0,0, bm, 0,0, GetBitMapAttr(scr->RastPort.BitMap, BMA_WIDTH), GetBitMapAttr(scr->RastPort.BitMap, BMA_HEIGHT), 0xc0, 0xff, NULL); } } if (bm != NULL) { if ((dto = NewDTObject(0, DTA_SourceType, DTST_RAM, DTA_GroupID, GID_PICTURE, PDTA_DestMode, PMODE_V43, TAG_END))) { struct BitMapHeader *bmh; BPTR fh; GetDTAttrs(dto,PDTA_BitMapHeader,&bmh,TAG_END); bmh->bmh_PageWidth = bmh->bmh_Width = GetBitMapAttr(bm, BMA_WIDTH); bmh->bmh_PageHeight = bmh->bmh_Height = GetBitMapAttr(bm, BMA_HEIGHT); if ((bmh->bmh_Depth = GetBitMapAttr(bm, BMA_DEPTH)) >= 15) { bmh->bmh_Depth = 24; SetDTAttrs(dto,0,0, PDTA_NumColors, 0, PDTA_ModeID, GetVPModeID(&scr->ViewPort), PDTA_BitMap, bm, TAG_END); } else { ULONG *cregs = NULL; UBYTE *cmap = NULL, modeid; int i, ncols; modeid = GetVPModeID(&scr->ViewPort); if (modeid & HAM_KEY) ncols = (1 << (bmh->bmh_Depth-2)); else if (modeid & EXTRAHALFBRITE_KEY) ncols = 32; else ncols = (1 << bmh->bmh_Depth); SetDTAttrs(dto,0,0, PDTA_NumColors, ncols, PDTA_ModeID, modeid, PDTA_BitMap, bm, TAG_END); GetDTAttrs(dto, PDTA_ColorRegisters, &cmap, PDTA_CRegs, &cregs, TAG_DONE); if (cmap && cregs) { for (i = 0; i < ncols; i++) { ULONG tab[3]; GetRGB32(scr->ViewPort.ColorMap, i,1, tab); *cmap++ = tab[0] >> 24; *cmap++ = tab[1] >> 24; *cmap++ = tab[2] >> 24; *cregs++ = tab[0]; *cregs++ = tab[1]; *cregs++ = tab[2]; } } } if ((fh = Open(argv[1], MODE_NEWFILE))) { if(!DoDTMethod(dto,0,0,DTM_WRITE,0,fh,DTWM_IFF,0)) { } Close(fh); } DisposeDTObject(dto); } } UnlockPubScreen(NULL, scr); return 0; } |
|||||
malte2
Nutzer
11.09.2006, 16:04 Uhr [ - Direktlink - ] |
Thema: jpeg's sichern unter OS4?
Brett: Programmierung DoGadgetMethod bzw. DoDTMethod nur verwenden, wenn die Msg Struktur eine GadgetInfo hat ansonsten DoMethod nutzen. |
|||||
malte2
Nutzer
09.09.2006, 14:38 Uhr [ - Direktlink - ] |
Thema: Echten VBlank ermitteln
Brett: Programmierung @bubblebobble: Solange es nicht synchron ist, ist es sowieso vollkommen sinnlos. |
|||||
malte2
Nutzer
08.09.2006, 14:39 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung Und das ist genau das gleiche, was BltMaskBMRP() macht. Nur mit den Unterschied, daß die Systemfunktion den Modulo der Sourcebitmap übernimmt und damit die Maske unnötige Leerzeilen benötigt. |
|||||
malte2
Nutzer
07.09.2006, 23:13 Uhr [ - Direktlink - ] |
Thema: Olles Dönnerfleisch von der Imbissbude
Brett: Get a Life Gyros oder Döner, kommt doch alles vom selben Spieß, aber das war wohl auch der Witz am Beitrag ;-) Mein Gott, das Fleich war doch nicht ungesund, nur nicht mehr geschmacklich so doll. Aber in Marinade oder als Döner schmeckt sowieso keiner mehr den Unterschied. Beim Bund lagern die doch sogar Lebenmittel über Jahrzehnte ein. Also was soll's? Ein nicht ganz erst gemeinter Beitrag ;-) [ Dieser Beitrag wurde von malte2 am 07.09.2006 um 23:13 Uhr geändert. ] |
|||||
malte2
Nutzer
07.09.2006, 17:17 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @whose: Bei p96 kann der User den IRQ abschalten. Die Emulation besteht darinn einfach den OCS/ECS/AGA Chipsatz IRQ zu verwenden bzw. das Positionregister mittels Polling abzufragen. Bei OS4 hat wohl jemand einen Timerirq eingebaut, der den klassichen VBlank emuliert. [ Dieser Beitrag wurde von malte2 am 07.09.2006 um 17:18 Uhr geändert. ] |
|||||
malte2
Nutzer
07.09.2006, 17:12 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @thomas: BMF_INTERLEAVED ist kein Flag in der BitMap Struktur, das Flag wird in GetBitMapAttr() "berechnet". Sein Beispiel funktioniert deshalb, weil ein Maskenblit nichts anderes als eine Folge von 3 Blits ist: Soure->Dest mit (ABC|ANBNC) Mask->Dest mit Minterm (0xe0) Source->Dest mit (ABC|ANBNC) Wobei aus der Maske eine BitMap erzeugt wird, bei der alle Plane Pointer dem ersten Pointer entsprechen. |
|||||
malte2
Nutzer
06.09.2006, 16:15 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung WaitBOVP() basiert auf Polling, WaitTOF() nutzt das VBlank IRQ. Je nach Grafiksystem und Graka kann auch beides mit IRQ funktionieren oder überhaupt nicht (dann wird der Chipset IRQ benutzt bzw. Polling). |
|||||
malte2
Nutzer
05.09.2006, 18:20 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @DariusBrewka: Bei direkter HW Programmierung müssen die BitMaps natürlich im ChipRam liegen, nur kein normaler Mensch benutzt heute noch den Blitter direkt. Schon wegen der RTG Kompatiblität... P96 kann, je nach Konfigurationseinstellung, die Daten auch im Fastram ablegen und den Amiga Blitter komplett abschalten (genaugenommen einfach nicht nutzen). Unabhängig von den Einstellungen wird der Speichertyp immer vorher geprüft und ggf. die CPU verwendet. Was BltMaskBitMapRP() angeht, so fehlt der Hinweis in den Autodocs. Man könnte es auch als Fehler in der Routine deuten... Die Implementation ist auf jedenfall so, daß die Maske interleaved sein muß, wenn die Quelle Interleaved ist. |
|||||
malte2
Nutzer
05.09.2006, 17:45 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @DariusBrewka: Die Grafiksysteme enthalten CPU Routinen, die den Amiga Blitter emulieren können. @bubblebobble Wenn Du die BitMap blittest (mit BltBitMap), so kann sie auch im Videoram landen. Daher ist LockBitMap() sicherer. Es gibt noch UserPrivate BitMaps bei p96 aber die IIRC funktionieren nicht korrekt. Bzgl. Interleaved BitMaps: Wenn die Quellbitmap interleaved ist, so muß auch die Maske interleaved sein. Das heißt, bei 4 Bit Tiefe muß jede Zeile der Maske 4x wiederholt werden bevor die nächste Zeile kommt. BltMaskBitMap() benötigt sie so. |
|||||
malte2
Nutzer
05.09.2006, 17:13 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @bubblebobble: Das braucht AR() auch nicht zu wissen, die anderen Grafikfunktionen (Blt MaskBitMap, BltBitMap etc.) überprüfen den Speichertyp. |
|||||
malte2
Nutzer
05.09.2006, 16:57 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @bubblebobble: LockBitMapTags() friert das ganze Board ein, daher es können keine Grafikoperation stattfinden. Eine wunderbar einfache Art&Weise deadlocks zu verursachen ;-) Was die Maske angeht, so kannst Du sie am besten mit AllocRaster() anlegen, denn dann brauchst Du dich nicht um das Grafiksystem weiter zu sorgen. Die RTG Systeme sind auch so schlau und erkennen FastRam BitMaps/Masken, so daß nicht die Gefahr besteht, daß der Amiga Blitter verwendet wird. |
|||||
malte2
Nutzer
05.09.2006, 16:52 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @DariusBrewka: Eine Maske für Interleaved BitMaps muß auch selber interleaved sein (daher Breite * Tiefe * Höhe) damit BltMaskBitMap() funktioniert. |
|||||
malte2
Nutzer
05.09.2006, 16:37 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung @DariusBrewka: Das /8 ist natürlich Unsinn, hatte gerade nochwas anderes im Sinn... |
|||||
malte2
Nutzer
05.09.2006, 16:18 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung Für non-interleaved bitmaps: PLANEPTR mask = AllocRaster(GetBitMapAttr(bm, BMA_WIDTH)/8, GetBitMapAttr(bm, BMA_HEIGHT)); |
|||||
malte2
Nutzer
05.09.2006, 10:28 Uhr [ - Direktlink - ] |
Thema: FritzBox und langes Telefonkabel
Brett: Get a Life Die Anschlusskabel dürfen idR. 20m lang sein (vom Telefon bis zur Anschlussdose). Ich selber habe hier sogar ca. 30m an der FB und das läuft ohne Probleme. Allerdings habe ich zum Teil Netzwerkkabel verwendet. |
|||||
malte2
Nutzer
02.09.2006, 21:16 Uhr [ - Direktlink - ] |
Thema: Screennotify & closewindow problem
Brett: Programmierung Stimmt! Habe notifyintuition.library mit screennotify.library vertauscht. |
|||||
malte2
Nutzer
02.09.2006, 14:45 Uhr [ - Direktlink - ] |
Thema: Screennotify & closewindow problem
Brett: Programmierung Sofern man es nicht anders angibt, sendet die lib die Messages asynchrone. |
|||||
malte2
Nutzer
31.08.2006, 22:01 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung FillPixelArray() ist eine cgx Funktion. Im Prinzip ein Truecolor RectFill(). |
|||||
malte2
Nutzer
31.08.2006, 18:02 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung WriteChunkyPixels() verwendet WritePixelLine8(), wenn keine C2P HW vorhanden ist. |
|||||
malte2
Nutzer
30.08.2006, 21:51 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung Sowas wie: struct RastPort rp; InitRastPort(&trp); rp.BitMap = AllocBitMap(w,h,t,0,bla); irgendeine_x_beliebige_gfx_operation(&trp,...); funktioniert IMMER egal, welchen Wert 'w' hat (natürlich größer 0). Wenn das nicht funktioniert, dann ist entweder das gfx system, welches Du benutzt, fehlerhaft oder Du machst irgendwas falsch. [ Dieser Beitrag wurde von malte2 am 30.08.2006 um 21:51 Uhr geändert. ] |
|||||
malte2
Nutzer
30.08.2006, 19:00 Uhr [ - Direktlink - ] |
Thema: Bitmaps nur durch 16 teilbare Breite?
Brett: Programmierung BitMaps können eine beliebige Breite haben und für die Zeichenoperationen ist das auch ziemlich egal (wegen Rundung auf 16), GetBitMapAttr(bitmap, BMA_WIDTH) wird dir aber immer eine durch mind. 16 teilbare Breite zurückgeben da manche Programme ansonsten nicht mehr korrekt durch eine Maske blitten können. |
|||||
malte2
Nutzer
26.08.2006, 14:37 Uhr [ - Direktlink - ] |
Thema: Der Admin verstößt gegen die Nettikette
Brett: Forum und Interna Seiner ist länger |
|||||
malte2
Nutzer
22.08.2006, 11:19 Uhr [ - Direktlink - ] |
Thema: PC startet von selbst
Brett: Andere Systeme Pedant ;-) |
|||||
malte2
Nutzer
22.08.2006, 09:52 Uhr [ - Direktlink - ] |
Thema: PC startet von selbst
Brett: Andere Systeme @harryfisch: Nein, eine BATTERIE ;-) |
|||||
malte2
Nutzer
21.08.2006, 19:43 Uhr [ - Direktlink - ] |
Thema: PC startet von selbst
Brett: Andere Systeme Akku? Lithium Zelle, Typ CR2032, 3V. |
|||||
malte2
Nutzer
20.08.2006, 15:27 Uhr [ - Direktlink - ] |
Thema: Bitte klicken
Brett: Get a Life Wenn er seinen A1200 aus Geldnot schon verkaufen muß, so wird er dir sicherlich nichts zahlen können ;-) |
|||||
malte2
Nutzer
19.08.2006, 11:18 Uhr [ - Direktlink - ] |
Thema: Die Machenschaften von 9live
Brett: Get a Life Wenn's um verlieren von Wertsachen geht: http://bundesrecht.juris.de/bundesrecht/bgb/__965.html |
|||||
malte2
Nutzer
15.08.2006, 18:25 Uhr [ - Direktlink - ] |
Thema: Zahnriemen 100mxl
Brett: Get a Life Hallo, kennt jemand zufällig eine Bezugsquelle für og. Zahnriemen (wird zB. in Druckern verwendet)? mfG. |
|||||
malte2
Nutzer
09.08.2006, 16:26 Uhr [ - Direktlink - ] |
Thema: Astra Sat Verschlüsselung bei den FreeFernsehen
Brett: Get a Life Zitat: Das mag ich stark bezweifeln ;-) |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |