/*
 * 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 "src/pdf/SkPDFFont.h"

#include <vector>

class SkPDFDict;
class SkPDFObject;
class SkWStream;

enum class SkPDFResourceType {
    kExtGState = 0,
    kPattern = 1,
    kXObject = 2,
    kFont = 3,
    // These additional types are defined by the spec, but not
    // currently used by Skia: ColorSpace, Shading, Properties
};


/** Create a PDF resource dictionary.
 *  The full set of ProcSet entries is automatically created for backwards
 *  compatibility, as recommended by the PDF spec.
 *
 *  Any arguments can be nullptr.
 */
std::unique_ptr<SkPDFDict> SkPDFMakeResourceDict(
        const std::vector<SkPDFIndirectReference>& graphicStateResources,
        const std::vector<SkPDFIndirectReference>& shaderResources,
        const std::vector<SkPDFIndirectReference>& xObjectResources,
        const std::vector<SkPDFIndirectReference>& fontResources);

/**
 * Writes the name for the resource that will be generated by the resource
 * dict.
 *
 *  @param type  The type of resource being entered
 *  @param key   The resource key, should be unique within its type.
 */
void SkPDFWriteResourceName(SkWStream*, SkPDFResourceType type, int key);

#endif
