Home | History | Annotate | Download | only in pdf
      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 "SkPDFTypes.h"
     12 #include "SkTDArray.h"
     13 #include "SkTypes.h"
     14 
     15 /** \class SkPDFResourceDict
     16 
     17     A resource dictionary, which maintains the relevant sub-dicts and
     18     allows generation of a list of referenced SkPDFObjects inserted with
     19     insertResourceAsRef.
     20 */
     21 class SkPDFResourceDict {
     22 public:
     23     enum SkPDFResourceType {
     24         kExtGState_ResourceType,
     25         kPattern_ResourceType,
     26         kXObject_ResourceType,
     27         kFont_ResourceType,
     28         // These additional types are defined by the spec, but not
     29         // currently used by Skia: ColorSpace, Shading, Properties
     30         kResourceTypeCount
     31     };
     32 
     33     /** Create a PDF resource dictionary.
     34      *  The full set of ProcSet entries is automatically created for backwards
     35      *  compatibility, as recommended by the PDF spec.
     36      *
     37      *  Any arguments can be nullptr.
     38      */
     39     static SkPDFDict* Create(
     40         const SkTDArray<SkPDFObject*>* gStateResources,
     41         const SkTDArray<SkPDFObject*>* patternResources,
     42         const SkTDArray<SkPDFObject*>* xObjectResources,
     43         const SkTDArray<SkPDFObject*>* fontResources);
     44 
     45     /**
     46      * Returns the name for the resource that will be generated by the resource
     47      * dict.
     48      *
     49      *  @param type  The type of resource being entered, like
     50      *    kPattern_ResourceType or kExtGState_ResourceType.
     51      *  @param key   The resource key, should be unique within its type.
     52      */
     53     static SkString getResourceName(SkPDFResourceType type, int key);
     54 };
     55 
     56 #endif
     57