git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added some comments about line width.
[swftools.git]
/
pdf2swf
/
SWFOutputDev.cc
diff --git
a/pdf2swf/SWFOutputDev.cc
b/pdf2swf/SWFOutputDev.cc
index
37110fd
..
2728dcb
100644
(file)
--- a/
pdf2swf/SWFOutputDev.cc
+++ b/
pdf2swf/SWFOutputDev.cc
@@
-88,6
+88,7
@@
static int pagepos = 0;
/* config */
static double caplinewidth = 3.0;
static int zoom = 72; /* xpdf: 86 */
/* config */
static double caplinewidth = 3.0;
static int zoom = 72; /* xpdf: 86 */
+static int forceType0Fonts = 0;
static void printInfoString(Dict *infoDict, char *key, char *fmt);
static void printInfoDate(Dict *infoDict, char *key, char *fmt);
static void printInfoString(Dict *infoDict, char *key, char *fmt);
static void printInfoDate(Dict *infoDict, char *key, char *fmt);
@@
-126,6
+127,8
@@
public:
void setClip(int x1,int y1,int x2,int y2);
int save(char*filename);
void setClip(int x1,int y1,int x2,int y2);
int save(char*filename);
+ void pagefeed();
+ void* getSWF();
void getDimensions(int*x1,int*y1,int*x2,int*y2);
void getDimensions(int*x1,int*y1,int*x2,int*y2);
@@
-353,10
+356,7
@@
void SWFOutputDev::setClip(int x1,int y1,int x2,int y2)
}
void SWFOutputDev::getDimensions(int*x1,int*y1,int*x2,int*y2)
{
}
void SWFOutputDev::getDimensions(int*x1,int*y1,int*x2,int*y2)
{
- if(x1) *x1 = output.swf.movieSize.xmin/20;
- if(y1) *y1 = output.swf.movieSize.ymin/20;
- if(x2) *x2 = output.swf.movieSize.xmax/20;
- if(y2) *y2 = output.swf.movieSize.ymax/20;
+ return swfoutput_getdimensions(&output, x1,y1,x2,y2);
}
static char*getFontID(GfxFont*font)
}
static char*getFontID(GfxFont*font)
@@
-799,10
+799,20
@@
void SWFOutputDev::eoClip(GfxState *state)
clipping[clippos] ++;
free_outline(outline);
}
clipping[clippos] ++;
free_outline(outline);
}
+
+/* pass through functions for swf_output */
int SWFOutputDev::save(char*filename)
{
return swfoutput_save(&output, filename);
}
int SWFOutputDev::save(char*filename)
{
return swfoutput_save(&output, filename);
}
+void SWFOutputDev::pagefeed()
+{
+ swfoutput_pagefeed(&output);
+}
+void* SWFOutputDev::getSWF()
+{
+ return (void*)swfoutput_get(&output);
+}
SWFOutputDev::~SWFOutputDev()
{
SWFOutputDev::~SWFOutputDev()
{
@@
-947,10
+957,10
@@
void SWFOutputDev::startPage(int pageNum, GfxState *state, double crop_x1, doubl
/* apply user clip box */
if(user_clipx1|user_clipy1|user_clipx2|user_clipy2) {
/* apply user clip box */
if(user_clipx1|user_clipy1|user_clipx2|user_clipy2) {
- if(user_clipx1 > x1) x1 = user_clipx1;
- if(user_clipx2 < x2) x2 = user_clipx2;
- if(user_clipy1 > y1) y1 = user_clipy1;
- if(user_clipy2 < y2) y2 = user_clipy2;
+ /*if(user_clipx1 > x1)*/ x1 = user_clipx1;
+ /*if(user_clipx2 < x2)*/ x2 = user_clipx2;
+ /*if(user_clipy1 > y1)*/ y1 = user_clipy1;
+ /*if(user_clipy2 < y2)*/ y2 = user_clipy2;
}
if(!outputstarted) {
}
if(!outputstarted) {
@@
-1251,9
+1261,11
@@
char*SWFOutputDev::writeEmbeddedFontToFile(XRef*ref, GfxFont*font)
}
#ifdef XPDF_101
Type1CFontFile *cvt = new Type1CFontFile(fontBuf, fontLen);
}
#ifdef XPDF_101
Type1CFontFile *cvt = new Type1CFontFile(fontBuf, fontLen);
+ if(!cvt) return 0;
cvt->convertToType1(f);
#else
FoFiType1C *cvt = FoFiType1C::make(fontBuf, fontLen);
cvt->convertToType1(f);
#else
FoFiType1C *cvt = FoFiType1C::make(fontBuf, fontLen);
+ if(!cvt) return 0;
cvt->convertToType1(NULL, gTrue, FoFiWrite, f);
#endif
//cvt->convertToCIDType0("test", f);
cvt->convertToType1(NULL, gTrue, FoFiWrite, f);
#endif
//cvt->convertToCIDType0("test", f);
@@
-1439,6
+1451,10
@@
char* SWFOutputDev::substituteFont(GfxFont*gfxFont, char* oldname)
fontname = "Times-Roman";
}
filename = searchFont(fontname);
fontname = "Times-Roman";
}
filename = searchFont(fontname);
+ if(!filename) {
+ msg("<error> Couldn't find font %s- did you install the default fonts?");
+ return 0;
+ }
if(substitutepos>=sizeof(substitutesource)/sizeof(char*)) {
msg("<fatal> Too many fonts in file.");
if(substitutepos>=sizeof(substitutesource)/sizeof(char*)) {
msg("<fatal> Too many fonts in file.");
@@
-1538,7
+1554,7
@@
void SWFOutputDev::updateFont(GfxState *state)
if(embedded &&
(gfxFont->getType() == fontType1 ||
gfxFont->getType() == fontType1C ||
if(embedded &&
(gfxFont->getType() == fontType1 ||
gfxFont->getType() == fontType1C ||
- //gfxFont->getType() == fontCIDType0C ||
+ (gfxFont->getType() == fontCIDType0C && forceType0Fonts) ||
gfxFont->getType() == fontTrueType ||
gfxFont->getType() == fontCIDType2
))
gfxFont->getType() == fontTrueType ||
gfxFont->getType() == fontCIDType2
))
@@
-1950,6
+1966,8
@@
void pdfswf_setparameter(char*name, char*value)
caplinewidth = atof(value);
} else if(!strcmp(name, "zoom")) {
zoom = atoi(value);
caplinewidth = atof(value);
} else if(!strcmp(name, "zoom")) {
zoom = atoi(value);
+ } else if(!strcmp(name, "forceType0Fonts")) {
+ forceType0Fonts = atoi(value);
} else if(!strcmp(name, "fontdir")) {
pdfswf_addfontdir(value);
} else if(!strcmp(name, "languagedir")) {
} else if(!strcmp(name, "fontdir")) {
pdfswf_addfontdir(value);
} else if(!strcmp(name, "languagedir")) {
@@
-2213,6
+2231,13
@@
void swf_output_setparameter(swf_output_t*swf_output, char*name, char*value)
pdfswf_setparameter(name, value);
}
pdfswf_setparameter(name, value);
}
+void swf_output_pagefeed(swf_output_t*swf)
+{
+ swf_output_internal_t*i= (swf_output_internal_t*)swf->internal;
+ i->outputDev->pagefeed();
+ i->outputDev->getDimensions(&swf->x1, &swf->y1, &swf->x2, &swf->y2);
+}
+
int swf_output_save(swf_output_t*swf, char*filename)
{
swf_output_internal_t*i= (swf_output_internal_t*)swf->internal;
int swf_output_save(swf_output_t*swf, char*filename)
{
swf_output_internal_t*i= (swf_output_internal_t*)swf->internal;
@@
-2221,6
+2246,14
@@
int swf_output_save(swf_output_t*swf, char*filename)
return ret;
}
return ret;
}
+void* swf_output_get(swf_output_t*swf)
+{
+ swf_output_internal_t*i= (swf_output_internal_t*)swf->internal;
+ void* ret = i->outputDev->getSWF();
+ i->outputDev->getDimensions(&swf->x1, &swf->y1, &swf->x2, &swf->y2);
+ return ret;
+}
+
void swf_output_destroy(swf_output_t*output)
{
swf_output_internal_t*i = (swf_output_internal_t*)output->internal;
void swf_output_destroy(swf_output_t*output)
{
swf_output_internal_t*i = (swf_output_internal_t*)output->internal;