Chromium Code Reviews| Index: src/pdf/SkPDFResourceDict.h |
| diff --git a/src/pdf/SkPDFResourceDict.h b/src/pdf/SkPDFResourceDict.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ffdbc739e8fc22d4afd98f61ca78fb7f23ec58a0 |
| --- /dev/null |
| +++ b/src/pdf/SkPDFResourceDict.h |
| @@ -0,0 +1,100 @@ |
| +/* |
| + * Copyright 2013 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef SkPDFResourceDict_DEFINED |
| +#define SkPDFResourceDict_DEFINED |
| + |
| +#include "SkPDFTypes.h" |
| +#include "SkTDArray.h" |
| +#include "SkTSet.h" |
| +#include "SkTypes.h" |
| + |
| +/** \class SkPDFResourceDict |
| + |
| + A resource dictionary, which maintains the relevant sub-dicts and |
| + allows generation of a list of referenced SkPDFObjects inserted with |
| + insertResourceAsRef. |
| +*/ |
| +class SkPDFResourceDict : public SkPDFDict { |
| +public: |
| + SK_DECLARE_INST_COUNT(SkPDFResourceDict) |
| + |
| + enum SkPDFResourceType{ |
| + kExtGState_ResourceType, |
| + kPattern_ResourceType, |
| + kXObject_ResourceType, |
| + kFont_ResourceType, |
| + // These additional types are defined by the spec, but not |
| + // currently used by Skia: ColorSpace, Shading, Properties |
| + kResourceTypeCount |
| + }; |
| + |
| + /** Create a PDF resource dictionary. |
| + * The full set of ProcSet entries is automatically created for backwards |
| + * compatibility, as recommended by the PDF spec. |
| + */ |
| + SkPDFResourceDict(); |
| + |
| + /** Add the value SkPDFObject as a reference to the resource dictionary |
| + * with the give type and key. |
| + * The relevant sub-dicts will be automatically generated, and the |
| + * resource will be named by concatenating a type-specific prefix and |
| + * the input key. |
| + * This object will be part of the resource list when requested later. |
| + * @param type The type of resource being entered, like |
| + * kPattern_ResourceType or kExtGState_ResourceType. |
| + * @param key The resource key, should be unique within its type. |
| + * @param value The resource itself. |
| + * @return The value argument is returned. |
| + */ |
| + SkPDFObject* insertResourceAsRef(SkPDFResourceType type, int key, |
| + SkPDFObject* value); |
| + |
| + /** |
| + * Gets resources inserted into this dictionary as a reference. |
| + * |
| + * @param knownResourceObjects Set containing currently known resources. |
| + * Resources in the dict and this set will not be added to the output. |
| + * @param newResourceObjects Output set to which non-preexisting resources |
| + * will be added. |
| + * @param recursive Whether or not to add resources of resources. |
| + */ |
| + void getRefResources( |
|
vandebo (ex-Chrome)
2013/07/23 19:49:29
nit: I can't think of a good name for this functio
ducky
2013/07/23 20:31:27
Done.
|
| + const SkTSet<SkPDFObject*>& knownResourceObjects, |
| + SkTSet<SkPDFObject*>* newResourceObjects, |
| + bool recursive) const; |
| + |
| + /** |
| + * Returns the name for the resource that will be generated by the resource |
| + * dict. |
| + * |
| + * @param type The type of resource being entered, like |
| + * kPattern_ResourceType or kExtGState_ResourceType. |
| + * @param key The resource key, should be unique within its type. |
| + */ |
| + static SkString getResourceName(SkPDFResourceType type, int key); |
| + |
| +private: |
| + /** Add the value to the dictionary with the given key. Refs value. |
| + * The relevant sub-dicts will be automatically generated, and the |
| + * resource will be named by concatenating a type-specific prefix and |
| + * the input key. |
| + * The object will NOT be part of the resource list when requested later. |
| + * @param type The type of resource being entered. |
| + * @param key The resource key, should be unique within its type. |
| + * @param value The resource itself. |
| + * @return The value argument is returned. |
| + */ |
| + SkPDFObject* insertResource(SkPDFResourceType type, int key, |
| + SkPDFObject* value); |
| + |
| + SkTSet<SkPDFObject*> fResources; |
| + |
| + SkTDArray<SkPDFDict*> fTypes; |
| +}; |
| + |
| +#endif |