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

Last change on this file since 461 was 277, checked in by rbri, 12 years ago

PDF plugin: Poppler library updated to version 0.12.3

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