X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fswfoutput.cc;h=b0315465c2a6408db60784827d1e125f3a41def7;hb=a6f065c537b2d44ca561f05752af27fe6c81dacc;hp=4644df3bd73858565f316c7ece0c063109d825f5;hpb=5ac0a484d6e3398aa3174e1d1f2be9b3e3561bd0;p=swftools.git diff --git a/pdf2swf/swfoutput.cc b/pdf2swf/swfoutput.cc index 4644df3..b031546 100644 --- a/pdf2swf/swfoutput.cc +++ b/pdf2swf/swfoutput.cc @@ -154,9 +154,15 @@ void spline(TAG*tag,plotxy p0,plotxy p1,plotxy p2,plotxy p3,struct swfmatrix*m) } } +void resetdrawer() +{ + swflastx = 0; + swflasty = 0; +} + /* draw a T1 outline. These are generated by pdf2swf and by t1lib. (representing characters) */ -void drawpath(TAG*tag, T1_OUTLINE*outline, struct swfmatrix*m) +void drawpath(TAG*tag, T1_OUTLINE*outline, struct swfmatrix*m, int log) { if(tag->id != ST_DEFINEFONT && tag->id != ST_DEFINESHAPE && @@ -166,8 +172,6 @@ void drawpath(TAG*tag, T1_OUTLINE*outline, struct swfmatrix*m) logf(" internal error: drawpath needs a shape tag, not %d\n",tag->id); exit(1); } - int log = 0; - double x=0,y=0; double lastx=0,lasty=0; double firstx=0,firsty=0; @@ -467,7 +471,7 @@ void drawchar(struct swfoutput*obj, SWFFont*font, char*character, int charnr, sw int lf = fill; fill = 1; - drawpath(tag, outline, &m2); + drawpath(tag, outline, &m2, 0); fill = lf; } } @@ -492,7 +496,7 @@ void swfoutput_drawpath(swfoutput*output, T1_OUTLINE*outline, lastwasfill = 1; } - drawpath(tag, outline,m); + drawpath(tag, outline,m, 0); } /* SWFFont: copy all t1 font outlines to a local @@ -606,7 +610,7 @@ SWFFont::~SWFFont() logf(" Font %s has %d used characters",fontid, usednum); TAG*ftag = swf_InsertTag(swf.firstTag,ST_DEFINEFONT); swf_SetU16(ftag, this->swfid); - int initpos = swf_GetDataSize(ftag); + int initpos = swf_GetTagLen(ftag); swfmatrix m; m.m11 = m.m22 = 1; m.m21 = m.m12 = 0; @@ -615,12 +619,14 @@ SWFFont::~SWFFont() for(t=0;tdata[ptr[t]] = swf_GetDataSize(ftag)-initpos; + *(U16*)&ftag->data[ptr[t]] = + SWAP16(swf_GetTagLen(ftag)-initpos); + swflastx=0; swflasty=0; swf_SetU8(ftag,0x10); //0 fill bits, 0 linestyle bits @@ -631,7 +637,7 @@ SWFFont::~SWFFont() int lastfill = fill; fill = 1; storefont = 1; - drawpath(ftag, outline[swfcharid2char[t]],&m); + drawpath(ftag, outline[swfcharid2char[t]],&m, 0); storefont = 0; fill = lastfill; swf_ShapeSetEnd(ftag); @@ -692,6 +698,17 @@ T1_OUTLINE*SWFFont::getOutline(char*name) return 0; } +int SWFFont::getWidth(char*name) +{ + int t; + for(t=0;tcharnum;t++) { + if(!strcmp(this->charname[t],name)) { + return this->width[t]; + } + } + return 0; +} + int SWFFont::getSWFCharID(char*name, int charnr) { int t;