From 8386a755728a87ff16fa1d62e87b0dd5660b6aa2 Mon Sep 17 00:00:00 2001
From: kramm <kramm>
Date: Sun, 16 Mar 2008 10:14:08 +0000
Subject: [PATCH] added glow filter, and file-level detection of compressed
 swfs

---
 src/swfdump.c |   25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/swfdump.c b/src/swfdump.c
index 99917eb..9a2dc70 100644
--- a/src/swfdump.c
+++ b/src/swfdump.c
@@ -538,6 +538,15 @@ void dumpFilter(FILTER*filter)
 	FILTER_BLUR*f = (FILTER_BLUR*)filter;
 	printf("blurx: %f blury: %f\n", f->blurx, f->blury);
 	printf("passes: %d\n", f->passes);
+    } if(filter->type == FILTERTYPE_GLOW) {
+	FILTER_GLOW*f = (FILTER_GLOW*)filter;
+	printf("color %02x%02x%02x%02x\n", f->rgba.r,f->rgba.g,f->rgba.b,f->rgba.a);
+	printf("blurx: %f blury: %f strength: %f\n", f->blurx, f->blury, f->strength);
+	printf("passes: %d\n", f->passes);
+	printf("flags: %s%s%s\n", 
+		f->knockout?"knockout ":"",
+		f->composite?"composite ":"",
+		f->innerglow?"innerglow":"");
     } if(filter->type == FILTERTYPE_DROPSHADOW) {
 	FILTER_DROPSHADOW*f = (FILTER_DROPSHADOW*)filter;
 	printf("blurx: %f blury: %f\n", f->blurx, f->blury);
@@ -926,7 +935,6 @@ int main (int argc,char ** argv)
     }
 
     f = open(filename,O_RDONLY|O_BINARY);
-
     if (f<0)
     { 
 	char buffer[256];
@@ -934,6 +942,12 @@ int main (int argc,char ** argv)
         perror(buffer);
         exit(1);
     }
+    char header[3];
+    read(f, header, 3);
+    int compressed = (header[0]=='C');
+    close(f);
+    f = open(filename,O_RDONLY|O_BINARY);
+
     if FAILED(swf_ReadSWF(f,&swf))
     { 
         fprintf(stderr, "%s is not a valid SWF file or contains errors.\n",filename);
@@ -943,13 +957,18 @@ int main (int argc,char ** argv)
 
 #ifdef HAVE_STAT
     fstat(f, &statbuf);
-    if(statbuf.st_size != swf.fileSize && !swf.compressed)
+    if(statbuf.st_size != swf.fileSize && !compressed)
         dumperror("Real Filesize (%d) doesn't match header Filesize (%d)",
                 statbuf.st_size, swf.fileSize);
     filesize = statbuf.st_size;
 #endif
 
     close(f);
+    
+    if(action && swf.fileVersion>=9) {
+        fprintf(stderr, "Actionscript parsing (-a) not yet supported for SWF versions>=9\n");
+	action = 0;
+    }
 
     xsize = (swf.movieSize.xmax-swf.movieSize.xmin)/20;
     ysize = (swf.movieSize.ymax-swf.movieSize.ymin)/20;
@@ -1018,7 +1037,7 @@ int main (int argc,char ** argv)
 	return 0;
     } 
     printf("[HEADER]        File version: %d\n", swf.fileVersion);
-    if(swf.compressed) {
+    if(compressed) {
 	printf("[HEADER]        File is zlib compressed.");
 	if(filesize && swf.fileSize)
 	    printf(" Ratio: %02d%%\n", filesize*100/(swf.fileSize));
-- 
1.7.10.4