{
p->x = 0; p->y = 0;
p->scalex = 1.0; p->scaley = 1.0;
- p->pin.x = 1; p->pin.y = 0;
+ p->pin.x = 0; //1??
+ p->pin.y = 0;
p->pivot.x = 0; p->pivot.y = 0;
p->rotate = 0;
p->shear = 0;
m->sy = (int)(sy*65536+0.5);
m->tx = m->ty = 0;
-
+
h = swf_TurnPoint(p->pin, m);
m->tx = p->x - h.x;
m->ty = p->y - h.y;
break;
s++;
}
- printf("%s\n", as);
- swf_DumpMatrix(stdout,&mybutton.records[0].matrix);
-
}
static void setbuttonrecords(TAG*tag)
{
swf_ActionFree(a);
}
+static void setactionend(TAG*tag)
+{
+ if(!mybutton.nr_actions) {
+ /* no actions means we didn't have an actionoffset,
+ which means we can't signal the end of the
+ buttonaction records, so, *sigh*, we have
+ to insert a dummy record */
+ swf_SetU16(tag, 0); //offset
+ swf_SetU16(tag, 0); //condition
+ swf_SetU8(tag, 0); //action
+ }
+}
+
static void s_endButton()
{
SRECT r;
setbuttonrecords(stack[stackpos-1].tag);
+ setactionend(stack[stackpos-1].tag);
stackpos--;
swf_ButtonPostProcess(stack[stackpos].tag, mybutton.nr_actions);
incrementid();
}
-void s_textshape(char*name, char*fontname, char*_text)
+void s_textshape(char*name, char*fontname, float size, char*_text)
{
int g;
U8*text = (U8*)_text;
{
drawer_t draw;
swf_Shape11DrawerInit(&draw, 0);
- swf_DrawText(&draw, font, _text);
+ swf_DrawText(&draw, font, (int)(size*100), _text);
draw.finish(&draw);
outline->shape = swf_ShapeDrawerToShape(&draw);
outline->bbox = swf_ShapeDrawerGetBBox(&draw);
swf_SetTagPos(stack[stackpos].tag, 0);
swf_GetPlaceObject(stack[stackpos].tag, &p);
p.clipdepth = currentdepth;
+ p.name = 0;
swf_ClearTag(stack[stackpos].tag);
swf_SetPlaceObject(stack[stackpos].tag, &p);
currentdepth++;
char*name = lu(args, "name");
char*text = lu(args, "text");
char*font = lu(args, "font");
+ float size = parsePercent(lu(args, "size"));
- s_textshape(name, font, text);
+ s_textshape(name, font, size, text);
return 0;
}
char*htmlstr = lu(args, "html");
char*noselectstr = lu(args, "noselect");
char*readonlystr = lu(args, "readonly");
+ char*borderstr = lu(args, "border");
int flags = 0;
if(!strcmp(passwordstr, "password")) flags |= ET_PASSWORD;
if(!strcmp(readonlystr, "readonly")) flags |= ET_READONLY;
if(!strcmp(htmlstr, "html")) flags |= ET_HTML;
if(!strcmp(noselectstr, "noselect")) flags |= ET_NOSELECT;
+ if(!strcmp(borderstr, "border")) flags |= ET_BORDER;
s_edittext(name, font, size, width, height, text, &color, maxlength, variable, flags);
return 0;
{"point", c_point, "name x=0 y=0"},
{"gradient", c_gradient, "name @radial=0"},
{"outline", c_outline, "name format=simple"},
- {"textshape", c_textshape, "name text font"},
+ {"textshape", c_textshape, "name font size=100% text"},
// character generators
{"box", c_primitive, "name width height color=white line=1 @fill=none"},
{"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"},
+ {"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="},
{"on_press", c_on_press, "position=inside"},
{"on_release", c_on_release, "position=anywhere"},
- {"on_move_in", c_on_move_out, "state=not_pressed"},
+ {"on_move_in", c_on_move_in, "state=not_pressed"},
{"on_move_out", c_on_move_out, "state=not_pressed"},
{"on_key", c_on_key, "key=any"},