poppler: fix drawImage*() parameters
[swftools.git] / lib / pdf / InfoOutputDev.h
index ead6a44..93451f8 100644 (file)
 #ifndef __infooutputdev_h__
 #define __infooutputdev_h__
 
+#include "popplercompat.h"
 #include "GfxFont.h"
 #include "OutputDev.h"
 #include "SplashOutputDev.h"
+#include "Page.h"
+
 #ifdef HAVE_POPPLER
-#include <splash/SplashTypes.h>
-#include <splash/SplashPath.h>
-#include <splash/SplashFont.h>
-#include <splash/SplashFontFile.h>
+  #include <splash/SplashTypes.h>
+  #include <splash/SplashPath.h>
+  #include <splash/SplashFont.h>
+  #include <splash/SplashFontFile.h>
 #else
-#include "SplashTypes.h"
-#include "SplashPath.h"
-#include "SplashFont.h"
-#include "SplashFontFile.h"
+  #include "xpdf/config.h"
+  #include "SplashTypes.h"
+  #include "SplashPath.h"
+  #include "SplashFont.h"
+  #include "SplashFontFile.h"
 #endif
 
 #ifdef HAVE_POPPLER
@@ -44,6 +48,7 @@
 #include "../gfxdevice.h"
 #include "../gfxtools.h"
 #include "../gfxfont.h"
+#include "../q.h"
 
 #define INTERNAL_FONT_SIZE 1024.0
 #define GLYPH_IS_SPACE(g) ((!(g)->line || ((g)->line->type==gfx_moveTo && !(g)->line->next)) && (g)->advance)
@@ -72,6 +77,7 @@ public:
 
     double lastx,lasty;
     int lastchar;
+    int lastadvance;
 
     double ascender,descender;
 
@@ -81,10 +87,12 @@ public:
     double max_size;
     int num_glyphs;
     GlyphInfo**glyphs;
-    int*charid2glyph;
+    dict_t**kerning;
+
     SplashFont*splash_font;
     char seen;
     int space_char;
+    float average_advance;
 };
 
 extern char*getFontID(GfxFont*font);
@@ -95,6 +103,7 @@ class InfoOutputDev: public OutputDev
     FontInfo* currentfont;
     GlyphInfo* currentglyph;
     SplashOutputDev*splash;
+    Page *page;
 
     public:
     int x1,y1,x2,y2;
@@ -113,11 +122,20 @@ class InfoOutputDev: public OutputDev
     virtual GBool upsideDown();
     virtual GBool useDrawChar();
     virtual GBool interpretType3Chars();
-    virtual void startPage(int pageNum, GfxState *state, double crop_x1, double crop_y1, double crop_x2, double crop_y2);
+    virtual GBool checkPageSlice(Page *page, double hDPI, double vDPI,
+                              int rotate, GBool useMediaBox, GBool crop,
+                              int sliceX, int sliceY, int sliceW, int sliceH,
+                              GBool printing, Catalog *catalog,
+                              GBool (*abortCheckCbk)(void *data) = NULL,
+                              void *abortCheckCbkData = NULL);
+    virtual void startPage(int pageNum, GfxState *state);
     virtual void endPage();
     virtual void drawLink(Link *link, Catalog *catalog);
     virtual double getMaximumFontSize(char*id);
     virtual void updateFont(GfxState *state);
+  
+    virtual void saveState(GfxState *state);
+    virtual void restoreState(GfxState *state);
 
     virtual GBool beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen);
     virtual void type3D0(GfxState *state, double wx, double wy);
@@ -131,24 +149,31 @@ class InfoOutputDev: public OutputDev
                          double dx, double dy,
                          double originX, double originY,
                          CharCode code, int nBytes, Unicode *u, int uLen);
+
     virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
                               int width, int height, GBool invert,
+                              POPPLER_INTERPOLATE
                               GBool inlineImg);
     virtual void drawImage(GfxState *state, Object *ref, Stream *str,
                           int width, int height, GfxImageColorMap *colorMap,
+                          POPPLER_INTERPOLATE
                           int *maskColors, GBool inlineImg);
     virtual void drawMaskedImage(GfxState *state, Object *ref, Stream *str,
                                  int width, int height,
                                  GfxImageColorMap *colorMap,
+                                 POPPLER_INTERPOLATE
                                  Stream *maskStr,
                                  int maskWidth, int maskHeight,
-                                 GBool maskInvert);
+                                 GBool maskInvert
+                                 POPPLER_MASK_INTERPOLATE);
     virtual void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
                                      int width, int height,
                                      GfxImageColorMap *colorMap,
+                                     POPPLER_INTERPOLATE
                                      Stream *maskStr,
                                      int maskWidth, int maskHeight,
-                                     GfxImageColorMap *maskColorMap);
+                                     GfxImageColorMap *maskColorMap
+                                     POPPLER_MASK_INTERPOLATE);
 
     virtual FontInfo* getFont(char*id);
 };