From: kramm Date: Mon, 3 Dec 2001 20:32:16 +0000 (+0000) Subject: added additive bitmap routines. (for alpha overlaying) X-Git-Tag: release-0-2-1~60 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=10feac6a669258d489cbfd21a2842359093ca687 added additive bitmap routines. (for alpha overlaying) --- diff --git a/lib/example/avi2swf.cc b/lib/example/avi2swf.cc index 11d812b..7f3ad62 100644 --- a/lib/example/avi2swf.cc +++ b/lib/example/avi2swf.cc @@ -109,6 +109,11 @@ int main (int argc,char ** argv) int frame = 0; + int lastsize = (head.dwWidth+3) * head.dwHeight * 4; + U8* lastdata = (U8*)malloc(lastsize); + U8* data; + memset(lastdata,0, lastsize); + while(1) { if(vstream->ReadFrame()<0) { printf("\n"); @@ -118,7 +123,7 @@ int main (int argc,char ** argv) fflush(stdout); CImage*img = vstream->GetFrame(); img->ToRGB(); - U8* data = img->data(); + data = img->data(); int width = img->width(); int bpp = img->bpp(); int width4 = width*4; @@ -143,19 +148,49 @@ int main (int argc,char ** argv) */ int type = 1; + int rel = 0; if(type == 0) { tag = swf_InsertTag(tag, ST_DEFINEBITSLOSSLESS); swf_SetU16(tag, frame*2); + U8*mylastdata = lastdata; for(y=0;yat(y); + U8*mydata = img->at(y); + if(!rel) for(x=0;x64) + { + nd[3]=mydata[0]; + nd[2]=mydata[1]; + nd[1]=mydata[2]; + nd[0]=255; + } else { + nd[3]=0; + nd[2]=0; + nd[1]=0; + nd[0]=0; + } + mylastdata[2] = mydata[2]; + mylastdata[1] = mydata[1]; + mylastdata[0] = mydata[0]; + nd+=4; + mydata+=3; + mylastdata+=3; } } swf_SetLosslessBits(tag,width,height,newdata,BMF_32BIT); @@ -163,16 +198,26 @@ int main (int argc,char ** argv) if(type == 1) { tag = swf_InsertTag(tag, ST_DEFINEBITSJPEG2); swf_SetU16(tag, frame*2); - JPEGBITS * jb = swf_SetJPEGBitsStart(tag,width,height,10); + JPEGBITS * jb = swf_SetJPEGBitsStart(tag,width,height,1); + U8*mylastdata = lastdata; for(y=0;yat(y); + U8*mydata = img->at(y); for(x=0;x