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

Side by Side Diff: site/user/sample/pdf.md

Issue 2377473002: SkPDF/Documentation: backend limitations (Closed)
Patch Set: clean up text Created 4 years, 2 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 Using Skia's PDF Backend 1 Using Skia's PDF Backend
2 ======================== 2 ========================
3 3
4 Here is an example of using Skia's PDF backend in the recommended way: 4 Here is an example of using Skia's PDF backend (SkPDF) via the
5 via the SkDocument and SkCanvas APIs. 5 SkDocument and SkCanvas APIs.
6 6
7 <!--?prettify lang=cc?--> 7 <!--?prettify lang=cc?-->
8 8
9 #include "SkDocument.h" 9 #include "SkDocument.h"
10 10
11 bool WritePDF(SkWStream* outputStream) { 11 bool WritePDF(SkWStream* outputStream) {
12 SkDocument::PDFMetadata metadata; 12 SkDocument::PDFMetadata metadata;
13 metadata.fCreator = "creator...."; 13 metadata.fCreator = "creator....";
14 metadata.fTitle = "title..."; 14 metadata.fTitle = "title...";
15 metadata.fAuthor = "author..."; 15 metadata.fAuthor = "author...";
(...skipping 16 matching lines...) Expand all
32 SkScalar pageHeight = ....; 32 SkScalar pageHeight = ....;
33 SkCanvas* pageCanvas = 33 SkCanvas* pageCanvas =
34 pdfDocument->beginPage(pageWidth, pageHeight); 34 pdfDocument->beginPage(pageWidth, pageHeight);
35 35
36 // ....insert canvas draw commands here.... 36 // ....insert canvas draw commands here....
37 37
38 pdfDocument->endPage(); 38 pdfDocument->endPage();
39 } 39 }
40 return pdfDocument->close(); 40 return pdfDocument->close();
41 } 41 }
42
43 * * *
44
45 <span id="limits">SkPDF Limitations</span>
46 ------------------------------------------
47
48 There are several corners of Skia's public API that SkPDF does not
djsollen 2016/09/29 13:12:39 SkPDF currently does not
hal.canary 2016/09/29 15:31:13 Done.
49 handle because either no one has asked for it or there is no simple
djsollen 2016/09/29 13:12:40 replace "no one has asked for it" with "no known c
hal.canary 2016/09/29 15:31:13 Done.
50 PDF-ish way to handle it.
51
52 **drop** means to draw nothing.
djsollen 2016/09/29 13:12:40 put a heading above these 3 terms indicating they
hal.canary 2016/09/29 15:31:13 Done.
53
54 **ignore** mean to draw without the effect
55
56 **expand** means to implement something in a non-PDF-ish way.
djsollen 2016/09/29 13:12:40 does non-PDF-ish mean rasterized content instead o
hal.canary 2016/09/29 15:31:13 Done. + **expand** means to implement something
57
58 - *SkMaskFilter* — Mask filters are either dropped (drawText calls)
djsollen 2016/09/29 13:12:39 these first 3 bullets (and the last one) say the
hal.canary 2016/09/29 15:31:13 Done.
59 or ignored (other draw calls).
60
61 - *SkPathEffect* — Path effects are either ignored (drawText calls)
62 or expanded (other draw calls).
63
64 - *SkColorFilter* — Color filters are either expanded (drawImage /
65 drawBitmap calls) or ignored (everything else);
66
67 - *SkImageFilter* — ImageFilter is always expanded. (Text-as-text is lost).
68
69 - *SkXferMode* — Transfer modes that are not natively supported by
70 PDF are ignored: DstOver, SrcIn, DstIn, SrcOut, DstOut, SrcATop,
71 DstATop, and Modulate.
72
73 - *SkShader* — Non-gradient shaders are expanded.
74
75 <style scoped><!--
76 #pdftable {border-collapse:collapse;}
77 #pdftable tr th, #pdftable tr td {border:#888888 2px solid;padding: 5px;}
78 --></style>
79 <table id="pdftable">
80 <tr>
81 <th>Effect</th>
82 <th>text</th>
83 <th>images</th>
84 <th>everything else</th>
85 </tr>
86 <tr>
87 <th>SkMaskFilter</th>
88 <td>drop</td>
89 <td>ignore</td>
90 <td>ignore</td>
91 </tr>
92 <tr>
93 <th>SkPathEffect</th>
94 <td>ignore</td>
95 <td>n/a</td>
96 <td>expand</td>
97 </tr>
98 <tr>
99 <th>SkColorFilter</th>
100 <td>ignore</td>
101 <td>expand</td>
102 <td>ignore</td>
103 </tr>
104 <tr>
105 <th>SkImageFilter</th>
106 <td>expand</td>
107 <td>expand</td>
108 <td>expand</td>
109 </tr>
110 <tr>
111 <th>unsupported SkXferModes</th>
112 <td>ignore</td>
113 <td>ignore</td>
114 <td>ignore</td>
115 </tr>
116 <tr>
117 <th>non-gradient SkShader</th>
118 <td>expand</td>
119 <td>n/a</td>
120 <td>expand</td>
121 </tr>
122 </table>
123
124 Other limitations:
125
126 - *VerticalText* — drop. (No clients seem to make use of VerticalText.)
127
128 - *drawTextOnPath* — expand. (Text-as-text is lost.)
129
130 - *drawVertices* — drop.
131
132 - *drawPatch* — drop.
133
134 * * *
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698