source: trunk/poppler/mypoppler/poppler/Page.h @ 2

Last change on this file since 2 was 2, checked in by Eugene Romanenko, 15 years ago

First import

File size: 6.3 KB
Line 
1//========================================================================
2//
3// Page.h
4//
5// Copyright 1996-2003 Glyph & Cog, LLC
6//
7//========================================================================
8
9#ifndef PAGE_H
10#define PAGE_H
11
12#ifdef USE_GCC_PRAGMAS
13#pragma interface
14#endif
15
16#include "Object.h"
17
18class Dict;
19class XRef;
20class OutputDev;
21class Links;
22class Catalog;
23class Annots;
24class Annot;
25class Gfx;
26
27//------------------------------------------------------------------------
28
29class PDFRectangle {
30public:
31  double x1, y1, x2, y2;
32
33  PDFRectangle() { x1 = y1 = x2 = y2 = 0; }
34  PDFRectangle(double x1A, double y1A, double x2A, double y2A)
35    { x1 = x1A; y1 = y1A; x2 = x2A; y2 = y2A; }
36  GBool isValid() { return x1 != 0 || y1 != 0 || x2 != 0 || y2 != 0; }
37};
38
39//------------------------------------------------------------------------
40// PageAttrs
41//------------------------------------------------------------------------
42
43class PageAttrs {
44public:
45
46  // Construct a new PageAttrs object by merging a dictionary
47  // (of type Pages or Page) into another PageAttrs object.  If
48  // <attrs> is NULL, uses defaults.
49  PageAttrs(PageAttrs *attrs, Dict *dict);
50
51  // Destructor.
52  ~PageAttrs();
53
54  // Accessors.
55  PDFRectangle *getMediaBox() { return &mediaBox; }
56  PDFRectangle *getCropBox() { return &cropBox; }
57  GBool isCropped() { return haveCropBox; }
58  PDFRectangle *getBleedBox() { return &bleedBox; }
59  PDFRectangle *getTrimBox() { return &trimBox; }
60  PDFRectangle *getArtBox() { return &artBox; }
61  int getRotate() { return rotate; }
62  GooString *getLastModified()
63    { return lastModified.isString()
64        ? lastModified.getString() : (GooString *)NULL; }
65  Dict *getBoxColorInfo()
66    { return boxColorInfo.isDict() ? boxColorInfo.getDict() : (Dict *)NULL; }
67  Dict *getGroup()
68    { return group.isDict() ? group.getDict() : (Dict *)NULL; }
69  Stream *getMetadata()
70    { return metadata.isStream() ? metadata.getStream() : (Stream *)NULL; }
71  Dict *getPieceInfo()
72    { return pieceInfo.isDict() ? pieceInfo.getDict() : (Dict *)NULL; }
73  Dict *getSeparationInfo()
74    { return separationInfo.isDict()
75        ? separationInfo.getDict() : (Dict *)NULL; }
76  Dict *getResourceDict()
77    { return resources.isDict() ? resources.getDict() : (Dict *)NULL; }
78
79private:
80
81  GBool readBox(Dict *dict, char *key, PDFRectangle *box);
82
83  PDFRectangle mediaBox;
84  PDFRectangle cropBox;
85  GBool haveCropBox;
86  PDFRectangle bleedBox;
87  PDFRectangle trimBox;
88  PDFRectangle artBox;
89  int rotate;
90  Object lastModified;
91  Object boxColorInfo;
92  Object group;
93  Object metadata;
94  Object pieceInfo;
95  Object separationInfo;
96  Object resources;
97};
98
99//------------------------------------------------------------------------
100// Page
101//------------------------------------------------------------------------
102
103class Page {
104public:
105
106  // Constructor.
107  Page(XRef *xrefA, int numA, Dict *pageDict, PageAttrs *attrsA);
108
109  // Destructor.
110  ~Page();
111
112  // Is page valid?
113  GBool isOk() { return ok; }
114
115  // Get page parameters.
116  PDFRectangle *getMediaBox() { return attrs->getMediaBox(); }
117  PDFRectangle *getCropBox() { return attrs->getCropBox(); }
118  GBool isCropped() { return attrs->isCropped(); }
119  double getMediaWidth() 
120    { return attrs->getMediaBox()->x2 - attrs->getMediaBox()->x1; }
121  double getMediaHeight()
122    { return attrs->getMediaBox()->y2 - attrs->getMediaBox()->y1; }
123  double getCropWidth() 
124    { return attrs->getCropBox()->x2 - attrs->getCropBox()->x1; }
125  double getCropHeight()
126    { return attrs->getCropBox()->y2 - attrs->getCropBox()->y1; }
127  PDFRectangle *getBleedBox() { return attrs->getBleedBox(); }
128  PDFRectangle *getTrimBox() { return attrs->getTrimBox(); }
129  PDFRectangle *getArtBox() { return attrs->getArtBox(); }
130  int getRotate() { return attrs->getRotate(); }
131  GooString *getLastModified() { return attrs->getLastModified(); }
132  Dict *getBoxColorInfo() { return attrs->getBoxColorInfo(); }
133  Dict *getGroup() { return attrs->getGroup(); }
134  Stream *getMetadata() { return attrs->getMetadata(); }
135  Dict *getPieceInfo() { return attrs->getPieceInfo(); }
136  Dict *getSeparationInfo() { return attrs->getSeparationInfo(); }
137
138  // Get resource dictionary.
139  Dict *getResourceDict() { return attrs->getResourceDict(); }
140
141  // Get annotations array.
142  Object *getAnnots(Object *obj) { return annots.fetch(xref, obj); }
143
144  // Get contents.
145  Object *getContents(Object *obj) { return contents.fetch(xref, obj); }
146
147  // Get thumb.
148  Object *getThumb(Object *obj) { return thumb.fetch(xref, obj); }
149  GBool loadThumb(unsigned char **data, int *width, int *height, int *rowstride);
150
151  // Get transition.
152  Object *getTrans(Object *obj) { return trans.fetch(xref, obj); }
153
154  Gfx *createGfx(OutputDev *out, double hDPI, double vDPI,
155                 int rotate, GBool useMediaBox, GBool crop,
156                 int sliceX, int sliceY, int sliceW, int sliceH,
157                 Links *links, Catalog *catalog,
158                 GBool (*abortCheckCbk)(void *data),
159                 void *abortCheckCbkData,
160                 GBool (*annotDisplayDecideCbk)(Annot *annot, void *user_data),
161                 void *annotDisplayDecideCbkData);
162
163  // Display a page.
164  void display(OutputDev *out, double hDPI, double vDPI,
165               int rotate, GBool useMediaBox, GBool crop,
166               Links *links, Catalog *catalog,
167               GBool (*abortCheckCbk)(void *data) = NULL,
168               void *abortCheckCbkData = NULL,
169               GBool (*annotDisplayDecideCbk)(Annot *annot, void *user_data) = NULL,
170               void *annotDisplayDecideCbkData = NULL);
171
172  // Display part of a page.
173  void displaySlice(OutputDev *out, double hDPI, double vDPI,
174                    int rotate, GBool useMediaBox, GBool crop,
175                    int sliceX, int sliceY, int sliceW, int sliceH,
176                    Links *links, Catalog *catalog,
177                    GBool (*abortCheckCbk)(void *data) = NULL,
178                    void *abortCheckCbkData = NULL,
179                    GBool (*annotDisplayDecideCbk)(Annot *annot, void *user_data) = NULL,
180                    void *annotDisplayDecideCbkData = NULL);
181
182  void display(Gfx *gfx);
183 
184  // Get the page's default CTM.
185  void getDefaultCTM(double *ctm, double hDPI, double vDPI,
186                     int rotate, GBool upsideDown);
187
188private:
189
190  XRef *xref;                   // the xref table for this PDF file
191  int num;                      // page number
192  PageAttrs *attrs;             // page attributes
193  Object annots;                // annotations array
194  Object contents;              // page contents
195  Object thumb;                 // page thumbnail
196  Object trans;                 // page transition
197  GBool ok;                     // true if page is valid
198};
199
200#endif
Note: See TracBrowser for help on using the repository browser.