git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Generated from pdf2swf_usage.html
[swftools.git]
/
lib
/
modules
/
swftext.c
diff --git
a/lib/modules/swftext.c
b/lib/modules/swftext.c
index
0a7c886
..
80fa15f
100644
(file)
--- a/
lib/modules/swftext.c
+++ b/
lib/modules/swftext.c
@@
-258,8
+258,10
@@
int swf_FontExtract_DefineFont2(int id,SWFFONT * font,TAG * tag)
#define FEDTJ_PRINT 0x01
#define FEDTJ_MODIFY 0x02
#define FEDTJ_PRINT 0x01
#define FEDTJ_MODIFY 0x02
+#define FEDTJ_CALLBACK 0x04
-int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
+int swf_FontExtract_DefineTextCallback(int id,SWFFONT * f,TAG * t,int jobs,
+ void(*callback)(int*chars, int nr, int fontid))
{ U16 cid;
SRECT r;
MATRIX m;
{ U16 cid;
SRECT r;
MATRIX m;
@@
-294,6
+296,7
@@
int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
}
else
{ int i;
}
else
{ int i;
+ int buf[256];
for (i=0;i<flags;i++)
{ int glyph;
int adv;
for (i=0;i<flags;i++)
{ int glyph;
int adv;
@@
-305,8
+308,11
@@
int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
if (jobs&FEDTJ_MODIFY)
/*if (!f->glyph[code].advance)*/ f->glyph[glyph].advance = adv;
}
if (jobs&FEDTJ_MODIFY)
/*if (!f->glyph[code].advance)*/ f->glyph[glyph].advance = adv;
}
+ buf[i] = glyph;
}
if ((id==fid)&&(jobs&FEDTJ_PRINT)) printf("\n");
}
if ((id==fid)&&(jobs&FEDTJ_PRINT)) printf("\n");
+ if (jobs&FEDTJ_CALLBACK)
+ callback(buf, flags, fid);
}
flags = swf_GetU8(t);
}
}
flags = swf_GetU8(t);
}
@@
-315,6
+321,11
@@
int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
return id;
}
return id;
}
+int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs)
+{
+ return swf_FontExtract_DefineTextCallback(id,f,t,jobs,0);
+}
+
int swf_FontExtract(SWF * swf,int id,SWFFONT * * font)
{ TAG * t;
SWFFONT * f;
int swf_FontExtract(SWF * swf,int id,SWFFONT * * font)
{ TAG * t;
SWFFONT * f;
@@
-713,8
+724,6
@@
void swf_WriteFont(SWFFONT*font, char* filename)
swf.fileVersion = 4;
swf.frameRate = 0x4000;
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,
if(!useDefineFont2)
/* if we use DefineFont1 to store the characters,
@@
-745,18
+754,18
@@
void swf_WriteFont(SWFFONT*font, char* filename)
{ int textscale = 400;
int s;
int xmax = 0;
{ int textscale = 400;
int s;
int xmax = 0;
- int ymax = textscale * 2 * 20;
+ int ymax = textscale * 2 * (font->maxascii/16+1);
U8 gbits,abits;
U8 gbits,abits;
- char text[257];
+ char text[MAX_CHAR_PER_FONT+1];
int x,y;
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) {
{
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;
}
}
swf.movieSize.xmax = xmax*20;
@@
-784,11
+793,11
@@
void swf_WriteFont(SWFFONT*font, char* filename)
rgb.r = 0x00;
rgb.g = 0x00;
rgb.b = 0x00;
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 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)
if(g>=0 && font->glyph[g].shape) {
c++;
if(lastx<0)
@@
-799,7
+808,7
@@
void swf_WriteFont(SWFFONT*font, char* filename)
swf_TextSetInfoRecord(t,font,textscale,&rgb,lastx+1,textscale*y*2);
for(x=0;x<16;x++)
{
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);
if(g>=0 && font->glyph[g].shape) {
if(lastx != x*xmax) {
swf_TextSetInfoRecord(t,0,0,0,x*xmax+1,0);