ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Write/ReadPixelLine8 | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
1 -2- | [ - Beitrag schreiben - ] |
12.12.2005, 11:09 Uhr thomas Posts: 7718 Nutzer |
Zitat: code:depth = GetBitMapAttr(win->RPort->BitMap,BMA_DEPTH); if (depth > 8) { /* 24bit-Verarbeitung */ } else { /* 8bit-Verarbeitung */ } Zitat: Ja, es wird automatisch umgerechnet. Zitat: Schau mal, ob da was dabei ist: http://thomas-rapp.homepage.t-online.de/examples/ Mask.c ist das einzige mit ReadPixelArray, das ich auf die Schnelle gefunden habe. Mal sehen, ich werde noch eins machen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ Dieser Beitrag wurde von thomas am 12.12.2005 um 11:10 Uhr editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
12.12.2005, 11:51 Uhr thomas Posts: 7718 Nutzer |
Hier ist ein größeres Beispiel:code:#include <proto/exec.h> #include <proto/dos.h> #include <proto/graphics.h> #include <proto/intuition.h> #include <proto/cybergraphics.h> #include <cybergraphx/cybergraphics.h> struct Library *CyberGfxBase = NULL; int main (void) { struct Window *win; struct IntuiMessage *mess; BOOL cont; struct RastPort *srcrp; struct RastPort *destrp; long width = 160; long height = 100; UBYTE *array; ULONG bpr; /* bytes per row */ long x,y; UBYTE *xp,*yp; CyberGfxBase = OpenLibrary ("cybergraphics.library",0); if (win = OpenWindowTags (NULL, WA_Title,"pixarray", WA_Left,400, WA_Top,20, WA_Width,220, WA_Height,400, WA_Flags,WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_ACTIVAT E|WFLG_NOCAREREFRESH, WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY, TAG_END)) { srcrp = &win->WScreen->RastPort; destrp = win->RPort; if (GetBitMapAttr(srcrp->BitMap,BMA_DEPTH) > 8) { if (!CyberGfxBase) Printf ("cannot open cybergraphics.libraryn"); else { bpr = width * 3; if (array = AllocVec (bpr * height,0)) { ReadPixelArray (array,0,0,bpr,srcrp,20,20,width,height,RECTFMT_RGB); WritePixelArray (array,0,0,bpr,destrp,20,50,width,height,RECTFMT_RGB); yp = array; for (y = 0; y < height; y++) { xp = yp; for (x = 0; x < width; x++) { *xp++ ^= 255; *xp++ ^= 255; *xp++ ^= 255; } yp += bpr; } WritePixelArray (array,0,0,bpr,destrp,20,200,width,height,RECTFMT_RGB); FreeVec (array); } } } else { struct BitMap *tempbm; struct RastPort temprp; if (tempbm = AllocBitMap (width,1,8,0,NULL)) { bpr = (width + 15) & ~15; if (array = AllocVec (bpr * height,0)) { temprp = *srcrp; temprp.Layer = NULL; temprp.BitMap = tempbm; ReadPixelArray8 (srcrp,20,20,width + 19,height + 19,array,&temprp); temprp = *destrp; temprp.Layer = NULL; temprp.BitMap = tempbm; WritePixelArray8 (destrp,20,50,width + 19,height + 49,array,&temprp); yp = array; for (y = 0; y < height; y++) { xp = yp; for (x = 0; x < width; x++) { *xp++ ^= 255; } yp += bpr; } WritePixelArray8 (destrp,20,200,width + 19,height + 199,array,&temprp); FreeVec (array); } FreeBitMap (tempbm); } } cont = TRUE; do { if (Wait ((1L << win->UserPort->mp_SigBit) | SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C) cont = FALSE; while (mess = (struct IntuiMessage *) GetMsg (win->UserPort)) { switch (mess->Class) { case IDCMP_VANILLAKEY: if (mess->Code == 0x1b) cont = FALSE; break; case IDCMP_CLOSEWINDOW: cont = FALSE; break; } ReplyMsg ((struct Message *) mess); } } while (cont); CloseWindow (win); } if (CyberGfxBase) CloseLibrary (CyberGfxBase); return (0); } Es benutzt keine Linien, sondern Rechtecke, aber das sollte sich ja leicht anpassen lassen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ Dieser Beitrag wurde von thomas am 12.12.2005 um 11:53 Uhr editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
12.12.2005, 15:30 Uhr MaikG Posts: 5172 Nutzer |
>Ist nicht böse gemeint, aber Du solltest erstmal lernen >was struct bedeutet. Dann wirs Du feststellen, daß es >screen Strukturen gibt, deren Komponenten die gewünschten >Informationen enthalten. Ich glaube die Basic bezeichnung von struct ist TAGLIST. Ich werde es mal mit dem Beispiel probieren. [ - Antworten - Zitieren - Direktlink - ] |
12.12.2005, 16:04 Uhr gni Posts: 1106 Nutzer |
Zitat:Falsch :-( [ - Antworten - Zitieren - Direktlink - ] |
12.12.2005, 17:43 Uhr Blackbird Posts: 634 Nutzer |
Zitat: STRUCT bedeutet in Basic eher NEWTYPE -- regards Blackbird Have a look at: http://www.blackbird-net.de Skins for PlayCD OS3.9 BlackShoot, Zombies Apocalypse, GalagaWars PerfectPaint Catalogs [ - Antworten - Zitieren - Direktlink - ] |
13.12.2005, 09:21 Uhr Mad_Dog Posts: 1944 Nutzer |
Zitat: Falsch. Umgangssprachlich formuliert ist ein struct etwas, womit man mehrere Variablen (auch unterschiedlichen Typs) zusammenschnüren kann. Alles weitere erfährst Du z.B. in meinem C Kurs. -- http://www.norman-interactive.com [ - Antworten - Zitieren - Direktlink - ] |
13.12.2005, 09:59 Uhr MaikG Posts: 5172 Nutzer |
>Umgangssprachlich formuliert ist ein struct etwas, womit >man mehrere Variablen (auch unterschiedlichen Typs) >zusammenschnüren kann. Alles weitere erfährst Du z.B. in >meinem C Kurs. Ich möchte sagen die formulierung passt auch auf Taglist. Hab den Kurs noch nicht vollständig gedruckt... [ - Antworten - Zitieren - Direktlink - ] |
1 -2- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Write/ReadPixelLine8 | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |