blob: fbaf57b36f486335b75a0c97964d30278badbf8c [file] [log] [blame]
Hal Canaryabc88d22017-02-06 09:26:49 -05001/*
2 * Copyright 2017 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 SkXPSDocument_DEFINED
9#define SkXPSDocument_DEFINED
10
11#include "SkTypes.h"
12
13#ifdef SK_BUILD_FOR_WIN
14
15#include "SkDocument.h"
16#include "SkXPSDevice.h"
17#include "SkTScopedComPtr.h"
18
19#include <XpsObjectModel.h>
20
21class SkXPSDocument final : public SkDocument {
22public:
23 SkXPSDocument(SkWStream*, void (*doneProc)(SkWStream*, bool abort),
24 SkScalar dpi, SkTScopedComPtr<IXpsOMObjectFactory>);
25 virtual ~SkXPSDocument();
26
27protected:
28 SkCanvas* onBeginPage(SkScalar w, SkScalar h, const SkRect&) override;
29 void onEndPage() override;
30 void onClose(SkWStream*) override;
31 void onAbort() override;
32
33private:
34 SkTScopedComPtr<IXpsOMObjectFactory> fXpsFactory;
35 SkXPSDevice fDevice;
36 std::unique_ptr<SkCanvas> fCanvas;
37 SkVector fUnitsPerMeter;
38 SkVector fPixelsPerMeter;
39};
40
41#endif // SK_BUILD_FOR_WIN
42#endif // SkXPSDocument_DEFINED