X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswftools.c;h=9b5c41a22e42e979c6e5b8098e6ae6cd4d20a731;hb=f908dd0674bc6cd66e73cd73f9d8073a992f0528;hp=564825d72ae0bca6400aac3639b35b0a71b86fdc;hpb=986a1e638b9fd6b2c927fdd14b3216684c127f86;p=swftools.git diff --git a/lib/modules/swftools.c b/lib/modules/swftools.c index 564825d..9b5c41a 100644 --- a/lib/modules/swftools.c +++ b/lib/modules/swftools.c @@ -99,10 +99,12 @@ U16 swf_GetDefineID(TAG * t) case ST_DEFINEFONT: case ST_DEFINEFONT2: case ST_DEFINEFONTINFO: //pseudodefine + case ST_DEFINEFONTINFO2: //pseudodefine case ST_DEFINETEXT: case ST_DEFINETEXT2: case ST_DEFINESOUND: case ST_DEFINESPRITE: + case ST_DEFINEVIDEOSTREAM: case ST_NAMECHARACTER: //pseudodefine id = swf_GetU16(t); break; @@ -162,6 +164,7 @@ static int swf_definingtagids[] = ST_DEFINEBUTTON, ST_DEFINEBUTTON2, ST_DEFINESOUND, + ST_DEFINEVIDEOSTREAM, -1 }; @@ -185,9 +188,11 @@ static int swf_spritetagids[] = static int swf_pseudodefiningtagids[] = { ST_DEFINEFONTINFO, + ST_DEFINEFONTINFO2, ST_DEFINEBUTTONCXFORM, ST_DEFINEBUTTONSOUND, ST_NAMECHARACTER, + ST_DOINITACTION, -1 }; @@ -434,7 +439,6 @@ void enumerateUsedIDs(TAG * tag, int base, void (*callback)(TAG*, int, void*), v case ST_FREECHARACTER: /* unusual tags, which all start with an ID */ case ST_NAMECHARACTER: case ST_GENERATORTEXT: - case ST_MX3: callback(tag, tag->pos + base, callback_data); break; case ST_PLACEOBJECT: @@ -572,12 +576,19 @@ void enumerateUsedIDs(TAG * tag, int base, void (*callback)(TAG*, int, void*), v break; } case ST_DEFINEFONTINFO: + case ST_DEFINEFONTINFO2: + case ST_VIDEOFRAME: callback(tag, tag->pos + base, callback_data); break; + case ST_DEFINEVIDEOSTREAM: + break; - //case ST_DEFINEMORPHSHAPE: /* disabled for now (doesn't work) */ + case ST_DOINITACTION: + callback(tag, tag->pos + base, callback_data); + break; - case ST_DEFINESHAPE3: // these thingies might have bitmap ids in their fillstyles + case ST_DEFINEMORPHSHAPE: + case ST_DEFINESHAPE3: num++; //fallthrough case ST_DEFINESHAPE2: num++; //fallthrough @@ -585,23 +596,28 @@ void enumerateUsedIDs(TAG * tag, int base, void (*callback)(TAG*, int, void*), v int fillbits; int linebits; int id; + int numshapes = 1; int morph = 0; - if(tag->id == ST_DEFINEMORPHSHAPE) + if(tag->id == ST_DEFINEMORPHSHAPE) { + numshapes = 2; morph = 1; + } id = swf_GetU16(tag); // id; swf_GetRect(tag, NULL); // bounds if(morph) { + swf_ResetReadBits(tag); swf_GetRect(tag, NULL); // bounds2 swf_GetU32(tag); //offset to endedges } - + DEBUG_ENUMERATE printf("Tag:%d Name:%s ID:%d\n", tag->id, swf_TagGetName(tag), id); enumerateUsedIDs_styles(tag, callback, callback_data, num, morph); DEBUG_ENUMERATE printf("-------\n"); - while(--morph>=0) /* morph shapes define two shapes */ + while(--numshapes>=0) /* morph shapes define two shapes */ { + DEBUG_ENUMERATE printf("shape:%d\n", numshapes); fillbits = swf_GetBits(tag, 4); linebits = swf_GetBits(tag, 4); DEBUG_ENUMERATE printf("%d %d\n", fillbits, linebits);