OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 SkDocument_DEFINED | 8 #ifndef SkDocument_DEFINED |
9 #define SkDocument_DEFINED | 9 #define SkDocument_DEFINED |
10 | 10 |
(...skipping 17 matching lines...) Expand all Loading... | |
28 * | 28 * |
29 * 1. Create a document, specifying a stream to store the output. | 29 * 1. Create a document, specifying a stream to store the output. |
30 * 2. For each "page" of content: | 30 * 2. For each "page" of content: |
31 * a. canvas = doc->beginPage(...) | 31 * a. canvas = doc->beginPage(...) |
32 * b. draw_my_content(canvas); | 32 * b. draw_my_content(canvas); |
33 * c. doc->endPage(); | 33 * c. doc->endPage(); |
34 * 3. Close the document with doc->close(). | 34 * 3. Close the document with doc->close(). |
35 */ | 35 */ |
36 class SK_API SkDocument : public SkRefCnt { | 36 class SK_API SkDocument : public SkRefCnt { |
37 public: | 37 public: |
38 struct OptionalTimestamp { | |
39 bool enabled; | |
40 SkTime::DateTime dateTime; | |
41 OptionalTimestamp() : enabled(false) {} | |
42 }; | |
43 | |
38 /** | 44 /** |
45 * Optional metadata to be passed into the PDF factory function. | |
46 */ | |
47 struct PDFMetadata { | |
48 SkString title; | |
reed1
2016/04/25 19:14:30
why not use skia fField convention?
hal.canary
2016/04/25 21:51:33
Done.
| |
49 SkString author; | |
50 SkString subject; | |
51 SkString keywords; | |
52 SkString creator; | |
53 OptionalTimestamp creation; | |
54 OptionalTimestamp modified; | |
55 }; | |
56 | |
57 /** | |
58 * Create a PDF-backed document, writing the results into a | |
59 * SkWStream. | |
60 * | |
61 * PDF pages are sized in point units. 1 pt == 1/72 inch == | |
62 * 127/360 mm. | |
63 * | |
64 * @param stream A PDF document will be written to this | |
65 * stream. The document may write to the stream at | |
66 * anytime during its lifetime, until either close() is | |
67 * called or the document is deleted. | |
68 * @param dpi The DPI (pixels-per-inch) at which features without | |
69 * native PDF support will be rasterized (e.g. draw image | |
70 * with perspective, draw text with perspective, ...) A | |
71 * larger DPI would create a PDF that reflects the | |
72 * original intent with better fidelity, but it can make | |
73 * for larger PDF files too, which would use more memory | |
74 * while rendering, and it would be slower to be processed | |
75 * or sent online or to printer. | |
76 * @param metadata a PDFmetadata object. Any fields may be left | |
77 * empty. | |
78 * @param jpegEncoder For PDF documents, if a jpegEncoder is set, | |
79 * use it to encode SkImages and SkBitmaps as [JFIF]JPEGs. | |
80 * This feature is deprecated and is only supplied for | |
81 * backwards compatability. | |
82 * The prefered method to create PDFs with JPEG images is | |
83 * to use SkImage::NewFromEncoded() and not jpegEncoder. | |
84 * Chromium uses NewFromEncoded. | |
85 * If the encoder is unset, or if jpegEncoder->onEncode() | |
86 * returns NULL, fall back on encoding images losslessly | |
87 * with Deflate. | |
88 * @param pdfa Iff true, include XMP metadata, a document UUID, | |
89 * and sRGB output intent information. This adds length | |
90 * to the document and makes it non-reproducable, but are | |
91 * necessary features for PDF/A-2b conformance | |
92 * | |
93 * @returns NULL if there is an error, otherwise a newly created | |
94 * PDF-backed SkDocument. | |
95 */ | |
96 static sk_sp<SkDocument> MakePDF( | |
97 SkWStream* stream, | |
98 SkScalar dpi, | |
99 const SkDocument::PDFMetadata& metadata, | |
100 SkPixelSerializer* jpegEncoder, | |
101 bool pdfa); | |
102 | |
103 /** | |
104 * DEPRECATED: use SkDocument::MakePDF instead. | |
105 * | |
39 * Create a PDF-backed document, writing the results into a SkWStream. | 106 * Create a PDF-backed document, writing the results into a SkWStream. |
40 * | 107 * |
41 * PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. | 108 * PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. |
42 * | 109 * |
43 * @param SkWStream* A PDF document will be written to this | 110 * @param SkWStream* A PDF document will be written to this |
44 * stream. The document may write to the stream at | 111 * stream. The document may write to the stream at |
45 * anytime during its lifetime, until either close() is | 112 * anytime during its lifetime, until either close() is |
46 * called or the document is deleted. | 113 * called or the document is deleted. |
47 * @param dpi The DPI (pixels-per-inch) at which features without | 114 * @param dpi The DPI (pixels-per-inch) at which features without |
48 * native PDF support will be rasterized (e.g. draw image | 115 * native PDF support will be rasterized (e.g. draw image |
49 * with perspective, draw text with perspective, ...) A | 116 * with perspective, draw text with perspective, ...) A |
50 * larger DPI would create a PDF that reflects the | 117 * larger DPI would create a PDF that reflects the |
51 * original intent with better fidelity, but it can make | 118 * original intent with better fidelity, but it can make |
52 * for larger PDF files too, which would use more memory | 119 * for larger PDF files too, which would use more memory |
53 * while rendering, and it would be slower to be processed | 120 * while rendering, and it would be slower to be processed |
54 * or sent online or to printer. | 121 * or sent online or to printer. |
55 * @returns NULL if there is an error, otherwise a newly created | 122 * @returns NULL if there is an error, otherwise a newly created |
56 * PDF-backed SkDocument. | 123 * PDF-backed SkDocument. |
57 */ | 124 */ |
58 static SkDocument* CreatePDF(SkWStream*, | 125 static SkDocument* CreatePDF(SkWStream*, |
reed1
2016/04/25 19:14:30
We've been adding build flags to guard/hide the ol
hal.canary
2016/04/25 21:51:33
Done.
| |
59 SkScalar dpi = SK_ScalarDefaultRasterDPI); | 126 SkScalar dpi = SK_ScalarDefaultRasterDPI); |
60 | 127 |
61 /** | 128 /** |
129 * DEPRECATED: use SkDocument::MakePDF instead. | |
130 * | |
62 * @param jpegEncoder For PDF documents, if a jpegEncoder is set, | 131 * @param jpegEncoder For PDF documents, if a jpegEncoder is set, |
63 * use it to encode SkImages and SkBitmaps as [JFIF]JPEGs. | 132 * use it to encode SkImages and SkBitmaps as [JFIF]JPEGs. |
64 * This feature is deprecated and is only supplied for | 133 * This feature is deprecated and is only supplied for |
65 * backwards compatability. | 134 * backwards compatability. |
66 * | 135 * |
67 * The prefered method to create PDFs with JPEG images is | 136 * The prefered method to create PDFs with JPEG images is |
68 * to use SkImage::NewFromEncoded() and not jpegEncoder. | 137 * to use SkImage::NewFromEncoded() and not jpegEncoder. |
69 * Chromium uses NewFromEncoded. | 138 * Chromium uses NewFromEncoded. |
70 * | 139 * |
71 * If the encoder is unset, or if jpegEncoder->onEncode() | 140 * If the encoder is unset, or if jpegEncoder->onEncode() |
72 * returns NULL, fall back on encoding images losslessly | 141 * returns NULL, fall back on encoding images losslessly |
73 * with Deflate. | 142 * with Deflate. |
74 */ | 143 */ |
75 static SkDocument* CreatePDF(SkWStream*, | 144 static SkDocument* CreatePDF(SkWStream*, |
76 SkScalar dpi, | 145 SkScalar dpi, |
77 SkPixelSerializer* jpegEncoder); | 146 SkPixelSerializer* jpegEncoder); |
78 | 147 |
79 /** | 148 /** |
149 * DEPRECATED: use SkDocument::MakePDF instead. | |
150 * | |
80 * Create a PDF-backed document, writing the results into a file. | 151 * Create a PDF-backed document, writing the results into a file. |
81 */ | 152 */ |
82 static SkDocument* CreatePDF(const char outputFilePath[], | 153 static SkDocument* CreatePDF(const char outputFilePath[], |
83 SkScalar dpi = SK_ScalarDefaultRasterDPI); | 154 SkScalar dpi = SK_ScalarDefaultRasterDPI); |
84 | 155 |
85 /** | 156 /** |
86 * Create a XPS-backed document, writing the results into the stream. | 157 * Create a XPS-backed document, writing the results into the stream. |
87 * Returns NULL if XPS is not supported. | 158 * Returns NULL if XPS is not supported. |
88 */ | 159 */ |
89 static SkDocument* CreateXPS(SkWStream* stream, | 160 static SkDocument* CreateXPS(SkWStream* stream, |
(...skipping 29 matching lines...) Expand all Loading... | |
119 */ | 190 */ |
120 bool close(); | 191 bool close(); |
121 | 192 |
122 /** | 193 /** |
123 * Call abort() to stop producing the document immediately. | 194 * Call abort() to stop producing the document immediately. |
124 * The stream output must be ignored, and should not be trusted. | 195 * The stream output must be ignored, and should not be trusted. |
125 */ | 196 */ |
126 void abort(); | 197 void abort(); |
127 | 198 |
128 /** | 199 /** |
200 * DEPRECATED: use SkDocument::PDFMetadata and | |
201 * SkDocument::MakePDF instead. | |
202 * | |
129 * Set the document's metadata, if supported by the document | 203 * Set the document's metadata, if supported by the document |
130 * type. The creationDate and modifiedDate parameters can be | 204 * type. The creationDate and modifiedDate parameters can be |
131 * nullptr. For example: | 205 * nullptr. For example: |
132 * | 206 * |
133 * SkDocument* make_doc(SkWStream* output) { | 207 * SkDocument* make_doc(SkWStream* output) { |
134 * std::vector<SkDocument::Attribute> info; | 208 * std::vector<SkDocument::Attribute> info; |
135 * info.emplace_back(SkString("Title"), SkString("...")); | 209 * info.emplace_back(SkString("Title"), SkString("...")); |
136 * info.emplace_back(SkString("Author"), SkString("...")); | 210 * info.emplace_back(SkString("Author"), SkString("...")); |
137 * info.emplace_back(SkString("Subject"), SkString("...")); | 211 * info.emplace_back(SkString("Subject"), SkString("...")); |
138 * info.emplace_back(SkString("Keywords"), SkString("...")); | 212 * info.emplace_back(SkString("Keywords"), SkString("...")); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
178 | 252 |
179 private: | 253 private: |
180 SkWStream* fStream; | 254 SkWStream* fStream; |
181 void (*fDoneProc)(SkWStream*, bool aborted); | 255 void (*fDoneProc)(SkWStream*, bool aborted); |
182 State fState; | 256 State fState; |
183 | 257 |
184 typedef SkRefCnt INHERITED; | 258 typedef SkRefCnt INHERITED; |
185 }; | 259 }; |
186 | 260 |
187 #endif | 261 #endif |
OLD | NEW |