diff options
Diffstat (limited to 'pdf/xpdf/PSOutputDev.h')
-rw-r--r-- | pdf/xpdf/PSOutputDev.h | 70 |
1 files changed, 59 insertions, 11 deletions
diff --git a/pdf/xpdf/PSOutputDev.h b/pdf/xpdf/PSOutputDev.h index f7896cc..06130fb 100644 --- a/pdf/xpdf/PSOutputDev.h +++ b/pdf/xpdf/PSOutputDev.h @@ -25,6 +25,7 @@ class GfxPath; class GfxFont; class GfxColorSpace; class GfxSeparationColorSpace; +class PDFRectangle; struct PSFont16Enc; class PSOutCustomColor; @@ -52,12 +53,16 @@ public: // Open a PostScript output file, and write the prolog. PSOutputDev(char *fileName, XRef *xrefA, Catalog *catalog, - int firstPage, int lastPage, PSOutMode modeA); + int firstPage, int lastPage, PSOutMode modeA, + int paperWidthA = 0, int paperHeightA = 0, + GBool manualCtrlA = gFalse); // Open a PSOutputDev that will write to a generic stream. PSOutputDev(PSOutputFunc outputFuncA, void *outputStreamA, XRef *xrefA, Catalog *catalog, - int firstPage, int lastPage, PSOutMode modeA); + int firstPage, int lastPage, PSOutMode modeA, + int paperWidthA = 0, int paperHeightA = 0, + GBool manualCtrlA = gFalse); // Destructor -- writes the trailer and closes the file. virtual ~PSOutputDev(); @@ -78,6 +83,26 @@ public: // text in Type 3 fonts will be drawn with drawChar/drawString. virtual GBool interpretType3Chars() { return gFalse; } + //----- header/trailer (used only if manualCtrl is true) + + // Write the document-level header. + void writeHeader(int firstPage, int lastPage, PDFRectangle *box); + + // Write the Xpdf procset. + void writeXpdfProcset(); + + // Write the document-level setup. + void writeDocSetup(Catalog *catalog, int firstPage, int lastPage); + + // Write the setup for the current page. + void writePageSetup(); + + // Write the trailer for the current page. + void writePageTrailer(); + + // Write the document trailer. + void writeTrailer(); + //----- initialization and control // Start a page. @@ -124,6 +149,7 @@ public: //----- text drawing virtual void drawString(GfxState *state, GString *s); + virtual void endTextObject(GfxState *state); //----- image drawing virtual void drawImageMask(GfxState *state, Object *ref, Stream *str, @@ -147,23 +173,32 @@ public: //----- PostScript XObjects virtual void psXObject(Stream *psStream, Stream *level1Stream); + //----- miscellaneous + void setUnderlayCbk(void (*cbk)(PSOutputDev *psOut, void *data), + void *data) + { underlayCbk = cbk; underlayCbkData = data; } + void setOverlayCbk(void (*cbk)(PSOutputDev *psOut, void *data), + void *data) + { overlayCbk = cbk; overlayCbkData = data; } private: void init(PSOutputFunc outputFuncA, void *outputStreamA, PSFileType fileTypeA, XRef *xrefA, Catalog *catalog, - int firstPage, int lastPage, PSOutMode modeA); + int firstPage, int lastPage, PSOutMode modeA, + int paperWidthA, int paperHeightA, + GBool manualCtrlA); void setupResources(Dict *resDict); void setupFonts(Dict *resDict); void setupFont(GfxFont *font, Dict *parentResDict); - void setupEmbeddedType1Font(Ref *id, char *psName); - void setupExternalType1Font(GString *fileName, char *psName); - void setupEmbeddedType1CFont(GfxFont *font, Ref *id, char *psName); - void setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, char *psName); - void setupExternalTrueTypeFont(GfxFont *font, char *psName); - void setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, char *psName); - void setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, char *psName); - void setupType3Font(GfxFont *font, char *psName, Dict *parentResDict); + void setupEmbeddedType1Font(Ref *id, GString *psName); + void setupExternalType1Font(GString *fileName, GString *psName); + void setupEmbeddedType1CFont(GfxFont *font, Ref *id, GString *psName); + void setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GString *psName); + void setupExternalTrueTypeFont(GfxFont *font, GString *psName); + void setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, GString *psName); + void setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GString *psName); + void setupType3Font(GfxFont *font, GString *psName, Dict *parentResDict); void setupImages(Dict *resDict); void setupImage(Ref id, Stream *str); void addProcessColor(double c, double m, double y, double k); @@ -201,7 +236,12 @@ private: PSOutputFunc outputFunc; void *outputStream; PSFileType fileType; // file / pipe / stdout + GBool manualCtrl; int seqPage; // current sequential page number + void (*underlayCbk)(PSOutputDev *psOut, void *data); + void *underlayCbkData; + void (*overlayCbk)(PSOutputDev *psOut, void *data); + void *overlayCbkData; XRef *xref; // the xref table for this PDF file @@ -214,11 +254,14 @@ private: GString **fontFileNames; // list of names of all embedded external fonts int fontFileNameLen; // number of entries in fontFileNames array int fontFileNameSize; // size of fontFileNames array + int nextTrueTypeNum; // next unique number to append to a TrueType + // font name PSFont16Enc *font16Enc; // encodings for substitute 16-bit fonts int font16EncLen; // number of entries in font16Enc array int font16EncSize; // size of font16Enc array GList *xobjStack; // stack of XObject dicts currently being // processed + int numSaves; // current number of gsaves double tx, ty; // global translation double xScale, yScale; // global scaling @@ -230,6 +273,9 @@ private: PSOutCustomColor // used custom colors *customColors; + GBool haveTextClip; // set if text has been drawn with a + // clipping render mode + GBool inType3Char; // inside a Type 3 CharProc GString *t3String; // Type 3 content string double t3WX, t3WY, // Type 3 character parameters @@ -243,6 +289,8 @@ private: GBool ok; // set up ok? + + friend class WinPDFPrinter; }; #endif |