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

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

Powered by Google App Engine
This is Rietveld 408576698