git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added opengl check
[swftools.git]
/
src
/
swfc.c
diff --git
a/src/swfc.c
b/src/swfc.c
index
c470fbc
..
f2224a1
100644
(file)
--- a/
src/swfc.c
+++ b/
src/swfc.c
@@
-816,7
+816,8
@@
TAG* removeFromTo(TAG*from, TAG*to)
TAG*save = from->prev;
while(from!=to) {
TAG*next = from->next;
TAG*save = from->prev;
while(from!=to) {
TAG*next = from->next;
- swf_DeleteTag(from);
+ if(swf_isAllowedSpriteTag(from))
+ swf_DeleteTag(from);
from = next;
}
save->next = 0;
from = next;
}
save->next = 0;
@@
-953,9
+954,6
@@
static void s_endSprite()
{
SRECT r = currentrect;
{
SRECT r = currentrect;
- if(stack[stackpos].cut)
- tag = removeFromTo(stack[stackpos].cut, tag);
-
stackpos--;
instance_t *i;
stringarray_t* index =dictionary_index(&instances);
stackpos--;
instance_t *i;
stringarray_t* index =dictionary_index(&instances);
@@
-969,6
+967,12
@@
static void s_endSprite()
writeInstance(i);
}
}
writeInstance(i);
}
}
+
+ if(stack[stackpos].cut)
+ tag = removeFromTo(stack[stackpos].cut, tag);
+
+ // the writeInstance loop above may have inserted tags after what used yo be the current tag,
+ // so let's make sure 'tag' point to the current tag again.
while (tag->next)
tag = tag->next;
while (tag->next)
tag = tag->next;
@@
-1028,6
+1032,11
@@
static void s_endSWF()
swf = stack[stackpos].swf;
filename = stack[stackpos].filename;
swf = stack[stackpos].swf;
filename = stack[stackpos].filename;
+ // the writeInstance loop above may have inserted tags after what used yo be the current tag,
+ // so let's make sure 'tag' point to the current tag again.
+ while (tag->next)
+ tag = tag->next;
+
//if(tag->prev && tag->prev->id != ST_SHOWFRAME)
// tag = swf_InsertTag(tag, ST_SHOWFRAME);
tag = swf_InsertTag(tag, ST_SHOWFRAME);
//if(tag->prev && tag->prev->id != ST_SHOWFRAME)
// tag = swf_InsertTag(tag, ST_SHOWFRAME);
tag = swf_InsertTag(tag, ST_SHOWFRAME);
@@
-2409,7
+2418,7
@@
int parseTwip(char*str)
char*p = str;
int val = 0;
char ex = 0;
char*p = str;
int val = 0;
char ex = 0;
- char*lastpos = str;
+ char*lastpos = 0;
while(*p) {
if(*p == '+' || *p == '-' || *p == '/' || *p == '*')
ex = *p;
while(*p) {
if(*p == '+' || *p == '-' || *p == '/' || *p == '*')
ex = *p;
@@
-2431,6
+2440,7
@@
int parseTwip(char*str)
v = parseRawTwip(lastpos);
}
*p = save;
v = parseRawTwip(lastpos);
}
*p = save;
+ printf("%f %c= %f\n", val/20.0, ex, v/20.0);
if(ex == '+')
val += v;
else if(ex == '-')
if(ex == '+')
val += v;
else if(ex == '-')
@@
-2445,6
+2455,7
@@
int parseTwip(char*str)
lastpos = 0;
}
}
lastpos = 0;
}
}
+ printf("%s -> %.2f\n", str, val/20.0);
return val;
}
return val;
}