added function swf_isFontTag().
[swftools.git] / lib / modules / swftools.c
index c33ba56..58962e1 100644 (file)
@@ -42,13 +42,14 @@ MATRIX * swf_MatrixJoin(MATRIX * d,MATRIX * s1,MATRIX * s2)
   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 = RFXSWF_SP(s1->sx,s1->r1,s2->tx,s2->ty);
+  d->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);
   
@@ -904,6 +905,30 @@ U8 swf_isShapeTag(TAG*tag)
     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 || 
@@ -1113,3 +1138,22 @@ void swf_SetDefineBBox(TAG * tag, SRECT newbbox)
     }
 }
 
+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;
+}
+