swf->firstTag = tag = swf_InsertTag(0, ST_SETBACKGROUNDCOLOR);
swf->compressed = compress;
swf_SetRGB(tag,&background);
-
+
if(stackpos==sizeof(stack)/sizeof(stack[0]))
syntaxerror("too many levels of recursion");
currentdepth = stack[stackpos].olddepth;
instances = stack[stackpos].oldinstances;
+ tag = swf_InsertTag(tag, ST_SHOWFRAME);
tag = swf_InsertTag(tag, ST_END);
tag = stack[stackpos].tag;
tag = removeFromTo(stack[stackpos].cut, tag);
stackpos--;
-
+
swf = stack[stackpos].swf;
filename = stack[stackpos].filename;
if(!(swf->movieSize.xmax-swf->movieSize.xmin) || !(swf->movieSize.ymax-swf->movieSize.ymin)) {
swf->movieSize.xmax += 20; /* 1 by 1 pixels */
swf->movieSize.ymax += 20;
+ warning("Empty bounding box for movie");
}
-
+
fi = open(filename, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0644);
if(fi<0) {
syntaxerror("couldn't create output file %s", filename);
void s_edittext(char*name, char*fontname, int size, int width, int height, char*text, RGBA*color, int maxlength, char*variable, int flags)
{
- SWFFONT*font;
+ SWFFONT*font = 0;
EditTextLayout layout;
SRECT r;
- font = dictionary_lookup(&fonts, fontname);
- if(!font)
- syntaxerror("font \"%s\" not known!", fontname);
+ if(fontname && *fontname) {
+ flags |= ET_USEOUTLINES;
+ font = dictionary_lookup(&fonts, fontname);
+ if(!font)
+ syntaxerror("font \"%s\" not known!", fontname);
+ }
tag = swf_InsertTag(tag, ST_DEFINEEDITTEXT);
swf_SetU16(tag, id);
layout.align = 0;
r.ymin = 0;
r.xmax = width;
r.ymax = height;
- swf_SetEditText(tag, flags|ET_USEOUTLINES, r, text, color, maxlength, font->id, size, &layout, variable);
+
+ swf_SetEditText(tag, flags, r, text, color, maxlength, font?font->id:0, size, &layout, variable);
s_addcharacter(name, id, tag, r);
incrementid();
sound_t* sound;
U16*samples;
int numsamples;
+ int t;
if(!readWAV(filename, &wav)) {
warning("Couldn't read wav file \"%s\"", filename);
s = tag = swf_InsertTag(tag, ST_DEFINESPRITE);
swf_SetU16(tag, id);
- swf_SetU16(tag, 0);
+ swf_SetU16(tag, swf.frameCount);
swf_Relocate(&swf, idmap);
static int c_flash(map_t*args)
{
- char* name = lu(args, "name");
+ char* filename = map_lookup(args, "filename");
char* compressstr = lu(args, "compress");
SRECT bbox = parseBox(lu(args, "bbox"));
int version = parseInt(lu(args, "version"));
int fps = (int)(parseFloat(lu(args, "fps"))*256);
int compress = 0;
RGBA color = parseColor(lu(args, "background"));
- if(!strcmp(name, "!default!") || override_outputname)
- name = outputname;
+
+ if(!filename || !*filename) {
+ /* for compatibility */
+ filename = map_lookup(args, "name");
+ if(!filename || !*filename) {
+ filename = 0;
+ } else {
+ //msg("<warning> line %d: .flash name=... is deprecated, use .flash filename=...", line);
+ msg("<notice> line %d: .flash name=... is deprecated, use .flash filename=...", line);
+ }
+ }
+
+ if(!filename || override_outputname)
+ filename = outputname;
if(!strcmp(compressstr, "default"))
compress = version==6;
compress = 0;
else syntaxerror("value \"%s\" not supported for the compress argument", compressstr);
- s_swf(name, bbox, version, fps, compress, color);
+ s_swf(filename, bbox, version, fps, compress, color);
return 0;
}
int isRelative(char*str)
static int c_action(map_t*args)
{
- readToken();
- if(type != RAWDATA) {
- syntaxerror("colon (:) expected");
+ char* filename = map_lookup(args, "filename");
+ if(!filename ||!*filename) {
+ readToken();
+ if(type != RAWDATA) {
+ syntaxerror("colon (:) expected");
+ }
+ s_action(text);
+ } else {
+ FILE*fi = fopen(filename, "rb");
+ if(!fi)
+ syntaxerror("Couldn't find file %s: %s", filename, strerror(errno));
+ int l;
+ char*text;
+ fseek(fi, 0, SEEK_END);
+ l = ftell(fi);
+ fseek(fi, 0, SEEK_SET);
+ text = rfx_alloc(l+1);
+ fread(text, l, 1, fi);
+ text[l]=0;
+ fclose(fi);
+
+ s_action(text);
}
-
- s_action(text);
return 0;
}
command_func_t* func;
char*arguments;
} arguments[] =
-{{"flash", c_flash, "bbox=autocrop background=black version=5 fps=50 name=!default! @compress=default"},
+{{"flash", c_flash, "bbox=autocrop background=black version=6 fps=50 name= filename= @compress=default"},
{"frame", c_frame, "n=<plus>1 name= @cut=no"},
// "import" type stuff
{"swf", c_swf, "name filename"},
{"egon", c_egon, "name vertices color=white line=1 @fill=none"},
{"text", c_text, "name text font size=100% color=white"},
- {"edittext", c_edittext, "name font size=100% width height text="" color=white maxlength=0 variable="" @password=0 @wordwrap=0 @multiline=0 @html=0 @noselect=0 @readonly=0 @border=0"},
+ {"edittext", c_edittext, "name font= size=100% width height text="" color=white maxlength=0 variable="" @password=0 @wordwrap=0 @multiline=0 @html=0 @noselect=0 @readonly=0 @border=0"},
{"morphshape", c_morphshape, "name start end"},
{"button", c_button, "name"},
{"show", c_show, "name x=0 y=0 red=+0 green=+0 blue=+0 alpha=+0 luminance= scale= scalex= scaley= pivot= pin= shear= rotate= ratio= above= below= as="},
// commands which start a block
//startclip (see above)
{"sprite", c_sprite, "name"},
- {"action", c_action, ""},
+ {"action", c_action, "filename="},
{"end", c_end, ""}
};