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

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

Issue 2112943002: SkPDF: Glyph Useage Map improvements (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 5 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 | « no previous file | 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 12 matching lines...) Expand all
23 23
24 class SkImageBitmap; 24 class SkImageBitmap;
25 class SkPath; 25 class SkPath;
26 class SkPDFArray; 26 class SkPDFArray;
27 class SkPDFCanon; 27 class SkPDFCanon;
28 class SkPDFDevice; 28 class SkPDFDevice;
29 class SkPDFDocument; 29 class SkPDFDocument;
30 class SkPDFDict; 30 class SkPDFDict;
31 class SkPDFFont; 31 class SkPDFFont;
32 class SkPDFFormXObject; 32 class SkPDFFormXObject;
33 class SkPDFGlyphSetMap;
34 class SkPDFObject; 33 class SkPDFObject;
35 class SkRRect; 34 class SkRRect;
36 35
37 /** \class SkPDFDevice 36 /** \class SkPDFDevice
38 37
39 The drawing context for the PDF backend. 38 The drawing context for the PDF backend.
40 */ 39 */
41 class SkPDFDevice final : public SkBaseDevice { 40 class SkPDFDevice final : public SkBaseDevice {
42 public: 41 public:
43 /** Create a PDF drawing context. SkPDFDevice applies a 42 /** Create a PDF drawing context. SkPDFDevice applies a
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 */ 151 */
153 std::unique_ptr<SkStreamAsset> content() const; 152 std::unique_ptr<SkStreamAsset> content() const;
154 153
155 /** Writes the page contents to the stream. */ 154 /** Writes the page contents to the stream. */
156 void writeContent(SkWStream*) const; 155 void writeContent(SkWStream*) const;
157 156
158 const SkMatrix& initialTransform() const { 157 const SkMatrix& initialTransform() const {
159 return fInitialTransform; 158 return fInitialTransform;
160 } 159 }
161 160
162 /** Returns a SkPDFGlyphSetMap which represents glyph usage of every font
163 * that shows on this device.
164 */
165 const SkPDFGlyphSetMap& getFontGlyphUsage() const {
166 return *(fFontGlyphUsage.get());
167 }
168
169 SkPDFCanon* getCanon() const; 161 SkPDFCanon* getCanon() const;
170 162
171 // It is important to not confuse GraphicStateEntry with SkPDFGraphicState, the 163 // It is important to not confuse GraphicStateEntry with SkPDFGraphicState, the
172 // later being our representation of an object in the PDF file. 164 // later being our representation of an object in the PDF file.
173 struct GraphicStateEntry { 165 struct GraphicStateEntry {
174 GraphicStateEntry(); 166 GraphicStateEntry();
175 167
176 // Compare the fields we care about when setting up a new content entry. 168 // Compare the fields we care about when setting up a new content entry.
177 bool compareInitialState(const GraphicStateEntry& b); 169 bool compareInitialState(const GraphicStateEntry& b);
178 170
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 SkTDArray<SkPDFObject*> fShaderResources; 250 SkTDArray<SkPDFObject*> fShaderResources;
259 251
260 struct ContentEntry { 252 struct ContentEntry {
261 GraphicStateEntry fState; 253 GraphicStateEntry fState;
262 SkDynamicMemoryWStream fContent; 254 SkDynamicMemoryWStream fContent;
263 }; 255 };
264 SkSinglyLinkedList<ContentEntry> fContentEntries; 256 SkSinglyLinkedList<ContentEntry> fContentEntries;
265 257
266 const SkClipStack* fClipStack; 258 const SkClipStack* fClipStack;
267 259
268 // Glyph ids used for each font on this device.
269 std::unique_ptr<SkPDFGlyphSetMap> fFontGlyphUsage;
270
271 SkScalar fRasterDpi; 260 SkScalar fRasterDpi;
272 261
273 SkBitmap fLegacyBitmap; 262 SkBitmap fLegacyBitmap;
274 263
275 SkPDFDocument* fDocument; 264 SkPDFDocument* fDocument;
276 //////////////////////////////////////////////////////////////////////////// 265 ////////////////////////////////////////////////////////////////////////////
277 266
278 SkPDFDevice(SkISize pageSize, 267 SkPDFDevice(SkISize pageSize,
279 SkScalar rasterDpi, 268 SkScalar rasterDpi,
280 SkPDFDocument* doc, 269 SkPDFDocument* doc,
281 bool flip); 270 bool flip);
282 271
283 SkBaseDevice* onCreateDevice(const CreateInfo&, const SkPaint*) override; 272 SkBaseDevice* onCreateDevice(const CreateInfo&, const SkPaint*) override;
284 273
285 void init(); 274 void init();
286 void cleanUp(bool clearFontUsage); 275 void cleanUp();
287 SkPDFFormXObject* createFormXObjectFromDevice(); 276 SkPDFFormXObject* createFormXObjectFromDevice();
288 277
289 void drawFormXObjectWithMask(int xObjectIndex, 278 void drawFormXObjectWithMask(int xObjectIndex,
290 SkPDFFormXObject* mask, 279 SkPDFFormXObject* mask,
291 const SkClipStack* clipStack, 280 const SkClipStack* clipStack,
292 const SkRegion& clipRegion, 281 const SkRegion& clipRegion,
293 SkXfermode::Mode mode, 282 SkXfermode::Mode mode,
294 bool invertClip); 283 bool invertClip);
295 284
296 // If the paint or clip is such that we shouldn't draw anything, this 285 // If the paint or clip is such that we shouldn't draw anything, this
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 325
337 typedef SkBaseDevice INHERITED; 326 typedef SkBaseDevice INHERITED;
338 327
339 // TODO(edisonn): Only SkDocument_PDF and SkPDFImageShader should be able to create 328 // TODO(edisonn): Only SkDocument_PDF and SkPDFImageShader should be able to create
340 // an SkPDFDevice 329 // an SkPDFDevice
341 //friend class SkDocument_PDF; 330 //friend class SkDocument_PDF;
342 //friend class SkPDFImageShader; 331 //friend class SkPDFImageShader;
343 }; 332 };
344 333
345 #endif 334 #endif
OLDNEW
« no previous file with comments | « no previous file | src/pdf/SkPDFDevice.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698