/*
 * Copyright 2017 Google LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkXPSDocument_DEFINED
#define SkXPSDocument_DEFINED

#include "include/core/SkTypes.h"

#ifdef SK_BUILD_FOR_WIN

#include "include/core/SkDocument.h"

struct IXpsOMObjectFactory;
class SKWStream;
class SkPixmap;

namespace SkXPS {

using EncodePngCallback = bool (*)(SkWStream* dst, const SkPixmap& src);

struct Options {
    float dpi = SK_ScalarDefaultRasterDPI;

    /** Clients can provide a way to encode png. */
    EncodePngCallback pngEncoder = nullptr;

    /** Skia's XPS support depends on having a png encoder registered to handle
     *  XPS image brushes. Clients that create XPS documents without images may
     *  set `allowNoPngs` to true to acknowledge this.
     */
    bool allowNoPngs = false;
};

SK_API sk_sp<SkDocument> MakeDocument(SkWStream* stream,
                                      IXpsOMObjectFactory* xpsFactory,
                                      Options opts);
}  // namespace SkXPS
#endif  // SK_BUILD_FOR_WIN
#endif  // SkXPSDocument_DEFINED
