xpdf-3.02 fixes
[swftools.git] / lib / pdf / GFXOutputDev.h
index bf4df4c..55d3084 100644 (file)
@@ -4,6 +4,7 @@
 #include "../gfxdevice.h"
 #include "../gfxsource.h"
 
+#include "config.h"
 #include "InfoOutputDev.h"
 #include "PDFDoc.h"
 
@@ -20,7 +21,14 @@ class GFXOutputState {
     int textRender;
     char createsoftmask;
     char transparencygroup;
+    int softmask;
+
     GFXOutputState();
+
+    gfxresult_t* grouprecording; // for transparency groups
+    gfxresult_t* softmaskrecording; // for soft masks
+
+    gfxdevice_t* olddevice;
 };
 
 typedef struct _parameter
@@ -75,7 +83,7 @@ public:
   void setXRef(PDFDoc*doc, XRef *xref);
 
   //----- link borders
-  virtual void drawLink(Link *link, Catalog *catalog) ;
+  virtual void processLink(Link *link, Catalog *catalog);
 
   //----- save/restore graphics state
   virtual void saveState(GfxState *state) ;
@@ -90,7 +98,10 @@ public:
   virtual void updateLineJoin(GfxState *state);
   virtual void updateLineCap(GfxState *state);
   virtual void updateFillOpacity(GfxState *state);
-
+  virtual void updateStrokeOpacity(GfxState *state);
+  virtual void updateFillOverprint(GfxState *state);
+  virtual void updateStrokeOverprint(GfxState *state);
+  virtual void updateTransfer(GfxState *state);
   
   virtual void updateAll(GfxState *state) 
   {
@@ -110,6 +121,22 @@ public:
   //----- 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) ;
@@ -149,6 +176,8 @@ public:
   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
@@ -174,6 +203,10 @@ public:
   void clipToGfxLine(GfxState *state, gfxline_t*line);
   void fillGfxLine(GfxState *state, gfxline_t*line);
 
+  void showfeature(char*feature,char fully, char warn);
+  void warnfeature(char*feature,char fully);
+  void infofeature(char*feature);
+
   char outer_clip_box; //whether the page clip box is still on
 
   InfoOutputDev*info;
@@ -193,8 +226,6 @@ public:
   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()?
 
@@ -206,13 +237,16 @@ public:
   char* substitutesource[256];
   int substitutepos;
 
+  int user_movex,user_movey;
+  int user_clipx1,user_clipx2,user_clipy1,user_clipy2;
+
   /* upper left corner of clipping rectangle (cropbox)- needs to be
      added to all drawing coordinates to give the impression that all
      pages start at (0,0)*/
-  int clipmovex,clipmovey;
+  int clipmovex;
+  int clipmovey;
 
-  int user_movex,user_movey;
-  int user_clipx1,user_clipx2,user_clipy1,user_clipy2;
+  double width,height;
 
   gfxline_t* current_text_stroke;
   gfxline_t* current_text_clip;
@@ -227,8 +261,8 @@ public:
   int pagepos;
 
   /* config */
-  int forceType0Fonts;
   int config_use_fontconfig;
+  int config_break_on_warning;
 
   parameter_t*parameters;
 };