git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cleaned up, added/moved some items.
[swftools.git]
/
src
/
swfc.c
diff --git
a/src/swfc.c
b/src/swfc.c
index
9fd752a
..
bc72efe
100644
(file)
--- a/
src/swfc.c
+++ b/
src/swfc.c
@@
-28,6
+28,7
@@
static char * filename = 0;
static char * outputname = "output.swf";
static int verbose = 2;
static char * filename = 0;
static char * outputname = "output.swf";
static int verbose = 2;
+static int override_outputname = 0;
static struct options_t options[] =
{
static struct options_t options[] =
{
@@
-45,6
+46,7
@@
int args_callback_option(char*name,char*val)
}
else if(!strcmp(name, "o")) {
outputname = val;
}
else if(!strcmp(name, "o")) {
outputname = val;
+ override_outputname = 1;
return 1;
}
else if(!strcmp(name, "v")) {
return 1;
}
else if(!strcmp(name, "v")) {
@@
-854,7
+856,7
@@
void s_change(char*instance, parameters_t p2)
p1 = i->parameters;
allframes = currentframe - i->lastFrame - 1;
p1 = i->parameters;
allframes = currentframe - i->lastFrame - 1;
- if(!allframes) {
+ if(allframes < 0) {
warning(".change ignored. can only .put/.change an object once per frame.");
return;
}
warning(".change ignored. can only .put/.change an object once per frame.");
return;
}
@@
-1041,7
+1043,7
@@
int parseColor2(char*str, RGBA*color)
int r,g,b,a;
int t;
char*names[8] = {"black", "blue", "green", "cyan",
int r,g,b,a;
int t;
char*names[8] = {"black", "blue", "green", "cyan",
- "red", "violet", "yellow", "white"};
+ "red", "magenta", "yellow", "white"};
a=255;
r=g=b=0;
if(str[0]=='#' && (l==7 || l==9)) {
a=255;
r=g=b=0;
if(str[0]=='#' && (l==7 || l==9)) {
@@
-1168,7
+1170,7
@@
static int c_swf(map_t*args)
int version = parseInt(lu(args, "version"));
int fps = (int)(parseFloat(lu(args, "fps"))*256);
int compress = 0;
int version = parseInt(lu(args, "version"));
int fps = (int)(parseFloat(lu(args, "fps"))*256);
int compress = 0;
- if(!strcmp(name, "!default!"))
+ if(!strcmp(name, "!default!") || override_outputname)
name = outputname;
if(!strcmp(compressstr, "default"))
name = outputname;
if(!strcmp(compressstr, "default"))
@@
-1211,7
+1213,7
@@
int points_initialized = 0;
SPOINT getPoint(SRECT r, char*name)
{
SPOINT getPoint(SRECT r, char*name)
{
- int l;
+ int l=0;
if(!strcmp(name, "center")) {
SPOINT p;
p.x = (r.xmin + r.xmax)/2;
if(!strcmp(name, "center")) {
SPOINT p;
p.x = (r.xmin + r.xmax)/2;
@@
-1219,9
+1221,10
@@
SPOINT getPoint(SRECT r, char*name)
return p;
}
return p;
}
- l = (int)dictionary_lookup(&points, name);
+ if(points_initialized)
+ l = (int)dictionary_lookup(&points, name);
if(l==0) {
if(l==0) {
- syntaxerror("Couldn't find point \"%s\".", name);
+ syntaxerror("Invalid point: \"%s\".", name);
}
l--;
return *(SPOINT*)&mpoints.buffer[l];
}
l--;
return *(SPOINT*)&mpoints.buffer[l];
@@
-1477,9
+1480,11
@@
static int c_frame(map_t*args)
{
char*framestr = lu(args, "n");
int frame;
{
char*framestr = lu(args, "n");
int frame;
- if(framestr[0]=='+') {
+ if(isRelative(framestr)) {
frame = s_getframe();
frame = s_getframe();
- frame += parseInt(framestr+1);
+ if(getSign(framestr)<0)
+ syntaxerror("relative frame expressions must be positive");
+ frame += parseInt(getOffset(framestr));
}
else {
frame = parseInt(framestr);
}
else {
frame = parseInt(framestr);
@@
-1599,7
+1604,7
@@
static struct {
char*arguments;
} arguments[] =
{{"swf", c_swf, "bbox=autocrop version=5 fps=50 name=!default! @compress=default"},
char*arguments;
} arguments[] =
{{"swf", c_swf, "bbox=autocrop version=5 fps=50 name=!default! @compress=default"},
- {"frame", c_frame, "n=+1"},
+ {"frame", c_frame, "n=<plus>1"},
// "import" type stuff
{"shape", c_shape, "name filename"},
// "import" type stuff
{"shape", c_shape, "name filename"},