1 | /* |
2 | * Copyright 2013 Google Inc. |
3 | * |
4 | * Use of this source code is governed by a BSD-style license that can be |
5 | * found in the LICENSE file. |
6 | */ |
7 | |
8 | #ifndef SkPDFResourceDict_DEFINED |
9 | #define SkPDFResourceDict_DEFINED |
10 | |
11 | #include "src/pdf/SkPDFFont.h" |
12 | |
13 | #include <vector> |
14 | |
15 | class SkPDFDict; |
16 | class SkPDFObject; |
17 | class SkWStream; |
18 | |
19 | enum class SkPDFResourceType { |
20 | kExtGState = 0, |
21 | kPattern = 1, |
22 | kXObject = 2, |
23 | kFont = 3, |
24 | // These additional types are defined by the spec, but not |
25 | // currently used by Skia: ColorSpace, Shading, Properties |
26 | }; |
27 | |
28 | |
29 | /** Create a PDF resource dictionary. |
30 | * The full set of ProcSet entries is automatically created for backwards |
31 | * compatibility, as recommended by the PDF spec. |
32 | * |
33 | * Any arguments can be nullptr. |
34 | */ |
35 | std::unique_ptr<SkPDFDict> SkPDFMakeResourceDict( |
36 | const std::vector<SkPDFIndirectReference>& graphicStateResources, |
37 | const std::vector<SkPDFIndirectReference>& shaderResources, |
38 | const std::vector<SkPDFIndirectReference>& xObjectResources, |
39 | const std::vector<SkPDFIndirectReference>& fontResources); |
40 | |
41 | /** |
42 | * Writes the name for the resource that will be generated by the resource |
43 | * dict. |
44 | * |
45 | * @param type The type of resource being entered |
46 | * @param key The resource key, should be unique within its type. |
47 | */ |
48 | void SkPDFWriteResourceName(SkWStream*, SkPDFResourceType type, int key); |
49 | |
50 | #endif |
51 | |