return currentframe+1;
}
-void s_frame(int nr, int cut, char*name)
+void s_frame(int nr, int cut, char*name, char anchor)
{
int t;
TAG*now = tag;
if(t==nr-1 && name && *name) {
tag = swf_InsertTag(tag, ST_FRAMELABEL);
swf_SetString(tag, name);
- swf_SetU8(tag, 1); //make this an anchor
+ if(anchor)
+ swf_SetU8(tag, 1); //make this an anchor
}
}
- if(nr == 0 && currentframe == 0 && name) {
+ if(nr == 0 && currentframe == 0 && name && *name) {
tag = swf_InsertTag(tag, ST_FRAMELABEL);
swf_SetString(tag, name);
- swf_SetU8(tag, 1); //make this an anchor
+ if(anchor)
+ swf_SetU8(tag, 1); //make this an anchor
}
if(cut) {
parameters_t p;
FILLSTYLE*fs = &texture->fs;
+ memset(&p, 0, sizeof(parameters_t));
+
if(bitmap) {
fs->type = FILL_TILED;
fs->id_bitmap = bitmap->id;
unsigned blocksize = 1152;
int is_mp3 = 0;
- if(readWAV(filename, &wav)) {
+ if(wav_read(&wav, filename)) {
int t;
- convertWAV2mono(&wav, &wav2, 44100);
+ wav_convert2mono(&wav, &wav2, 44100);
samples = (U16*)wav2.data;
numsamples = wav2.size/2;
free(wav.data);
{
swf_SetSoundDefine(tag, samples, numsamples);
}
-
+
+ tag = swf_InsertTag(tag, ST_NAMECHARACTER);
+ swf_SetU16(tag, id);
+ swf_SetString(tag, name);
+ tag = swf_InsertTag(tag, ST_EXPORTASSETS);
+ swf_SetU16(tag, 1);
+ swf_SetU16(tag, id);
+ swf_SetString(tag, name);
+
sound = (sound_t*)malloc(sizeof(sound_t)); /* mem leak */
sound->tag = tag;
sound->id = id;
ActionTAG* a = 0;
instance_t* object = 0;
if(name)
- dictionary_lookup(&instances, name);
+ object = (instance_t*)dictionary_lookup(&instances, name);
if(!object && name && *name) {
/* we have a name, but couldn't find it. Abort. */
return 0;
int t;
return sign*parseInt(str)*20;
} else {
- int l=strlen(++dot);
+ char* old = strdup(str);
+ int l=strlen(dot+1);
char*s;
+ *dot++ = 0;
for(s=str;s<dot-1;s++)
if(*s<'0' || *s>'9')
syntaxerror("Not a coordinate: \"%s\"", str);
syntaxerror("Not a coordinate: \"%s\"", str);
}
if(l>2 || (l==2 && (dot[1]!='0' && dot[1]!='5'))) {
- warning("precision loss: %s converted to twip: %s", str, dot);
+ dot[1] = ((dot[1]-0x30)/5)*5 + 0x30;
dot[2] = 0;
l=2;
+ warning("precision loss: %s converted to twip: %s.%s", old, str, dot);
}
+ free(old);
if(l==0)
return sign*atoi(str)*20;
if(l==1)
{
char*framestr = lu(args, "n");
char*cutstr = lu(args, "cut");
+
char*name = lu(args, "name");
+ char*anchor = lu(args, "anchor");
+ char buf[40];
+
+ if(!strcmp(anchor, "anchor") && !*name)
+ name = framestr;
+
int frame;
int cut = 0;
if(strcmp(cutstr, "no"))
&& !(frame==1 && s_getframe()==frame)) // equality is o.k. for frame 0
syntaxerror("frame expression must be >%d (is:%s)", s_getframe(), framestr);
}
- s_frame(frame, cut, name);
+ s_frame(frame, cut, name, !strcmp(anchor, "anchor"));
return 0;
}
static int c_primitive(map_t*args)
char*arguments;
} arguments[] =
{{"flash", c_flash, "bbox=autocrop background=black version=6 fps=50 name= filename= @compress=default"},
- {"frame", c_frame, "n=<plus>1 name= @cut=no"},
+ {"frame", c_frame, "n=<plus>1 name= @cut=no @anchor=no"},
// "import" type stuff
{"swf", c_swf, "name filename"},
{"shape", c_swf, "name filename"},