source: trunk/poppler/mypoppler/poppler/OutputDev.h @ 250

Last change on this file since 250 was 250, checked in by Eugene Romanenko, 13 years ago

PDF plugin: poppler library updated to version 0.8.3

File size: 9.7 KB
Line 
1//========================================================================
2//
3// OutputDev.h
4//
5// Copyright 1996-2003 Glyph & Cog, LLC
6//
7//========================================================================
8
9#ifndef OUTPUTDEV_H
10#define OUTPUTDEV_H
11
12#ifdef USE_GCC_PRAGMAS
13#pragma interface
14#endif
15
16#include <poppler-config.h>
17#include "goo/gtypes.h"
18#include "CharTypes.h"
19
20class Dict;
21class GooHash;
22class GooString;
23class GfxState;
24struct GfxColor;
25class GfxColorSpace;
26class GfxImageColorMap;
27class GfxFunctionShading;
28class GfxAxialShading;
29class GfxRadialShading;
30class Stream;
31class Links;
32class Link;
33class Catalog;
34class Page;
35class Function;
36
37//------------------------------------------------------------------------
38// OutputDev
39//------------------------------------------------------------------------
40
41class OutputDev {
42public:
43
44  // Constructor.
45  OutputDev() { profileHash = NULL; }
46
47  // Destructor.
48  virtual ~OutputDev() {}
49
50  //----- get info about output device
51
52  // Does this device use upside-down coordinates?
53  // (Upside-down means (0,0) is the top left corner of the page.)
54  virtual GBool upsideDown() = 0;
55
56  // Does this device use drawChar() or drawString()?
57  virtual GBool useDrawChar() = 0;
58
59  // Does this device use tilingPatternFill()?  If this returns false,
60  // tiling pattern fills will be reduced to a series of other drawing
61  // operations.
62  virtual GBool useTilingPatternFill() { return gFalse; }
63
64  // Does this device use functionShadedFill(), axialShadedFill(), and
65  // radialShadedFill()?  If this returns false, these shaded fills
66  // will be reduced to a series of other drawing operations.
67  virtual GBool useShadedFills() { return gFalse; }
68
69  // Does this device use drawForm()?  If this returns false,
70  // form-type XObjects will be interpreted (i.e., unrolled).
71  virtual GBool useDrawForm() { return gFalse; }
72
73  // Does this device use beginType3Char/endType3Char?  Otherwise,
74  // text in Type 3 fonts will be drawn with drawChar/drawString.
75  virtual GBool interpretType3Chars() = 0;
76
77  // Does this device need non-text content?
78  virtual GBool needNonText() { return gTrue; }
79
80  //----- initialization and control
81
82  // Set default transform matrix.
83  virtual void setDefaultCTM(double *ctm);
84
85  // Check to see if a page slice should be displayed.  If this
86  // returns false, the page display is aborted.  Typically, an
87  // OutputDev will use some alternate means to display the page
88  // before returning false.
89  virtual GBool checkPageSlice(Page *page, double hDPI, double vDPI,
90                               int rotate, GBool useMediaBox, GBool crop,
91                               int sliceX, int sliceY, int sliceW, int sliceH,
92                               GBool printing, Catalog * catalog,
93                               GBool (* abortCheckCbk)(void *data) = NULL,
94                               void * abortCheckCbkData = NULL)
95    { return gTrue; }
96
97  // Start a page.
98  virtual void startPage(int pageNum, GfxState *state) {}
99
100  // End a page.
101  virtual void endPage() {}
102
103  // Dump page contents to display.
104  virtual void dump() {}
105
106  //----- coordinate conversion
107
108  // Convert between device and user coordinates.
109  virtual void cvtDevToUser(double dx, double dy, double *ux, double *uy);
110  virtual void cvtUserToDev(double ux, double uy, int *dx, int *dy);
111
112  double *getDefCTM() { return defCTM; }
113  double *getDefICTM() { return defICTM; }
114
115  //----- save/restore graphics state
116  virtual void saveState(GfxState * /*state*/) {}
117  virtual void restoreState(GfxState * /*state*/) {}
118
119  //----- update graphics state
120  virtual void updateAll(GfxState *state);
121  virtual void updateCTM(GfxState * /*state*/, double /*m11*/, double /*m12*/,
122                         double /*m21*/, double /*m22*/, double /*m31*/, double /*m32*/) {}
123  virtual void updateLineDash(GfxState * /*state*/) {}
124  virtual void updateFlatness(GfxState * /*state*/) {}
125  virtual void updateLineJoin(GfxState * /*state*/) {}
126  virtual void updateLineCap(GfxState * /*state*/) {}
127  virtual void updateMiterLimit(GfxState * /*state*/) {}
128  virtual void updateLineWidth(GfxState * /*state*/) {}
129  virtual void updateStrokeAdjust(GfxState * /*state*/) {}
130  virtual void updateAlphaIsShape(GfxState * /*state*/) {}
131  virtual void updateTextKnockout(GfxState * /*state*/) {}
132  virtual void updateFillColorSpace(GfxState * /*state*/) {}
133  virtual void updateStrokeColorSpace(GfxState * /*state*/) {}
134  virtual void updateFillColor(GfxState * /*state*/) {}
135  virtual void updateStrokeColor(GfxState * /*state*/) {}
136  virtual void updateBlendMode(GfxState * /*state*/) {}
137  virtual void updateFillOpacity(GfxState * /*state*/) {}
138  virtual void updateStrokeOpacity(GfxState * /*state*/) {}
139  virtual void updateFillOverprint(GfxState * /*state*/) {}
140  virtual void updateStrokeOverprint(GfxState * /*state*/) {}
141  virtual void updateTransfer(GfxState * /*state*/) {}
142
143  //----- update text state
144  virtual void updateFont(GfxState * /*state*/) {}
145  virtual void updateTextMat(GfxState * /*state*/) {}
146  virtual void updateCharSpace(GfxState * /*state*/) {}
147  virtual void updateRender(GfxState * /*state*/) {}
148  virtual void updateRise(GfxState * /*state*/) {}
149  virtual void updateWordSpace(GfxState * /*state*/) {}
150  virtual void updateHorizScaling(GfxState * /*state*/) {}
151  virtual void updateTextPos(GfxState * /*state*/) {}
152  virtual void updateTextShift(GfxState * /*state*/, double /*shift*/) {}
153
154  //----- path painting
155  virtual void stroke(GfxState * /*state*/) {}
156  virtual void fill(GfxState * /*state*/) {}
157  virtual void eoFill(GfxState * /*state*/) {}
158  virtual void tilingPatternFill(GfxState * /*state*/, Object * /*str*/,
159                                 int /*paintType*/, Dict * /*resDict*/,
160                                 double * /*mat*/, double * /*bbox*/,
161                                 int /*x0*/, int /*y0*/, int /*x1*/, int /*y1*/,
162                                 double /*xStep*/, double /*yStep*/) {}
163  virtual GBool functionShadedFill(GfxState * /*state*/,
164                                   GfxFunctionShading * /*shading*/)
165    { return gFalse; }
166  virtual GBool axialShadedFill(GfxState * /*state*/, GfxAxialShading * /*shading*/)
167    { return gFalse; }
168  virtual GBool radialShadedFill(GfxState * /*state*/, GfxRadialShading * /*shading*/)
169    { return gFalse; }
170
171  //----- path clipping
172  virtual void clip(GfxState * /*state*/) {}
173  virtual void eoClip(GfxState * /*state*/) {}
174  virtual void clipToStrokePath(GfxState * /*state*/) {}
175
176  //----- text drawing
177  virtual void beginStringOp(GfxState * /*state*/) {}
178  virtual void endStringOp(GfxState * /*state*/) {}
179  virtual void beginString(GfxState * /*state*/, GooString * /*s*/) {}
180  virtual void endString(GfxState * /*state*/) {}
181  virtual void drawChar(GfxState * /*state*/, double /*x*/, double /*y*/,
182                        double /*dx*/, double /*dy*/,
183                        double /*originX*/, double /*originY*/,
184                        CharCode /*code*/, int /*nBytes*/, Unicode * /*u*/, int /*uLen*/) {}
185  virtual void drawString(GfxState * /*state*/, GooString * /*s*/) {}
186  virtual GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/,
187                               double /*dx*/, double /*dy*/,
188                               CharCode /*code*/, Unicode * /*u*/, int /*uLen*/);
189  virtual void endType3Char(GfxState * /*state*/) {}
190  virtual void endTextObject(GfxState * /*state*/) {}
191
192  //----- image drawing
193  virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
194                             int width, int height, GBool invert,
195                             GBool inlineImg);
196  virtual void drawImage(GfxState *state, Object *ref, Stream *str,
197                         int width, int height, GfxImageColorMap *colorMap,
198                         int *maskColors, GBool inlineImg);
199  virtual void drawMaskedImage(GfxState *state, Object *ref, Stream *str,
200                               int width, int height,
201                               GfxImageColorMap *colorMap,
202                               Stream *maskStr, int maskWidth, int maskHeight,
203                               GBool maskInvert);
204  virtual void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
205                                   int width, int height,
206                                   GfxImageColorMap *colorMap,
207                                   Stream *maskStr,
208                                   int maskWidth, int maskHeight,
209                                   GfxImageColorMap *maskColorMap);
210
211  //----- grouping operators
212
213  virtual void endMarkedContent(GfxState *state);
214  virtual void beginMarkedContent(char *name);
215  virtual void beginMarkedContent(char *name, Dict *properties);
216  virtual void markPoint(char *name);
217  virtual void markPoint(char *name, Dict *properties);
218 
219 
220
221#if OPI_SUPPORT
222  //----- OPI functions
223  virtual void opiBegin(GfxState *state, Dict *opiDict);
224  virtual void opiEnd(GfxState *state, Dict *opiDict);
225#endif
226
227  //----- Type 3 font operators
228  virtual void type3D0(GfxState * /*state*/, double /*wx*/, double /*wy*/) {}
229  virtual void type3D1(GfxState * /*state*/, double /*wx*/, double /*wy*/,
230                       double /*llx*/, double /*lly*/, double /*urx*/, double /*ury*/) {}
231
232  //----- form XObjects
233  virtual void drawForm(Ref /*id*/) {}
234
235  //----- PostScript XObjects
236  virtual void psXObject(Stream * /*psStream*/, Stream * /*level1Stream*/) {}
237
238  //----- Profiling
239  virtual void startProfile();
240  virtual GooHash *getProfileHash() {return profileHash; }
241  virtual GooHash *endProfile();
242
243  //----- transparency groups and soft masks
244  virtual void beginTransparencyGroup(GfxState * /*state*/, double * /*bbox*/,
245                                      GfxColorSpace * /*blendingColorSpace*/,
246                                      GBool /*isolated*/, GBool /*knockout*/,
247                                      GBool /*forSoftMask*/) {}
248  virtual void endTransparencyGroup(GfxState * /*state*/) {}
249  virtual void paintTransparencyGroup(GfxState * /*state*/, double * /*bbox*/) {}
250  virtual void setSoftMask(GfxState * /*state*/, double * /*bbox*/, GBool /*alpha*/,
251                           Function * /*transferFunc*/, GfxColor * /*backdropColor*/) {}
252  virtual void clearSoftMask(GfxState * /*state*/) {}
253
254  //----- links
255  virtual void processLink(Link * /*link*/, Catalog * /*catalog*/) {}
256
257#if 1 //~tmp: turn off anti-aliasing temporarily
258  virtual GBool getVectorAntialias() { return gFalse; }
259  virtual void setVectorAntialias(GBool /*vaa*/) {}
260#endif
261
262private:
263
264  double defCTM[6];             // default coordinate transform matrix
265  double defICTM[6];            // inverse of default CTM
266  GooHash *profileHash;
267};
268
269#endif
Note: See TracBrowser for help on using the repository browser.