Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: include/pdf/SkPDFDevice.h

Issue 12466008: PDF: add support for named destinations (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « include/core/SkAnnotation.h ('k') | src/core/SkAnnotation.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPDFDevice_DEFINED 10 #ifndef SkPDFDevice_DEFINED
11 #define SkPDFDevice_DEFINED 11 #define SkPDFDevice_DEFINED
12 12
13 #include "SkCanvas.h" 13 #include "SkCanvas.h"
14 #include "SkDevice.h" 14 #include "SkDevice.h"
15 #include "SkPaint.h" 15 #include "SkPaint.h"
16 #include "SkPath.h" 16 #include "SkPath.h"
17 #include "SkRect.h" 17 #include "SkRect.h"
18 #include "SkRefCnt.h" 18 #include "SkRefCnt.h"
19 #include "SkStream.h" 19 #include "SkStream.h"
20 #include "SkTDArray.h"
20 #include "SkTScopedPtr.h" 21 #include "SkTScopedPtr.h"
21 22
22 class SkPDFArray; 23 class SkPDFArray;
23 class SkPDFDevice; 24 class SkPDFDevice;
24 class SkPDFDict; 25 class SkPDFDict;
25 class SkPDFFont; 26 class SkPDFFont;
26 class SkPDFFormXObject; 27 class SkPDFFormXObject;
27 class SkPDFGlyphSetMap; 28 class SkPDFGlyphSetMap;
28 class SkPDFGraphicState; 29 class SkPDFGraphicState;
29 class SkPDFObject; 30 class SkPDFObject;
30 class SkPDFShader; 31 class SkPDFShader;
31 class SkPDFStream; 32 class SkPDFStream;
32 33
33 // Private classes. 34 // Private classes.
34 struct ContentEntry; 35 struct ContentEntry;
35 struct GraphicStateEntry; 36 struct GraphicStateEntry;
37 struct NamedDestination;
36 38
37 /** \class SkPDFDevice 39 /** \class SkPDFDevice
38 40
39 The drawing context for the PDF backend. 41 The drawing context for the PDF backend.
40 */ 42 */
41 class SkPDFDevice : public SkDevice { 43 class SkPDFDevice : public SkDevice {
42 public: 44 public:
43 /** Create a PDF drawing context with the given width and height. 45 /** Create a PDF drawing context with the given width and height.
44 * 72 points/in means letter paper is 612x792. 46 * 72 points/in means letter paper is 612x792.
45 * @param pageSize Page size in points. 47 * @param pageSize Page size in points.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 * device's resources recursively. (Useful for adding 137 * device's resources recursively. (Useful for adding
136 * objects to the catalog.) 138 * objects to the catalog.)
137 */ 139 */
138 SK_API void getResources(SkTDArray<SkPDFObject*>* resourceList, 140 SK_API void getResources(SkTDArray<SkPDFObject*>* resourceList,
139 bool recursive) const; 141 bool recursive) const;
140 142
141 /** Get the fonts used on this device. 143 /** Get the fonts used on this device.
142 */ 144 */
143 SK_API const SkTDArray<SkPDFFont*>& getFontResources() const; 145 SK_API const SkTDArray<SkPDFFont*>& getFontResources() const;
144 146
147 /** Add our named destinations to the supplied dictionary.
148 * @param dict Dictionary to add destinations to.
149 * @param page The PDF object representing the page for this device.
150 */
151 void appendDestinations(SkPDFDict* dict, SkPDFObject* page);
152
145 /** Returns a copy of the media box for this device. The caller is required 153 /** Returns a copy of the media box for this device. The caller is required
146 * to unref() this when it is finished. 154 * to unref() this when it is finished.
147 */ 155 */
148 SK_API SkPDFArray* copyMediaBox() const; 156 SK_API SkPDFArray* copyMediaBox() const;
149 157
150 /** Get the annotations from this page, or NULL if there are none. 158 /** Get the annotations from this page, or NULL if there are none.
151 */ 159 */
152 SK_API SkPDFArray* getAnnotations() const { return fAnnotations; } 160 SK_API SkPDFArray* getAnnotations() const { return fAnnotations; }
153 161
154 /** Returns a SkStream with the page contents. The caller is responsible 162 /** Returns a SkStream with the page contents. The caller is responsible
(...skipping 29 matching lines...) Expand all
184 // order to get the right access levels without using friend. 192 // order to get the right access levels without using friend.
185 friend class ScopedContentEntry; 193 friend class ScopedContentEntry;
186 194
187 SkISize fPageSize; 195 SkISize fPageSize;
188 SkISize fContentSize; 196 SkISize fContentSize;
189 SkMatrix fInitialTransform; 197 SkMatrix fInitialTransform;
190 SkClipStack fExistingClipStack; 198 SkClipStack fExistingClipStack;
191 SkRegion fExistingClipRegion; 199 SkRegion fExistingClipRegion;
192 SkPDFArray* fAnnotations; 200 SkPDFArray* fAnnotations;
193 SkPDFDict* fResourceDict; 201 SkPDFDict* fResourceDict;
202 SkTDArray<NamedDestination*> fNamedDestinations;
194 203
195 SkTDArray<SkPDFGraphicState*> fGraphicStateResources; 204 SkTDArray<SkPDFGraphicState*> fGraphicStateResources;
196 SkTDArray<SkPDFObject*> fXObjectResources; 205 SkTDArray<SkPDFObject*> fXObjectResources;
197 SkTDArray<SkPDFFont*> fFontResources; 206 SkTDArray<SkPDFFont*> fFontResources;
198 SkTDArray<SkPDFObject*> fShaderResources; 207 SkTDArray<SkPDFObject*> fShaderResources;
199 208
200 SkTScopedPtr<ContentEntry> fContentEntries; 209 SkTScopedPtr<ContentEntry> fContentEntries;
201 ContentEntry* fLastContentEntry; 210 ContentEntry* fLastContentEntry;
202 SkTScopedPtr<ContentEntry> fMarginContentEntries; 211 SkTScopedPtr<ContentEntry> fMarginContentEntries;
203 ContentEntry* fLastMarginContentEntry; 212 ContentEntry* fLastMarginContentEntry;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 const SkRegion& clipRegion, 275 const SkRegion& clipRegion,
267 const SkBitmap& bitmap, 276 const SkBitmap& bitmap,
268 const SkIRect* srcRect, 277 const SkIRect* srcRect,
269 const SkPaint& paint); 278 const SkPaint& paint);
270 279
271 /** Helper method for copyContentToData. It is responsible for copying the 280 /** Helper method for copyContentToData. It is responsible for copying the
272 * list of content entries |entry| to |data|. 281 * list of content entries |entry| to |data|.
273 */ 282 */
274 void copyContentEntriesToData(ContentEntry* entry, SkWStream* data) const; 283 void copyContentEntriesToData(ContentEntry* entry, SkWStream* data) const;
275 284
276 bool handleAnnotations(const SkRect& r, const SkMatrix& matrix, 285 bool handleRectAnnotation(const SkRect& r, const SkMatrix& matrix,
277 const SkPaint& paint); 286 const SkPaint& paint);
287 bool handlePointAnnotation(const SkPoint* points, size_t count,
288 const SkMatrix& matrix, const SkPaint& paint);
289 SkPDFDict* createLinkAnnotation(const SkRect& r, const SkMatrix& matrix);
290 void handleLinkToURL(SkData* urlData, const SkRect& r,
291 const SkMatrix& matrix);
292 void handleLinkToNamedDest(SkData* nameData, const SkRect& r,
293 const SkMatrix& matrix);
294 void defineNamedDestination(SkData* nameData, const SkPoint& point,
295 const SkMatrix& matrix);
278 296
279 typedef SkDevice INHERITED; 297 typedef SkDevice INHERITED;
280 }; 298 };
281 299
282 #endif 300 #endif
OLDNEW
« no previous file with comments | « include/core/SkAnnotation.h ('k') | src/core/SkAnnotation.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698