X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswftools.c;h=a1befc2d9ff4d22267fe5806e7eef55ccb8b119f;hb=757c0aa98fb4168e6a7bc208cc89875ca88b842c;hp=5349620675461a456ac197da13abacbe55839e5f;hpb=07b215b2a0b442a8f9b832b9ff94755bb6191d48;p=swftools.git diff --git a/lib/modules/swftools.c b/lib/modules/swftools.c index 5349620..a1befc2 100644 --- a/lib/modules/swftools.c +++ b/lib/modules/swftools.c @@ -78,6 +78,7 @@ U16 swf_GetDefineID(TAG * t) case ST_DEFINESHAPE2: case ST_DEFINESHAPE3: case ST_DEFINEMORPHSHAPE: + case ST_DEFINEEDITTEXT: case ST_DEFINEBITS: case ST_DEFINEBITSJPEG2: case ST_DEFINEBITSJPEG3: @@ -85,15 +86,16 @@ U16 swf_GetDefineID(TAG * t) case ST_DEFINEBITSLOSSLESS2: case ST_DEFINEBUTTON: case ST_DEFINEBUTTON2: - case ST_DEFINEBUTTONCXFORM: - case ST_DEFINEBUTTONSOUND: + case ST_DEFINEBUTTONCXFORM: //pseudodefine + case ST_DEFINEBUTTONSOUND: //pseudodefine case ST_DEFINEFONT: case ST_DEFINEFONT2: - case ST_DEFINEFONTINFO: + case ST_DEFINEFONTINFO: //pseudodefine case ST_DEFINETEXT: case ST_DEFINETEXT2: case ST_DEFINESOUND: case ST_DEFINESPRITE: + case ST_NAMECHARACTER: //pseudodefine id = swf_GetU16(t); break; } @@ -131,7 +133,7 @@ U16 swf_GetPlaceID(TAG * t) return id; } -int definingtagids[] = +static int swf_definingtagids[] = {ST_DEFINESHAPE, ST_DEFINESHAPE2, ST_DEFINESHAPE3, @@ -155,7 +157,7 @@ int definingtagids[] = }; // tags which may be used inside a sprite definition -int spritetagids[] = +static int swf_spritetagids[] = {ST_SHOWFRAME, ST_PLACEOBJECT, ST_PLACEOBJECT2, @@ -171,13 +173,22 @@ int spritetagids[] = -1 }; +static int swf_pseudodefiningtagids[] = +{ + ST_DEFINEFONTINFO, + ST_DEFINEBUTTONCXFORM, + ST_DEFINEBUTTONSOUND, + ST_NAMECHARACTER, + -1 +}; + U8 swf_isAllowedSpriteTag(TAG * tag) { int id = tag->id; int t=0; - while(spritetagids[t]>=0) + while(swf_spritetagids[t]>=0) { - if(spritetagids[t] == id) + if(swf_spritetagids[t] == id) return 1; t++; } @@ -188,9 +199,22 @@ U8 swf_isDefiningTag(TAG * tag) { int id = tag->id; int t=0; - while(definingtagids[t]>=0) + while(swf_definingtagids[t]>=0) + { + if(swf_definingtagids[t] == id) + return 1; + t++; + } + return 0; +} + +U8 swf_isPseudoDefiningTag(TAG * tag) +{ + int id = tag->id; + int t=0; + while(swf_pseudodefiningtagids[t]>=0) { - if(definingtagids[t] == id) + if(swf_pseudodefiningtagids[t] == id) return 1; t++; }