1/*
2 * Copyright 2015 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 SkSVGCanvas_DEFINED
9#define SkSVGCanvas_DEFINED
10
11#include "SkCanvas.h"
12
13class SkWStream;
14class SkXMLWriter;
15
16class SK_API SkSVGCanvas {
17public:
18    /**
19     *  Returns a new canvas that will generate SVG commands from its draw calls, and send
20     *  them to the provided xmlwriter. Ownership of the xmlwriter is not transfered to the canvas,
21     *  but it must stay valid during the lifetime of the returned canvas.
22     *
23     *  The canvas may buffer some drawing calls, so the output is not guaranteed to be valid
24     *  or complete until the canvas instance is deleted.
25     *
26     *  The 'bounds' parameter defines an initial SVG viewport (viewBox attribute on the root
27     *  SVG element).
28     */
29    static std::unique_ptr<SkCanvas> Make(const SkRect& bounds, SkWStream*);
30
31    // Internal only.
32    static std::unique_ptr<SkCanvas> Make(const SkRect& bounds, SkXMLWriter*);
33};
34
35#endif
36