]> www.fi.muni.cz Git - evince.git/blob - pdf/xpdf/OutputDev.h
embryonic PDF viewer as a Bonobo container...
[evince.git] / pdf / xpdf / OutputDev.h
1 //========================================================================
2 //
3 // OutputDev.h
4 //
5 // Copyright 1996 Derek B. Noonburg
6 //
7 //========================================================================
8
9 #ifndef OUTPUTDEV_H
10 #define OUTPUTDEV_H
11
12 #ifdef __GNUC__
13 #pragma interface
14 #endif
15
16 #include "gtypes.h"
17
18 class GString;
19 class GfxState;
20 class GfxColorSpace;
21 class GfxImageColorMap;
22 class Stream;
23
24 //------------------------------------------------------------------------
25 // OutputDev
26 //------------------------------------------------------------------------
27
28 class OutputDev {
29 public:
30
31   // Constructor.
32   OutputDev() {}
33
34   // Destructor.
35   virtual ~OutputDev() {}
36
37   //----- get info about output device
38
39   // Does this device use upside-down coordinates?
40   // (Upside-down means (0,0) is the top left corner of the page.)
41   virtual GBool upsideDown() = 0;
42
43   // Does this device use drawChar() or drawString()?
44   virtual GBool useDrawChar() = 0;
45
46   //----- initialization and control
47
48   // Set default transform matrix.
49   virtual void setDefaultCTM(double *ctm1);
50
51   // Start a page.
52   virtual void startPage(int pageNum, GfxState *state) {}
53
54   // End a page.
55   virtual void endPage() {}
56
57   // Dump page contents to display.
58   virtual void dump() {}
59
60   //----- coordinate conversion
61
62   // Convert between device and user coordinates.
63   virtual void cvtDevToUser(int dx, int dy, double *ux, double *uy);
64   virtual void cvtUserToDev(double ux, double uy, int *dx, int *dy);
65
66   //----- link borders
67   virtual void drawLinkBorder(double x1, double y1, double x2, double y2,
68                               double w) {}
69
70   //----- save/restore graphics state
71   virtual void saveState(GfxState *state) {}
72   virtual void restoreState(GfxState *state) {}
73
74   //----- update graphics state
75   virtual void updateAll(GfxState *state);
76   virtual void updateCTM(GfxState *state, double m11, double m12,
77                          double m21, double m22, double m31, double m32) {}
78   virtual void updateLineDash(GfxState *state) {}
79   virtual void updateFlatness(GfxState *state) {}
80   virtual void updateLineJoin(GfxState *state) {}
81   virtual void updateLineCap(GfxState *state) {}
82   virtual void updateMiterLimit(GfxState *state) {}
83   virtual void updateLineWidth(GfxState *state) {}
84   virtual void updateFillColor(GfxState *state) {}
85   virtual void updateStrokeColor(GfxState *state) {}
86
87   //----- update text state
88   virtual void updateFont(GfxState *state) {}
89   virtual void updateTextMat(GfxState *state) {}
90   virtual void updateCharSpace(GfxState *state) {}
91   virtual void updateRender(GfxState *state) {}
92   virtual void updateRise(GfxState *state) {}
93   virtual void updateWordSpace(GfxState *state) {}
94   virtual void updateHorizScaling(GfxState *state) {}
95   virtual void updateTextPos(GfxState *state) {}
96   virtual void updateTextShift(GfxState *state, double shift) {}
97
98   //----- path painting
99   virtual void stroke(GfxState *state) {}
100   virtual void fill(GfxState *state) {}
101   virtual void eoFill(GfxState *state) {}
102
103   //----- path clipping
104   virtual void clip(GfxState *state) {}
105   virtual void eoClip(GfxState *state) {}
106
107   //----- text drawing
108   virtual void beginString(GfxState *state, GString *s) {}
109   virtual void endString(GfxState *state) {}
110   virtual void drawChar(GfxState *state, double x, double y,
111                         double dx, double dy, Guchar c) {}
112   virtual void drawChar16(GfxState *state, double x, double y,
113                           double dx, double dy, int c) {}
114   virtual void drawString(GfxState *state, GString *s) {}
115   virtual void drawString16(GfxState *state, GString *s) {}
116
117   //----- image drawing
118   virtual void drawImageMask(GfxState *state, Stream *str,
119                              int width, int height, GBool invert,
120                              GBool inlineImg);
121   virtual void drawImage(GfxState *state, Stream *str, int width,
122                          int height, GfxImageColorMap *colorMap,
123                          GBool inlineImg);
124
125 private:
126
127   double ctm[6];                // coordinate transform matrix
128   double ictm[6];               // inverse CTM
129 };
130
131 #endif