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 "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