git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
compile rfxswf modules one by one
[swftools.git]
/
src
/
swfbbox.c
diff --git
a/src/swfbbox.c
b/src/swfbbox.c
index
97e3869
..
9fbacaf
100644
(file)
--- a/
src/swfbbox.c
+++ b/
src/swfbbox.c
@@
-89,7
+89,8
@@
int args_callback_option(char*name,char*val)
return 0;
}
else if(!strcmp(name, "q")) {
return 0;
}
else if(!strcmp(name, "q")) {
- verbose --;
+ if(verbose)
+ verbose --;
return 0;
}
else if(!strcmp(name, "e")) {
return 0;
}
else if(!strcmp(name, "e")) {
@@
-161,6
+162,8
@@
int hasid(TAG*tag)
return 1;
if(tag->id == ST_PLACEOBJECT2 && (tag->data[0] & 2))
return 1;
return 1;
if(tag->id == ST_PLACEOBJECT2 && (tag->data[0] & 2))
return 1;
+ if(tag->id == ST_PLACEOBJECT3 && (tag->data[0] & 2))
+ return 1;
return 0;
}
return 0;
}
@@
-170,6
+173,8
@@
int hasname(TAG*tag)
return 0;
if(tag->id == ST_PLACEOBJECT2 && (tag->data[0] & 0x20))
return 1;
return 0;
if(tag->id == ST_PLACEOBJECT2 && (tag->data[0] & 0x20))
return 1;
+ if(tag->id == ST_PLACEOBJECT3 && (tag->data[0] & 0x20))
+ return 1;
return 0;
}
return 0;
}
@@
-183,6
+188,12
@@
char* getname(TAG*tag)
swf_GetPlaceObject(tag, &o);
return o.name;
}
swf_GetPlaceObject(tag, &o);
return o.name;
}
+ if(tag->id == ST_PLACEOBJECT3 && (tag->data[0] & 0x20)) {
+ SWFPLACEOBJECT o;
+ tag->pos = 0;tag->readBit = 0;
+ swf_GetPlaceObject(tag, &o);
+ return o.name;
+ }
return 0;
}
return 0;
}
@@
-231,7
+242,7
@@
static placement_t* readPlacements(SWF*swf)
placement_t* p = (placement_t*)rfx_calloc(sizeof(placement_t)*65536);
TAG*tag = swf->firstTag;
while(tag) {
placement_t* p = (placement_t*)rfx_calloc(sizeof(placement_t)*65536);
TAG*tag = swf->firstTag;
while(tag) {
- if(tag->id == ST_PLACEOBJECT || tag->id == ST_PLACEOBJECT2) {
+ if(swf_isPlaceTag(tag)) {
SWFPLACEOBJECT*po = rfx_alloc(sizeof(SWFPLACEOBJECT));
int id;
swf_GetPlaceObject(tag, po);
SWFPLACEOBJECT*po = rfx_alloc(sizeof(SWFPLACEOBJECT));
int id;
swf_GetPlaceObject(tag, po);
@@
-293,8
+304,10
@@
static SRECT clipBBox(TAG*tag, SRECT mbbox, SRECT r)
return r;
}
return r;
}
- printf("ID %d\n", id);
- swf_DumpMatrix(stdout, &m);
+ if(verbose) {
+ printf("ID %d\n", id);
+ swf_DumpMatrix(stdout, &m);
+ }
mbbox.xmin -= m.tx;
mbbox.ymin -= m.ty;
mbbox.xmax -= m.tx;
mbbox.xmin -= m.tx;
mbbox.ymin -= m.ty;
mbbox.xmax -= m.tx;
@@
-303,25
+316,29
@@
static SRECT clipBBox(TAG*tag, SRECT mbbox, SRECT r)
mbbox.xmax *= 65536.0/m.sx;
mbbox.ymin *= 65536.0/m.sy;
mbbox.ymax *= 65536.0/m.sy;
mbbox.xmax *= 65536.0/m.sx;
mbbox.ymin *= 65536.0/m.sy;
mbbox.ymax *= 65536.0/m.sy;
-
- printf("border: %f/%f/%f/%f - rect: %f/%f/%f/%f\n",
- mbbox.xmin /20.0,
- mbbox.ymin /20.0,
- mbbox.xmax /20.0,
- mbbox.ymax /20.0,
- r.xmin /20.0,
- r.ymin /20.0,
- r.xmax /20.0,
- r.ymax /20.0);
+
+ if(verbose) {
+ printf("border: %f/%f/%f/%f - rect: %f/%f/%f/%f\n",
+ mbbox.xmin /20.0,
+ mbbox.ymin /20.0,
+ mbbox.xmax /20.0,
+ mbbox.ymax /20.0,
+ r.xmin /20.0,
+ r.ymin /20.0,
+ r.xmax /20.0,
+ r.ymax /20.0);
+ }
r = swf_ClipRect(mbbox, r);
r = swf_ClipRect(mbbox, r);
-
- printf("new rect: %f/%f/%f/%f\n",
- r.xmin /20.0,
- r.ymin /20.0,
- r.xmax /20.0,
- r.ymax /20.0);
+
+ if(verbose) {
+ printf("new rect: %f/%f/%f/%f\n",
+ r.xmin /20.0,
+ r.ymin /20.0,
+ r.xmax /20.0,
+ r.ymax /20.0);
+ }
return r;
}
return r;
}
@@
-398,7
+415,8
@@
static void swf_OptimizeBoundingBoxes(SWF*swf)
while (tag) {
if (tag->id == ST_DEFINESHAPE ||
tag->id == ST_DEFINESHAPE2 ||
while (tag) {
if (tag->id == ST_DEFINESHAPE ||
tag->id == ST_DEFINESHAPE2 ||
- tag->id == ST_DEFINESHAPE3) {
+ tag->id == ST_DEFINESHAPE3 ||
+ tag->id == ST_DEFINESHAPE4) {
SHAPE2 s;
if(verbose) printf("%s\n", swf_TagGetName(tag));
swf_ParseDefineShape(tag, &s);
SHAPE2 s;
if(verbose) printf("%s\n", swf_TagGetName(tag));
swf_ParseDefineShape(tag, &s);
@@
-480,7
+498,7
@@
static void showSwiftyOutput(SWF*swf)
if (tag->id == ST_SHOWFRAME) {
printf("}\n{\n\t{frame %d}\n", frame++);
}
if (tag->id == ST_SHOWFRAME) {
printf("}\n{\n\t{frame %d}\n", frame++);
}
- if (tag->id == ST_PLACEOBJECT || tag->id == ST_PLACEOBJECT2) {
+ if (swf_isPlaceTag(tag)) {
if(hasid(tag)) {
depth2id[swf_GetDepth(tag)] = swf_GetPlaceID(tag);
}
if(hasid(tag)) {
depth2id[swf_GetDepth(tag)] = swf_GetPlaceID(tag);
}
@@
-488,7
+506,7
@@
static void showSwiftyOutput(SWF*swf)
depth2name[swf_GetDepth(tag)] = getname(tag);
}
}
depth2name[swf_GetDepth(tag)] = getname(tag);
}
}
- if (tag->id == ST_PLACEOBJECT || tag->id == ST_PLACEOBJECT2) {
+ if (swf_isPlaceTag(tag)) {
MATRIX m = getmatrix(tag);
U16 id = depth2id[swf_GetDepth(tag)];
char*name = depth2name[swf_GetDepth(tag)];
MATRIX m = getmatrix(tag);
U16 id = depth2id[swf_GetDepth(tag)];
char*name = depth2name[swf_GetDepth(tag)];
@@
-525,13
+543,13
@@
static SRECT getMovieClipBBox(TAG*tag)
memset(&movieSize,0,sizeof(SRECT));
memset(&movieSize,0,sizeof(SRECT));
- while (tag->id != ST_END) {
- if (tag->id == ST_PLACEOBJECT || tag->id == ST_PLACEOBJECT2) {
+ while (tag && tag->id != ST_END) {
+ if (swf_isPlaceTag(tag)) {
if(hasid(tag)) {
depth2id[swf_GetDepth(tag)] = swf_GetPlaceID(tag);
}
}
if(hasid(tag)) {
depth2id[swf_GetDepth(tag)] = swf_GetPlaceID(tag);
}
}
- if (tag->id == ST_PLACEOBJECT || tag->id == ST_PLACEOBJECT2) {
+ if (swf_isPlaceTag(tag)) {
MATRIX m = getmatrix(tag);
U16 id = depth2id[swf_GetDepth(tag)];
SRECT bbox = bboxes[id];
MATRIX m = getmatrix(tag);
U16 id = depth2id[swf_GetDepth(tag)];
SRECT bbox = bboxes[id];