git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
compile readers/swf.c into readers/swf2.o
[swftools.git]
/
lib
/
pdf
/
GFXOutputDev.cc
diff --git
a/lib/pdf/GFXOutputDev.cc
b/lib/pdf/GFXOutputDev.cc
index
207fc05
..
27042b8
100644
(file)
--- a/
lib/pdf/GFXOutputDev.cc
+++ b/
lib/pdf/GFXOutputDev.cc
@@
-152,16
+152,9
@@
static void dbg(const char*format, ...)
}
}
-typedef struct _feature
-{
- char*string;
- struct _feature*next;
-} feature_t;
-feature_t*featurewarnings = 0;
-
void GFXOutputDev::showfeature(const char*feature, char fully, char warn)
{
void GFXOutputDev::showfeature(const char*feature, char fully, char warn)
{
- feature_t*f = featurewarnings;
+ feature_t*f = this->featurewarnings;
while(f) {
if(!strcmp(feature, f->string))
return;
while(f) {
if(!strcmp(feature, f->string))
return;
@@
-169,8
+162,8
@@
void GFXOutputDev::showfeature(const char*feature, char fully, char warn)
}
f = (feature_t*)malloc(sizeof(feature_t));
f->string = strdup(feature);
}
f = (feature_t*)malloc(sizeof(feature_t));
f->string = strdup(feature);
- f->next = featurewarnings;
- featurewarnings = f;
+ f->next = this->featurewarnings;
+ this->featurewarnings = f;
if(warn) {
msg("<warning> %s not yet %ssupported!",feature,fully?"fully ":"");
if(this->config_break_on_warning) {
if(warn) {
msg("<warning> %s not yet %ssupported!",feature,fully?"fully ":"");
if(this->config_break_on_warning) {
@@
-582,6
+575,7
@@
GFXOutputDev::GFXOutputDev(InfoOutputDev*info, PDFDoc*doc)
this->gfxfontlist = gfxfontlist_create();
memset(states, 0, sizeof(states));
this->gfxfontlist = gfxfontlist_create();
memset(states, 0, sizeof(states));
+ this->featurewarnings = 0;
};
void GFXOutputDev::setParameter(const char*key, const char*value)
};
void GFXOutputDev::setParameter(const char*key, const char*value)
@@
-864,7
+858,7
@@
void GFXOutputDev::tilingPatternFill(GfxState *state, Object *str,
int x0, int y0, int x1, int y1,
double xStep, double yStep)
#else
int x0, int y0, int x1, int y1,
double xStep, double yStep)
#else
-void GFXBitmapOutputDev::tilingPatternFill(GfxState *state, Gfx *gfx, Object *str,
+void GFXOutputDev::tilingPatternFill(GfxState *state, Gfx *gfx, Object *str,
int paintType, Dict *resDict,
double *mat, double *bbox,
int x0, int y0, int x1, int y1,
int paintType, Dict *resDict,
double *mat, double *bbox,
int x0, int y0, int x1, int y1,
@@
-1032,6
+1026,8
@@
void GFXOutputDev::endPage()
device->endclip(device);
outer_clip_box = 0;
}
device->endclip(device);
outer_clip_box = 0;
}
+ /* notice: we're not fully done yet with this page- there might still be
+ a few calls to drawLink() yet to come */
}
#define STROKE_FILL 1
}
#define STROKE_FILL 1
@@
-1218,6
+1214,18
@@
GFXOutputDev::~GFXOutputDev()
if(this->pages) {
free(this->pages); this->pages = 0;
}
if(this->pages) {
free(this->pages); this->pages = 0;
}
+
+ feature_t*f = this->featurewarnings;
+ while(f) {
+ feature_t*next = f->next;
+ if(f->string) {
+ free(f->string);f->string =0;
+ }
+ f->next = 0;
+ free(f);
+ f = next;
+ }
+ this->featurewarnings = 0;
gfxfontlist_free(this->gfxfontlist, 1);this->gfxfontlist = 0;
};
gfxfontlist_free(this->gfxfontlist, 1);this->gfxfontlist = 0;
};
@@
-1325,7
+1333,7
@@
void GFXOutputDev::drawChar(GfxState *state, double x, double y,
// check for invisible text -- this is used by Acrobat Capture
if (render == RENDER_INVISIBLE) {
// check for invisible text -- this is used by Acrobat Capture
if (render == RENDER_INVISIBLE) {
- col.a = 0;
+ col.a = 255;
if(!config_extrafontdata)
return;
}
if(!config_extrafontdata)
return;
}
@@
-1806,14
+1814,14
@@
void GFXOutputDev::updateStrokeColor(GfxState *state)
}
}
-gfxfont_t* createGfxFont(GfxFont*xpdffont, FontInfo*src, double config_fontquality)
+static gfxfont_t* createGfxFont(GfxFont*xpdffont, FontInfo*src, double config_fontquality)
{
gfxfont_t*font = (gfxfont_t*)malloc(sizeof(gfxfont_t));
memset(font, 0, sizeof(gfxfont_t));
font->glyphs = (gfxglyph_t*)malloc(sizeof(gfxglyph_t)*src->num_glyphs);
memset(font->glyphs, 0, sizeof(gfxglyph_t)*src->num_glyphs);
{
gfxfont_t*font = (gfxfont_t*)malloc(sizeof(gfxfont_t));
memset(font, 0, sizeof(gfxfont_t));
font->glyphs = (gfxglyph_t*)malloc(sizeof(gfxglyph_t)*src->num_glyphs);
memset(font->glyphs, 0, sizeof(gfxglyph_t)*src->num_glyphs);
- font->id = strdup(getFontID(xpdffont));
+ font->id = 0;
int t;
double quality = (INTERNAL_FONT_SIZE * 200 / config_fontquality) / src->max_size;
int t;
double quality = (INTERNAL_FONT_SIZE * 200 / config_fontquality) / src->max_size;
@@
-2114,14
+2122,14
@@
void GFXOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str,
if(!pbminfo && !(str->getKind()==strDCT)) {
if(!type3active) {
if(!pbminfo && !(str->getKind()==strDCT)) {
if(!type3active) {
- msg("<notice> file contains pbm pictures %s",mask?"(masked)":"");
+ msg("<notice> File contains pbm pictures %s",mask?"(masked)":"");
pbminfo = 1;
}
if(mask)
msg("<verbose> drawing %d by %d masked picture", width, height);
}
if(!jpeginfo && (str->getKind()==strDCT)) {
pbminfo = 1;
}
if(mask)
msg("<verbose> drawing %d by %d masked picture", width, height);
}
if(!jpeginfo && (str->getKind()==strDCT)) {
- msg("<notice> file contains jpeg pictures");
+ msg("<notice> File contains jpeg pictures");
jpeginfo = 1;
}
jpeginfo = 1;
}
@@
-2169,7
+2177,7
@@
void GFXOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str,
width = realwidth;
height = realheight;
width = realwidth;
height = realheight;
- free(pic);
+ delete[] pic;
pic = pic2;
/* make a black/white palette */
pic = pic2;
/* make a black/white palette */
@@
-2191,8
+2199,8
@@
void GFXOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str,
}
}
drawimagelossless(device, pic2, width, height, x1,y1,x2,y2,x3,y3,x4,y4);
}
}
drawimagelossless(device, pic2, width, height, x1,y1,x2,y2,x3,y3,x4,y4);
- free(pic2);
- free(pic);
+ delete[] pic2;
+ delete[] pic;
delete imgStr;
if(maskbitmap) free(maskbitmap);
return;
delete imgStr;
if(maskbitmap) free(maskbitmap);
return;
@@
-2655,7
+2663,7
@@
void GFXOutputDev::clearSoftMask(GfxState *state)
}
gfxresult_t*mask = states[statepos].softmaskrecording;
}
gfxresult_t*mask = states[statepos].softmaskrecording;
- gfxresult_t*below = this->device->finish(this->device);
+ gfxresult_t*below = this->device->finish(this->device);free(this->device);
this->device = states[statepos].olddevice;
/* get outline of all objects below the soft mask */
this->device = states[statepos].olddevice;
/* get outline of all objects below the soft mask */
@@
-2664,14
+2672,13
@@
void GFXOutputDev::clearSoftMask(GfxState *state)
gfxresult_record_replay(below, &uniondev);
gfxline_t*belowoutline = gfxdevice_union_getunion(&uniondev);
uniondev.finish(&uniondev);
gfxresult_record_replay(below, &uniondev);
gfxline_t*belowoutline = gfxdevice_union_getunion(&uniondev);
uniondev.finish(&uniondev);
-
gfxbbox_t bbox = gfxline_getbbox(belowoutline);
gfxbbox_t bbox = gfxline_getbbox(belowoutline);
+ gfxline_free(belowoutline);belowoutline=0;
#if 0
this->device->startclip(this->device, belowoutline);
gfxresult_record_replay(below, this->device);
gfxresult_record_replay(mask, this->device);
this->device->endclip(this->device);
#if 0
this->device->startclip(this->device, belowoutline);
gfxresult_record_replay(below, this->device);
gfxresult_record_replay(mask, this->device);
this->device->endclip(this->device);
- gfxline_free(belowoutline);
#endif
int width = (int)bbox.xmax,height = (int)bbox.ymax;
#endif
int width = (int)bbox.xmax,height = (int)bbox.ymax;