X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fflash.c;h=f24b83450710cc31f3cbe28fc15f3d6b883d0d6b;hb=8011e13e57219e2ffe5fd1398719d16482419b0e;hp=fff828437fa632d359fb2bcf8327f32594f9a3c5;hpb=fc554a43712b76d16b41ec77dd311b4a78b1ef6b;p=swftools.git diff --git a/src/flash.c b/src/flash.c index fff8284..f24b834 100644 --- a/src/flash.c +++ b/src/flash.c @@ -42,6 +42,21 @@ struct flash_header swf_read_header() return head; } +void swf_write_header(struct writer_t*w, struct flash_header*head) +{ + writer_writeu8(w, head->version); + writer_writeu32(w, head->length); + + writer_writebits(w, 31, 5); + writer_writebits(w, head->boundingBox.x1, 31); + writer_writebits(w, head->boundingBox.x2, 31); + writer_writebits(w, head->boundingBox.y1, 31); + writer_writebits(w, head->boundingBox.y2, 31); + writer_resetbits(w); + writer_writeu16(w, head->rate); + writer_writeu16(w, head->count); +} + struct RGB readRGB() { struct RGB rgb; @@ -69,7 +84,7 @@ struct GRADIENT readGRADIENT(int shape) for(t=0;t=3) + if(shape<3) gradient.rgb[t] = readRGB(); else gradient.rgba[t] = readRGBA(); @@ -108,14 +123,14 @@ void writeRECT(u8**pos, struct RECT*r) *pos = writer_getpos(&w); } -struct CXFORM readCXFORM() +struct CXFORM readCXFORM(char alpha) { struct CXFORM c; int bits; c.hasadd=readbit(); c.hasmult=readbit(); bits=getbits(4); - c.alpha = 0; + c.alpha = alpha; if (c.hasmult) { @@ -301,7 +316,7 @@ void placeobject_init (struct PlaceObject*obj, struct swf_tag*tag) obj -> matrix = readMATRIX(); obj -> hascxform = (getinputpos() < &tag->data[tag->length]); if(obj -> hascxform) - obj -> cxform = readCXFORM(); + obj -> cxform = readCXFORM(0); } void placeobject_write (struct PlaceObject*obj, struct writer_t*w) @@ -354,7 +369,7 @@ void placeobject2_init (struct PlaceObject2*obj,struct swf_tag*tag) obj->matrix = readMATRIX(); } if(obj->hascolortransform) { - obj->cxform = readCXFORM(); + obj->cxform = readCXFORM(0); } if(obj->hasratio) { obj->ratio=readu16();