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

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

Issue 1257533004: Merge sub-device annotations in SkPDFDevice::drawDevice() (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Fix warnings Created 5 years, 4 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
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
(...skipping 21 matching lines...) Expand all
32 class SkPDFGraphicState; 32 class SkPDFGraphicState;
33 class SkPDFObject; 33 class SkPDFObject;
34 class SkPDFShader; 34 class SkPDFShader;
35 class SkPDFStream; 35 class SkPDFStream;
36 class SkRRect; 36 class SkRRect;
37 37
38 // Private classes. 38 // Private classes.
39 struct ContentEntry; 39 struct ContentEntry;
40 struct GraphicStateEntry; 40 struct GraphicStateEntry;
41 struct NamedDestination; 41 struct NamedDestination;
42 struct RectWithData;
42 43
43 /** \class SkPDFDevice 44 /** \class SkPDFDevice
44 45
45 The drawing context for the PDF backend. 46 The drawing context for the PDF backend.
46 */ 47 */
47 class SkPDFDevice : public SkBaseDevice { 48 class SkPDFDevice : public SkBaseDevice {
48 public: 49 public:
49 /** Create a PDF drawing context. SkPDFDevice applies a 50 /** Create a PDF drawing context. SkPDFDevice applies a
50 * scale-and-translate transform to move the origin from the 51 * scale-and-translate transform to move the origin from the
51 * bottom left (PDF default) to the top left (Skia default). 52 * bottom left (PDF default) to the top left (Skia default).
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // PDF specific methods. 136 // PDF specific methods.
136 137
137 /** Create the resource dictionary for this device. 138 /** Create the resource dictionary for this device.
138 */ 139 */
139 SkPDFDict* createResourceDict() const; 140 SkPDFDict* createResourceDict() const;
140 141
141 /** Get the fonts used on this device. 142 /** Get the fonts used on this device.
142 */ 143 */
143 const SkTDArray<SkPDFFont*>& getFontResources() const; 144 const SkTDArray<SkPDFFont*>& getFontResources() const;
144 145
146 /** Add our annotations (link to urls and destinations) to the supplied
147 * array.
148 * @param array Array to add annotations to.
149 */
150 void appendAnnotations(SkPDFArray* array) const;
151
145 /** Add our named destinations to the supplied dictionary. 152 /** Add our named destinations to the supplied dictionary.
146 * @param dict Dictionary to add destinations to. 153 * @param dict Dictionary to add destinations to.
147 * @param page The PDF object representing the page for this device. 154 * @param page The PDF object representing the page for this device.
148 */ 155 */
149 void appendDestinations(SkPDFDict* dict, SkPDFObject* page) const; 156 void appendDestinations(SkPDFDict* dict, SkPDFObject* page) const;
150 157
151 /** Returns a copy of the media box for this device. The caller is required 158 /** Returns a copy of the media box for this device. The caller is required
152 * to unref() this when it is finished. 159 * to unref() this when it is finished.
153 */ 160 */
154 SkPDFArray* copyMediaBox() const; 161 SkPDFArray* copyMediaBox() const;
155 162
156 /** Get the annotations from this page, or NULL if there are none.
157 */
158 SkPDFArray* getAnnotations() const { return fAnnotations; }
159
160 /** Returns a SkStream with the page contents. The caller is responsible 163 /** Returns a SkStream with the page contents. The caller is responsible
161 * for a deleting the returned value. 164 * for a deleting the returned value.
162 */ 165 */
163 SkStreamAsset* content() const; 166 SkStreamAsset* content() const;
164 167
165 /** Writes the page contents to the stream. */ 168 /** Writes the page contents to the stream. */
166 void writeContent(SkWStream*) const; 169 void writeContent(SkWStream*) const;
167 170
168 const SkMatrix& initialTransform() const { 171 const SkMatrix& initialTransform() const {
169 return fInitialTransform; 172 return fInitialTransform;
(...skipping 20 matching lines...) Expand all
190 private: 193 private:
191 // TODO(vandebo): push most of SkPDFDevice's state into a core object in 194 // TODO(vandebo): push most of SkPDFDevice's state into a core object in
192 // order to get the right access levels without using friend. 195 // order to get the right access levels without using friend.
193 friend class ScopedContentEntry; 196 friend class ScopedContentEntry;
194 197
195 SkISize fPageSize; 198 SkISize fPageSize;
196 SkISize fContentSize; 199 SkISize fContentSize;
197 SkMatrix fInitialTransform; 200 SkMatrix fInitialTransform;
198 SkClipStack fExistingClipStack; 201 SkClipStack fExistingClipStack;
199 SkRegion fExistingClipRegion; 202 SkRegion fExistingClipRegion;
200 SkPDFArray* fAnnotations; 203
204 SkTDArray<RectWithData*> fLinkToURLs;
205 SkTDArray<RectWithData*> fLinkToDestinations;
201 SkTDArray<NamedDestination*> fNamedDestinations; 206 SkTDArray<NamedDestination*> fNamedDestinations;
202 207
203 SkTDArray<SkPDFObject*> fGraphicStateResources; 208 SkTDArray<SkPDFObject*> fGraphicStateResources;
204 SkTDArray<SkPDFObject*> fXObjectResources; 209 SkTDArray<SkPDFObject*> fXObjectResources;
205 SkTDArray<SkPDFFont*> fFontResources; 210 SkTDArray<SkPDFFont*> fFontResources;
206 SkTDArray<SkPDFObject*> fShaderResources; 211 SkTDArray<SkPDFObject*> fShaderResources;
207 212
208 SkAutoTDelete<ContentEntry> fContentEntries; 213 SkAutoTDelete<ContentEntry> fContentEntries;
209 ContentEntry* fLastContentEntry; 214 ContentEntry* fLastContentEntry;
210 SkAutoTDelete<ContentEntry> fMarginContentEntries; 215 SkAutoTDelete<ContentEntry> fMarginContentEntries;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 /** Helper method for copyContentToData. It is responsible for copying the 290 /** Helper method for copyContentToData. It is responsible for copying the
286 * list of content entries |entry| to |data|. 291 * list of content entries |entry| to |data|.
287 */ 292 */
288 void copyContentEntriesToData(ContentEntry* entry, SkWStream* data) const; 293 void copyContentEntriesToData(ContentEntry* entry, SkWStream* data) const;
289 294
290 bool handleInversePath(const SkDraw& d, const SkPath& origPath, 295 bool handleInversePath(const SkDraw& d, const SkPath& origPath,
291 const SkPaint& paint, bool pathIsMutable, 296 const SkPaint& paint, bool pathIsMutable,
292 const SkMatrix* prePathMatrix = NULL); 297 const SkMatrix* prePathMatrix = NULL);
293 bool handlePointAnnotation(const SkPoint* points, size_t count, 298 bool handlePointAnnotation(const SkPoint* points, size_t count,
294 const SkMatrix& matrix, SkAnnotation* annot); 299 const SkMatrix& matrix, SkAnnotation* annot);
295 void addAnnotation(SkPDFDict*); 300 bool handlePathAnnotation(const SkPath& path, const SkDraw& d,
301 SkAnnotation* annot);
296 302
297 typedef SkBaseDevice INHERITED; 303 typedef SkBaseDevice INHERITED;
298 304
299 // TODO(edisonn): Only SkDocument_PDF and SkPDFImageShader should be able to create 305 // TODO(edisonn): Only SkDocument_PDF and SkPDFImageShader should be able to create
300 // an SkPDFDevice 306 // an SkPDFDevice
301 //friend class SkDocument_PDF; 307 //friend class SkDocument_PDF;
302 //friend class SkPDFImageShader; 308 //friend class SkPDFImageShader;
303 }; 309 };
304 310
305 #endif 311 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698