X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswfshape.c;h=024041b53efddb6cc22da53fdeadbf30a9c8a4ed;hb=30ba7633c3e0be8ed075814f26075cf8171a7db9;hp=e7ad867886b0d1b4ec91008e6a7a5e6881ee237c;hpb=64a243ac0abed2a4607a1ed7cfd147ea4aade891;p=swftools.git diff --git a/lib/modules/swfshape.c b/lib/modules/swfshape.c index e7ad867..024041b 100644 --- a/lib/modules/swfshape.c +++ b/lib/modules/swfshape.c @@ -625,7 +625,8 @@ SRECT swf_GetShapeBoundingBox(SHAPELINE*shape) r.xmin = r.ymin = SCOORD_MAX; r.xmax = r.ymax = SCOORD_MIN; if(!shape) { - fprintf(stderr, "rfxswf: Warning: empty Shape\n"); + memset(&r, 0, sizeof(SRECT)); + return r; } while(shape) { if(shape->x < r.xmin) r.xmin = shape->x; @@ -676,20 +677,112 @@ SHAPE2* swf_ShapeToShape2(SHAPE*shape) { return shape2; }; -SHAPE2* parseDefineShape(TAG*tag) +/*LINESTYLE* parseFillStyleArray(TAG*tag) +{ + U16 count; + int t; + int num=0; + if(tag->id == ST_DEFINESHAPE) + num = 1; + else if(tag->id == ST_DEFINESHAPE2) + num = 2; + else if(tag->id == ST_DEFINESHAPE3) + num = 3; + else return 0; + + count = swf_GetU8(tag); + if(count == 0xff && num>1) // defineshape2,3 only + count = swf_GetU16(tag); + + for(t=0;t=3?1:0); + } + else if(type == 0x40 || type == 0x41) + { + swf_ResetReadBits(tag); + // we made it. + if(tag->data[tag->pos] != 0xff || + tag->data[tag->pos+1] != 0xff) + //(callback)(tag, tag->pos, callback_data); + + swf_GetU16(tag); + swf_ResetReadBits(tag); + swf_GetMatrix(tag, NULL); + swf_GetMatrix(tag, NULL); + } + else { + fprintf(stderr, "rfxswf:swftools.c Unknown fillstyle:0x%02x\n",type); + } + } + swf_ResetReadBits(tag); + count = swf_GetU8(tag); // line style array + if(count == 0xff) + count = swf_GetU16(tag); + for(t=0;tid == ST_DEFINESHAPE) num = 1; else if(tag->id == ST_DEFINESHAPE2) num = 2; else if(tag->id == ST_DEFINESHAPE3) num = 3; - /* todo */ - fprintf(stderr, "Not implemented yet!\n"); - exit(1); + else return 0; + + swf_GetU16(); + + shape = (SHAPE2*)malloc(sizeof(SHAPE2)); + +// LINESTYLE * linestyles; +// int numlinestyles; +// FILLSTYLE* fillstyles; +// int numfillstyles; +// struct _SHAPELINE * lines; +// SRECT* bbox; // may be NULL + + swf_GetRect(); + swf_ResetReadBits(t); + fill = (U16)swf_GetBits(t,4); + line = (U16)swf_GetBits(t,4); + + swf_Get + + + + + + return 0; -} +}*/ SHAPE* swf_Shape2ToShape(SHAPE2*shape)