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