| Index: src/pdf/SkPDFResourceDict.h
|
| diff --git a/src/pdf/SkPDFResourceDict.h b/src/pdf/SkPDFResourceDict.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ab25b4a4dca662eab8f4ca33b7d2bdab353903b1
|
| --- /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* insertResourceAsReference(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 getReferencedResources(
|
| + 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
|
|
|