{"Symbol", "s050000l"},
{"ZapfDingbats", "d050000l"}};
-static int verbose = 1;
+static int verbose = 0;
static int dbgindent = 0;
static void dbg(char*format, ...)
{
} feature_t;
feature_t*featurewarnings = 0;
-static void warnfeature(char*feature,char fully)
+static void showfeature(char*feature,char fully, char warn)
{
feature_t*f = featurewarnings;
while(f) {
f->string = strdup(feature);
f->next = featurewarnings;
featurewarnings = f;
- msg("<warning> %s not yet %ssupported!",feature,fully?"fully ":"");
+ if(warn) {
+ msg("<warning> %s not yet %ssupported!",feature,fully?"fully ":"");
+ } else {
+ msg("<info> File contains %s",feature);
+ }
+}
+static void warnfeature(char*feature,char fully)
+{
+ showfeature(feature,fully,1);
+}
+static void infofeature(char*feature)
+{
+ showfeature(feature,0,0);
}
GFXOutputState::GFXOutputState() {
{
this->jpeginfo = 0;
this->textmodeinfo = 0;
- this->ttfinfo = 0;
this->linkinfo = 0;
this->pbminfo = 0;
this->type3active = 0;
return result;
}
-/*----------------------------------------------------------------------------
- * Primitive Graphic routines
- *----------------------------------------------------------------------------*/
+GBool GFXOutputDev::useTilingPatternFill()
+{
+ warnfeature("tiled patterns", 1);
+ return gFalse;
+}
+
+GBool GFXOutputDev::useShadedFills()
+{
+ warnfeature("shaded fills", 1);
+ return gFalse;
+}
void GFXOutputDev::strokeGfxline(GfxState *state, gfxline_t*line)
{
gfxmatrix_t m = this->current_font_matrix;
- /*if(render != 3 && render != 0)
- msg("<warning> Text rendering mode %d (%s) not fully supported yet (for text \"%s\")", render, renderModeDesc[render&7], makeStringPrintable(s->getCString()));*/
states[statepos].textRender = render;
}
/* TODO: pass image_dpi to device instead */
dev->setparameter(dev, "next_bitmap_is_jpeg", "1");
- gfxline_show(&p1,stdout);
-
- printf("%.2f %.2f %.2f\n", m.m00, m.m10, m.tx);
- printf("%.2f %.2f %.2f\n", m.m01, m.m11, m.ty);
dev->fillbitmap(dev, &p1, &img, &m, 0);
}
/*if(!forSoftMask) { ////???
state->setFillOpacity(0.0);
}*/
- warnfeature("transparency groups",1);
dbgindent+=2;
}
dbg("paintTransparencyGroup blend=%s softmaskon=%d", blendmodes[state->getBlendMode()], states[statepos].softmask);
msg("<verbose> paintTransparencyGroup blend=%s softmaskon=%d", blendmodes[state->getBlendMode()], states[statepos].softmask);
+
+ if(state->getBlendMode() == gfxBlendNormal)
+ infofeature("transparency groups");
+ else {
+ char buffer[80];
+ sprintf(buffer, "%s blended transparency groups", blendmodes[state->getBlendMode()]);
+ warnfeature("transparency groups", 0);
+ }
gfxresult_t*grouprecording = states[statepos].grouprecording;
bbox[0], bbox[1], bbox[2], bbox[3], alpha, colToByte(rgb->c[0]), colToByte(rgb->c[1]), colToByte(rgb->c[2]));
msg("<verbose> setSoftMask %.1f/%.1f/%.1f/%.1f alpha=%d backdrop=%02x%02x%02x",
bbox[0], bbox[1], bbox[2], bbox[3], alpha, colToByte(rgb->c[0]), colToByte(rgb->c[1]), colToByte(rgb->c[2]));
- warnfeature("soft masks",0);
+ if(!alpha)
+ infofeature("soft masks");
+ else
+ warnfeature("soft masks from alpha channel",0);
states[statepos].olddevice = this->device;
this->device = (gfxdevice_t*)rfx_calloc(sizeof(gfxdevice_t));
belowresult->destroy(belowresult);
states[statepos].softmaskrecording = 0;
}
+
#endif
/*class MemCheck
//----- path clipping
virtual void clip(GfxState *state) ;
virtual void eoClip(GfxState *state) ;
+
+ //----- shaded fills
+ virtual GBool useTilingPatternFill();
+ virtual GBool useShadedFills();
+
+ /*
+ virtual void tilingPatternFill(GfxState *state, Object *str,
+ int paintType, Dict *resDict,
+ double *mat, double *bbox,
+ int x0, int y0, int x1, int y1,
+ double xStep, double yStep) {}
+ virtual void functionShadedFill(GfxState *state,
+ GfxFunctionShading *shading) {}
+ virtual void axialShadedFill(GfxState *state, GfxAxialShading *shading) {}
+ virtual void radialShadedFill(GfxState *state, GfxRadialShading *shading) {}
+ */
//----- text drawing
virtual void beginString(GfxState *state, GString *s) ;
virtual void paintTransparencyGroup(GfxState *state, double *bbox);
virtual void setSoftMask(GfxState *state, double *bbox, GBool alpha, Function *transferFunc, GfxColor *backdropColor);
virtual void clearSoftMask(GfxState *state);
+#else
+ virtual void clearSoftMask(GfxState *state) {};
#endif
//----- type 3 chars
int jpeginfo; // did we write "File contains jpegs" yet?
int pbminfo; // did we write "File contains jpegs" yet?
int linkinfo; // did we write "File contains links" yet?
- int ttfinfo; // did we write "File contains TrueType Fonts" yet?
- int gradientinfo; // did we write "File contains Gradients yet?
int type3active; // are we between beginType3()/endType3()?