home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Enigma Amiga Life 110
/
EnigmaAmiga110CD.iso
/
indispensabili
/
utility
/
apdf
/
xpdf-0.80
/
xpdf
/
psoutputdev.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-04-27
|
5KB
|
160 lines
//========================================================================
//
// PSOutputDev.h
//
// Copyright 1996 Derek B. Noonburg
//
//========================================================================
#ifndef PSOUTPUTDEV_H
#define PSOUTPUTDEV_H
#ifdef __GNUC__
#pragma interface
#endif
#include <stddef.h>
#include "config.h"
#include "Object.h"
#include "OutputDev.h"
class GfxPath;
class GfxFont;
//------------------------------------------------------------------------
// Parameters
//------------------------------------------------------------------------
// Generate Level 1 PostScript?
extern GBool psOutLevel1;
// Paper size.
extern int paperWidth;
extern int paperHeight;
//------------------------------------------------------------------------
// PSOutputDev
//------------------------------------------------------------------------
enum PSFileType {
psFile, // write to file
psPipe, // write to pipe
psStdout // write to stdout
};
class PSOutputDev: public OutputDev {
public:
// Open a PostScript output file, and write the prolog.
PSOutputDev(char *fileName, Catalog *catalog,
int firstPage, int lastPage,
GBool embedType11, GBool doForm1);
// Destructor -- writes the trailer and closes the file.
virtual ~PSOutputDev();
// Check if file was successfully created.
virtual GBool isOk() { return ok; }
//---- get info about output device
// Does this device use upside-down coordinates?
// (Upside-down means (0,0) is the top left corner of the page.)
virtual GBool upsideDown() { return gFalse; }
// Does this device use drawChar() or drawString()?
virtual GBool useDrawChar() { return gFalse; }
//----- initialization and control
// Start a page.
virtual void startPage(int pageNum, GfxState *state);
// End a page.
virtual void endPage();
//----- save/restore graphics state
virtual void saveState(GfxState *state);
virtual void restoreState(GfxState *state);
//----- update graphics state
virtual void updateCTM(GfxState *state, double m11, double m12,
double m21, double m22, double m31, double m32);
virtual void updateLineDash(GfxState *state);
virtual void updateFlatness(GfxState *state);
virtual void updateLineJoin(GfxState *state);
virtual void updateLineCap(GfxState *state);
virtual void updateMiterLimit(GfxState *state);
virtual void updateLineWidth(GfxState *state);
virtual void updateFillColor(GfxState *state);
virtual void updateStrokeColor(GfxState *state);
//----- update text state
virtual void updateFont(GfxState *state);
virtual void updateTextMat(GfxState *state);
virtual void updateCharSpace(GfxState *state);
virtual void updateRender(GfxState *state);
virtual void updateRise(GfxState *state);
virtual void updateWordSpace(GfxState *state);
virtual void updateHorizScaling(GfxState *state);
virtual void updateTextPos(GfxState *state);
virtual void updateTextShift(GfxState *state, double shift);
//----- path painting
virtual void stroke(GfxState *state);
virtual void fill(GfxState *state);
virtual void eoFill(GfxState *state);
//----- path clipping
virtual void clip(GfxState *state);
virtual void eoClip(GfxState *state);
//----- text drawing
virtual void drawString(GfxState *state, GString *s);
//----- image drawing
virtual void drawImageMask(GfxState *state, Stream *str,
int width, int height, GBool invert,
GBool inlineImg);
virtual void drawImage(GfxState *state, Stream *str, int width,
int height, GfxImageColorMap *colorMap,
GBool inlineImg);
private:
void setupFonts(Dict *resDict);
void setupFont(GfxFont *font);
void setupEmbeddedFont(Ref *id);
void setupEmbeddedFont(char *fileName);
void doPath(GfxPath *path);
void doImageL1(GfxImageColorMap *colorMap,
GBool invert, GBool inlineImg,
Stream *str, int width, int height, int len);
void doImage(GfxImageColorMap *colorMap,
GBool invert, GBool inlineImg,
Stream *str, int width, int height, int len);
void writePS(char *fmt, ...);
void writePSString(GString *s);
GBool embedType1; // embed Type 1 fonts?
GBool doForm; // generate a form?
FILE *f; // PostScript file
PSFileType fileType; // file / pipe / stdout
int seqPage; // current sequential page number
Ref *fontIDs; // list of object IDs of all used fonts
int fontIDLen; // number of entries in fontIDs array
int fontIDSize; // size of fontIDs array
Ref *fontFileIDs; // list of object IDs of all embedded fonts
int fontFileIDLen; // number of entries in fontFileIDs array
int fontFileIDSize; // size of fontFileIDs array
char **fontFileNames; // list of names of all embedded external fonts
int fontFileNameLen; // number of entries in fontFileNames array
int fontFileNameSize; // size of fontFileNames array
GBool ok; // set up ok?
};
#endif