if page range is given and % filename syntax is used, name files according to page...
[swftools.git] / src / swfdump.c
index 3accbfb..a77e413 100644 (file)
@@ -785,11 +785,13 @@ char* fillstyle2str(FILLSTYLE*style)
            /* TODO: display information about that bitmap */
            sprintf(stylebuf, "BITMAPt%s %d", (style->type&2)?"n":"", style->id_bitmap);
            /* TODO: show matrix */
+           //swf_DumpMatrix(stdout, &style->m);
            break;
        case 0x41: case 0x43:
            /* TODO: display information about that bitmap */
            sprintf(stylebuf, "BITMAPc%s %d", (style->type&2)?"n":"", style->id_bitmap);
            /* TODO: show matrix */
+           //swf_DumpMatrix(stdout, &style->m);
            break;
        default:
            sprintf(stylebuf, "UNKNOWN[%02x]",style->type);
@@ -1176,6 +1178,20 @@ int main (int argc,char ** argv)
         else if(tag->id == ST_FREECHARACTER) {
             printf(" frees object %04d", swf_GetPlaceID(tag));
         }
+        else if(tag->id == ST_DOABC) {
+            swf_SetTagPos(tag, 0);
+            U32 flags = swf_GetU32(tag);
+            char*s = swf_GetString(tag);
+            if(*s) {
+                printf(" \"%s\"", s);
+            }
+            if(flags&1) {
+                if(name)
+                    printf(",");
+                printf(" lazy load");
+            }
+            swf_SetTagPos(tag, 0);
+        }
        else if(tag->id == ST_STARTSOUND) {
            U8 flags;
            U16 id;
@@ -1235,18 +1251,15 @@ int main (int argc,char ** argv)
            if(issprite) {spriteframe++; spriteframelabel = 0;}
            if(!issprite) {mainframe++; framelabel = 0;}
        }
-
-       if(tag->id == ST_SETBACKGROUNDCOLOR) {
+        else if(tag->id == ST_SETBACKGROUNDCOLOR) {
            U8 r = swf_GetU8(tag);
            U8 g = swf_GetU8(tag);
            U8 b = swf_GetU8(tag);
-           printf(" (%02x/%02x/%02x)\n",r,g,b);
+           printf(" (%02x/%02x/%02x)",r,g,b);
        }
        else if(tag->id == ST_PROTECT) {
            if(tag->len>0) {
-               printf(" %s\n", swf_GetString(tag));
-           } else {
-               printf("\n");
+               printf(" %s", swf_GetString(tag));
            }
        }
        else if(tag->id == ST_CSMTEXTSETTINGS) {
@@ -1266,10 +1279,11 @@ int main (int argc,char ** argv)
                printf("unknown[%08x],", flags);
            float thickness = swf_GetFixed(tag);
            float sharpness = swf_GetFixed(tag);
-           printf("s=%.2f,t=%.2f)\n", thickness, sharpness);
+           printf("s=%.2f,t=%.2f)", thickness, sharpness);
            swf_GetU8(tag);
        }
-       else if(tag->id == ST_DEFINEBITSLOSSLESS ||
+
+       if(tag->id == ST_DEFINEBITSLOSSLESS ||
           tag->id == ST_DEFINEBITSLOSSLESS2) {
            handleDefineBits(tag);
            printf("\n");
@@ -1352,8 +1366,10 @@ int main (int argc,char ** argv)
             actions = swf_ActionGet(tag);
             swf_DumpActions(actions, myprefix);
         }
-        else if(tag->id == ST_DOABC && action) {
-            swf_ReadABC(tag);
+        else if((tag->id == ST_DOABC || tag->id == ST_RAWABC) && action) {
+            void*abccode = swf_ReadABC(tag);
+            swf_DumpABC(stdout, abccode, "");
+            swf_FreeABC(abccode);
         }
         else if(tag->id == ST_DOINITACTION && action) {
             ActionTAG*actions;