git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
implement --merge, --frame and --stack1 options.
[swftools.git]
/
pdf2swf
/
swfoutput.cc
diff --git
a/pdf2swf/swfoutput.cc
b/pdf2swf/swfoutput.cc
index
74c982d
..
b031546
100644
(file)
--- 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) */
/* 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 &&
{
if(tag->id != ST_DEFINEFONT &&
tag->id != ST_DEFINESHAPE &&
@@
-166,8
+172,6
@@
void drawpath(TAG*tag, T1_OUTLINE*outline, struct swfmatrix*m)
logf("<error> internal error: drawpath needs a shape tag, not %d\n",tag->id);
exit(1);
}
logf("<error> 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;
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;
int lf = fill;
fill = 1;
- drawpath(tag, outline, &m2);
+ drawpath(tag, outline, &m2, 0);
fill = lf;
}
}
fill = lf;
}
}
@@
-492,7
+496,7
@@
void swfoutput_drawpath(swfoutput*output, T1_OUTLINE*outline,
lastwasfill = 1;
}
lastwasfill = 1;
}
- drawpath(tag, outline,m);
+ drawpath(tag, outline,m, 0);
}
/* SWFFont: copy all t1 font outlines to a local
}
/* SWFFont: copy all t1 font outlines to a local
@@
-606,7
+610,7
@@
SWFFont::~SWFFont()
logf("<verbose> Font %s has %d used characters",fontid, usednum);
TAG*ftag = swf_InsertTag(swf.firstTag,ST_DEFINEFONT);
swf_SetU16(ftag, this->swfid);
logf("<verbose> 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;
swfmatrix m;
m.m11 = m.m22 = 1;
m.m21 = m.m12 = 0;
@@
-615,12
+619,14
@@
SWFFont::~SWFFont()
for(t=0;t<swfcharpos;t++)
{
for(t=0;t<swfcharpos;t++)
{
- ptr[t] = swf_GetDataSize(ftag);
+ ptr[t] = swf_GetTagLen(ftag);
swf_SetU16(ftag, 0x1234);
}
for(t=0;t<swfcharpos;t++)
{
swf_SetU16(ftag, 0x1234);
}
for(t=0;t<swfcharpos;t++)
{
- *(U16*)&ftag->data[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
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;
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);
storefont = 0;
fill = lastfill;
swf_ShapeSetEnd(ftag);
@@
-692,6
+698,17
@@
T1_OUTLINE*SWFFont::getOutline(char*name)
return 0;
}
return 0;
}
+int SWFFont::getWidth(char*name)
+{
+ int t;
+ for(t=0;t<this->charnum;t++) {
+ if(!strcmp(this->charname[t],name)) {
+ return this->width[t];
+ }
+ }
+ return 0;
+}
+
int SWFFont::getSWFCharID(char*name, int charnr)
{
int t;
int SWFFont::getSWFCharID(char*name, int charnr)
{
int t;
@@
-1295,15
+1312,21
@@
int swfoutput_drawimagejpeg(struct swfoutput*obj, char*filename, int sizex,int s
double x3,double y3,
double x4,double y4)
{
double x3,double y3,
double x4,double y4)
{
+ TAG*oldtag;
if(shapeid>=0)
endshape();
if(textid>=0)
endtext();
int bitid = ++currentswfid;
if(shapeid>=0)
endshape();
if(textid>=0)
endtext();
int bitid = ++currentswfid;
+ oldtag = tag;
tag = swf_InsertTag(tag,ST_DEFINEBITSJPEG2);
swf_SetU16(tag, bitid);
tag = swf_InsertTag(tag,ST_DEFINEBITSJPEG2);
swf_SetU16(tag, bitid);
- swf_SetJPEGBits(tag, filename, jpegquality);
+ if(swf_SetJPEGBits(tag, filename, jpegquality)<0) {
+ swf_DeleteTag(tag);
+ tag = oldtag;
+ return -1;
+ }
drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4);
return bitid;
drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4);
return bitid;
@@
-1315,15
+1338,21
@@
int swfoutput_drawimagelossless(struct swfoutput*obj, RGBA*mem, int sizex,int si
double x3,double y3,
double x4,double y4)
{
double x3,double y3,
double x4,double y4)
{
+ TAG*oldtag;
if(shapeid>=0)
endshape();
if(textid>=0)
endtext();
int bitid = ++currentswfid;
if(shapeid>=0)
endshape();
if(textid>=0)
endtext();
int bitid = ++currentswfid;
+ oldtag = tag;
tag = swf_InsertTag(tag,ST_DEFINEBITSLOSSLESS);
swf_SetU16(tag, bitid);
tag = swf_InsertTag(tag,ST_DEFINEBITSLOSSLESS);
swf_SetU16(tag, bitid);
- swf_SetLosslessBits(tag,sizex,sizey,mem, BMF_32BIT);
+ if(swf_SetLosslessBits(tag,sizex,sizey,mem, BMF_32BIT)<0) {
+ swf_DeleteTag(tag);
+ tag = oldtag;
+ return -1;
+ }
drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4);
return bitid;
drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4);
return bitid;
@@
-1335,15
+1364,21
@@
int swfoutput_drawimagelossless256(struct swfoutput*obj, U8*mem, RGBA*pal, int s
double x3,double y3,
double x4,double y4)
{
double x3,double y3,
double x4,double y4)
{
+ TAG*oldtag;
if(shapeid>=0)
endshape();
if(textid>=0)
endtext();
int bitid = ++currentswfid;
if(shapeid>=0)
endshape();
if(textid>=0)
endtext();
int bitid = ++currentswfid;
+ oldtag = tag;
tag = swf_InsertTag(tag,ST_DEFINEBITSLOSSLESS2);
swf_SetU16(tag, bitid);
tag = swf_InsertTag(tag,ST_DEFINEBITSLOSSLESS2);
swf_SetU16(tag, bitid);
- swf_SetLosslessBitsIndexed(tag,sizex,sizey,mem, pal, 256);
+ if(swf_SetLosslessBitsIndexed(tag,sizex,sizey,mem, pal, 256)<0) {
+ swf_DeleteTag(tag);
+ tag = oldtag;
+ return -1;
+ }
drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4);
return bitid;
drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4);
return bitid;
@@
-1355,6
+1390,7
@@
void swfoutput_drawimageagain(struct swfoutput*obj, int id, int sizex,int sizey,
double x3,double y3,
double x4,double y4)
{
double x3,double y3,
double x4,double y4)
{
+ if(id<0) return;
if(shapeid>=0)
endshape();
if(textid>=0)
if(shapeid>=0)
endshape();
if(textid>=0)