if (!s1) return (s2)?(MATRIX *)memcpy(d,s2,sizeof(MATRIX)):NULL;
if (!s2) return (MATRIX *)memcpy(d,s1,sizeof(MATRIX));
- d->tx = s1->tx + s2->tx;
- d->ty = s1->ty + s2->ty;
+ d->tx = s1->tx + RFXSWF_SP(s1->sx,s1->r1,s2->tx,s2->ty);
+ d->ty = s1->ty + RFXSWF_SP(s1->r0,s1->sy,s2->tx,s2->ty);
d->sx = RFXSWF_SP(s1->sx,s1->r1,s2->sx,s2->r0);
- d->sy = RFXSWF_SP(s1->r0,s1->sy,s2->r1,s2->sy);
d->r0 = RFXSWF_SP(s1->r0,s1->sy,s2->sx,s2->r0);
+
d->r1 = RFXSWF_SP(s1->sx,s1->r1,s2->r1,s2->sy);
+ d->sy = RFXSWF_SP(s1->r0,s1->sy,s2->r1,s2->sy);
//DumpMatrix(NULL,d);
#define DEBUG_ENUMERATE if(0)
-static void enumerateUsedIDs_styles(TAG * tag, void (*callback)(TAG*, int, void*), void*callback_data, int num, int morph)
+void enumerateUsedIDs_styles(TAG * tag, void (*callback)(TAG*, int, void*), void*callback_data, int num, int morph)
{
U16 count;
int t;
for(t=0;t<num;t++) {
int id = GET16(&tag->data[ptr[t]]);
if(slaveids[id]<0) {
- fprintf(stderr, "swf_Relocate: Mapping id never encountered before: %d\n", id);
+ fprintf(stderr, "swf_Relocate: Mapping id (%d) never encountered before in %s\n", id,
+ swf_TagGetName(tag));
return ;
}
id = slaveids[id];
return 0;
}
+U8 swf_isPlaceTag(TAG*tag)
+{
+ if(tag->id == ST_PLACEOBJECT ||
+ tag->id == ST_PLACEOBJECT2)
+ return 1;
+ return 0;
+}
+U8 swf_isTextTag(TAG*tag)
+{
+ if(tag->id == ST_DEFINETEXT ||
+ tag->id == ST_DEFINETEXT2)
+ return 1;
+ return 0;
+}
+
+U8 swf_isFontTag(TAG*tag)
+{
+ if(tag->id == ST_DEFINEFONT ||
+ tag->id == ST_DEFINEFONT2 ||
+ tag->id == ST_DEFINEFONTINFO)
+ return 1;
+ return 0;
+}
+
U8 swf_isImageTag(TAG*tag)
{
if(tag->id == ST_DEFINEBITSJPEG ||
}
}
+RGBA swf_GetSWFBackgroundColor(SWF*swf)
+{
+ TAG*t=swf->firstTag;
+ RGBA color;
+ color.r = color.b = color.g = 0;
+ color.a = 255;
+ while(t) {
+ if(t->id == ST_SETBACKGROUNDCOLOR) {
+ swf_SetTagPos(t, 0);
+ color.r = swf_GetU8(t);
+ color.g = swf_GetU8(t);
+ color.b = swf_GetU8(t);
+ break;
+ }
+ t=t->next;
+ }
+ return color;
+}
+