swf.fileVersion = 4;
swf.frameRate = 0x4000;
- swf.movieSize.xmax = 20*640;
- swf.movieSize.ymax = 20*480;
if(!useDefineFont2)
/* if we use DefineFont1 to store the characters,
{ int textscale = 400;
int s;
int xmax = 0;
- int ymax = textscale * 2 * 20;
+ int ymax = textscale * 2 * (font->maxascii/16+1);
U8 gbits,abits;
- char text[257];
+ char text[MAX_CHAR_PER_FONT+1];
int x,y;
- text[256]=0;
- for(s=0;s<256;s++)
+ text[MAX_CHAR_PER_FONT]=0;
+ for(s=0;s<font->maxascii;s++)
{
int g = font->ascii2glyph[s];
text[s] = s;
if(g>=0) {
- if(font->glyph[g].advance*textscale/100 > xmax)
- xmax = font->glyph[g].advance*textscale/100;
+ if(font->glyph[g].advance*textscale/200 > xmax)
+ xmax = font->glyph[g].advance*textscale/200;
}
}
swf.movieSize.xmax = xmax*20;
rgb.r = 0x00;
rgb.g = 0x00;
rgb.b = 0x00;
- for(y=0;y<16;y++)
+ for(y=0;y<=((font->maxascii-1)/16);y++)
{
int c=0,lastx=-1, firstx=0;
for(x=0;x<16;x++) {
- int g = font->ascii2glyph[y*16+x];
+ int g = (y*16+x<font->maxascii)?font->ascii2glyph[y*16+x]:-1;
if(g>=0 && font->glyph[g].shape) {
c++;
if(lastx<0)
swf_TextSetInfoRecord(t,font,textscale,&rgb,lastx+1,textscale*y*2);
for(x=0;x<16;x++)
{
- int g = font->ascii2glyph[y*16+x];
+ int g = (y*16+x<font->maxascii)?font->ascii2glyph[y*16+x]:-1;
if(g>=0 && font->glyph[g].shape) {
if(lastx != x*xmax) {
swf_TextSetInfoRecord(t,0,0,0,x*xmax+1,0);
}
+void swf_SetEditText(TAG*tag, U16 flags, SRECT r, char*text, RGBA*color,
+ int maxlength, U16 font, U16 height, EditTextLayout*layout, char*variable)
+{
+ swf_SetRect(tag,&r);
+ swf_ResetWriteBits(tag);
+
+ flags &= ~(ET_HASTEXT|ET_HASTEXTCOLOR|ET_HASMAXLENGTH|ET_HASFONT|ET_HASLAYOUT);
+ if(text) flags |= ET_HASTEXT;
+ if(color) flags |= ET_HASTEXTCOLOR;
+ if(maxlength) flags |= ET_HASMAXLENGTH;
+ if(font) flags |= ET_HASFONT;
+ if(layout) flags |= ET_HASLAYOUT;
+
+ swf_SetBits(tag, flags, 16);
+
+ if(flags & ET_HASFONT) {
+ swf_SetU16(tag, font); //font
+ swf_SetU16(tag, height); //fontheight
+ }
+ if(flags & ET_HASTEXTCOLOR) {
+ swf_SetRGBA(tag, color);
+ }
+ if(flags & ET_HASMAXLENGTH) {
+ swf_SetU16(tag, maxlength); //maxlength
+ }
+ if(flags & ET_HASLAYOUT) {
+ swf_SetU8(tag,layout->align); //align
+ swf_SetU16(tag,layout->leftmargin); //left margin
+ swf_SetU16(tag,layout->rightmargin); //right margin
+ swf_SetU16(tag,layout->indent); //indent
+ swf_SetU16(tag,layout->leading); //leading
+ }
+ swf_SetString(tag, variable);
+ if(flags & ET_HASTEXT)
+ swf_SetString(tag,text);
+}
+