blob: cccfc1f77763aeccaa71bf44288fe8e5dd6e397d [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:
Hal Canary5e221e72017-02-06 09:51:42 -050023 SkXPSDocument(SkWStream*, SkScalar dpi, SkTScopedComPtr<IXpsOMObjectFactory>);
Hal Canaryabc88d22017-02-06 09:26:49 -050024 virtual ~SkXPSDocument();
25
26protected:
Hal Canaryb1de5f92017-07-01 22:17:15 -040027 SkCanvas* onBeginPage(SkScalar w, SkScalar h) override;
Hal Canaryabc88d22017-02-06 09:26:49 -050028 void onEndPage() override;
29 void onClose(SkWStream*) override;
30 void onAbort() override;
31
32private:
33 SkTScopedComPtr<IXpsOMObjectFactory> fXpsFactory;
34 SkXPSDevice fDevice;
35 std::unique_ptr<SkCanvas> fCanvas;
36 SkVector fUnitsPerMeter;
37 SkVector fPixelsPerMeter;
38};
39
40#endif // SK_BUILD_FOR_WIN
41#endif // SkXPSDocument_DEFINED