X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpdf%2FGFXOutputDev.h;h=f062e150f8c354f19ce58ac61e10f93d708354ae;hb=c73fce0d6691eb05e02fc527ac699e259c237250;hp=51e63121176d8784971b15666a02e8756a6b99e4;hpb=89548fb698c2b3002364c52b5962e4c3326eb96e;p=swftools.git diff --git a/lib/pdf/GFXOutputDev.h b/lib/pdf/GFXOutputDev.h index 51e6312..f062e15 100644 --- a/lib/pdf/GFXOutputDev.h +++ b/lib/pdf/GFXOutputDev.h @@ -5,7 +5,6 @@ #include "../gfxsource.h" #include "../gfxtools.h" -#include "config.h" #include "InfoOutputDev.h" #include "PDFDoc.h" #include "GlobalParams.h" @@ -29,14 +28,13 @@ class GFXOutputState { gfxresult_t* softmaskrecording; // for soft masks gfxdevice_t* olddevice; -}; + + double *dashPattern; + int dashLength; + double dashStart; -typedef struct _parameter -{ - char*name; - char*value; - struct _parameter*next; -} parameter_t; + GfxState*state; +}; typedef struct _feature { @@ -48,6 +46,19 @@ void addGlobalFont(const char*filename); void addGlobalLanguageDir(const char*dir); void addGlobalFontDir(const char*dirname); +class GFXOutputGlobals { +public: + feature_t*featurewarnings; + + int textmodeinfo; // did we write "Text will be rendered as polygon" yet? + 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? + + GFXOutputGlobals(); + ~GFXOutputGlobals(); +}; + class GFXOutputDev: public CommonOutputDev { public: gfxdevice_t* device; @@ -61,7 +72,7 @@ public: virtual void setParameter(const char*key, const char*value); // Start a page. - virtual void startPage(int pageNum, GfxState *state, double x1, double y1, double x2, double y2) ; + virtual void startPage(int pageNum, GfxState *state); virtual void endPage(); //----- get info about output device @@ -86,6 +97,7 @@ public: //----- update graphics state + virtual void updateLineDash(GfxState *state); virtual void updateFont(GfxState *state); virtual void updateFontMatrix(GfxState *state); virtual void updateFillColor(GfxState *state); @@ -123,19 +135,13 @@ public: virtual GBool useTilingPatternFill(); virtual GBool useShadedFills(); -#if (xpdfMajorVersion < 3) || (xpdfMinorVersion < 2) || (xpdfUpdateVersion < 7) - 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); -#else - virtual void tilingPatternFill(GfxState *state, Gfx *gfx, Object *str, +virtual POPPLER_TILING_PATERN_RETURN tilingPatternFill(GfxState *state, + POPPLER_TILING_PATERN_GFX + Object *str, int paintType, Dict *resDict, double *mat, double *bbox, int x0, int y0, int x1, int y1, double xStep, double yStep); -#endif virtual GBool functionShadedFill(GfxState *state, GfxFunctionShading *shading); virtual GBool axialShadedFill(GfxState *state, GfxAxialShading *shading); @@ -186,8 +192,6 @@ public: virtual void type3D0(GfxState *state, double wx, double wy); virtual void type3D1(GfxState *state, double wx, double wy, double llx, double lly, double urx, double ury); - virtual void preparePage(int pdfpage, int outputpage); - char* searchForSuitableFont(GfxFont*gfxFont); void finish(); @@ -204,6 +208,8 @@ public: //virtual void setVectorAntialias(GBool vaa) {} //virtual void psXObject(Stream *psStream, Stream *level1Stream) {} + virtual void setPageMap(int*pagemap, int pagemap_len); + private: gfxline_t* gfxPath_to_gfxline(GfxState*state, GfxPath*path, int closed, int user_movex, int user_movey); @@ -213,51 +219,39 @@ public: int width, int height, GfxImageColorMap*colorMap, GBool invert, GBool inlineImg, int mask, int *maskColors, Stream *maskStr, int maskWidth, int maskHeight, GBool maskInvert, GfxImageColorMap*maskColorMap); - int setGfxFont(char*id, char*name, char*filename, double maxSize, CharCodeToUnicode*ctu); + void strokeGfxline(GfxState *state, gfxline_t*line, int flags); - void clipToGfxLine(GfxState *state, gfxline_t*line); - void fillGfxLine(GfxState *state, gfxline_t*line); + void clipToGfxLine(GfxState *state, gfxline_t*line, char evenodd); + void fillGfxLine(GfxState *state, gfxline_t*line, char evenodd); + + gfxfont_t* createGfxFont(GfxFont*xpdffont, FontInfo*src); void showfeature(const char*feature,char fully, char warn); void warnfeature(const char*feature,char fully); void infofeature(const char*feature); + + char* searchFont(const char*name); + char* substituteFont(GfxFont*gfxFont, char*oldname); + char* writeEmbeddedFontToFile(XRef*ref, GfxFont*font); - feature_t*featurewarnings; - - char outer_clip_box; //whether the page clip box is still on - - gfxfontlist_t*gfxfontlist; + /* for page mapping */ + int* page2page; + int num_pages; - GBool do_interpretType3Chars; + int currentpage; + char outer_clip_box; //whether the page clip box is still on InfoOutputDev*info; GFXOutputState states[64]; int statepos; - int currentpage; - PDFDoc*doc; XRef*xref; - char* searchFont(const char*name); - char* substituteFont(GfxFont*gfxFont, char*oldname); - char* writeEmbeddedFontToFile(XRef*ref, GfxFont*font); - int t1id; - int textmodeinfo; // did we write "Text will be rendered as polygon" yet? - 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 type3active; // are we between beginType3()/endType3()? GfxState *laststate; - char type3Warning; - - const char* substitutetarget[256]; - const char* substitutesource[256]; - int substitutepos; - int user_movex,user_movey; int user_clipx1,user_clipx2,user_clipy1,user_clipy2; @@ -273,9 +267,11 @@ public: FontInfo*current_fontinfo; gfxmatrix_t current_font_matrix; - int*pages; - int pagebuflen; - int pagepos; + gfxfont_t* last_char_gfxfont; + int last_char; + double last_char_x; + double last_char_y; + char last_char_was_space; /* config */ int config_use_fontconfig; @@ -284,10 +280,14 @@ public: int config_transparent; int config_extrafontdata; int config_convertgradients; - int config_optimize_polygons; + int config_disable_polygon_conversion; + int config_multiply; + int config_bigchar; + int config_drawonlyshapes; + int config_detectspaces; + int config_textonly; + char* config_linkdatafile; double config_fontquality; - - parameter_t*parameters; }; class GFXGlobalParams: public GlobalParams {