blob: 86e89752306cbd013d9ca3c2068a543e8e6656f6 [file] [log] [blame]
fmalita2aafe6f2015-02-06 12:51:10 -08001/*
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
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "include/core/SkCanvas.h"
fmalita2aafe6f2015-02-06 12:51:10 -080012
Florin Malita99822ac2017-09-19 16:12:25 -040013class SkWStream;
fmalita2aafe6f2015-02-06 12:51:10 -080014
15class SK_API SkSVGCanvas {
16public:
Florin Malitaabc96532019-07-19 09:11:29 -040017 enum {
Florin Malita49d140d2019-08-21 15:40:46 -040018 kConvertTextToPaths_Flag = 0x01, // emit text as <path>s
19 kNoPrettyXML_Flag = 0x02, // suppress newlines and tabs in output
Florin Malitaabc96532019-07-19 09:11:29 -040020 };
21
fmalita2aafe6f2015-02-06 12:51:10 -080022 /**
23 * Returns a new canvas that will generate SVG commands from its draw calls, and send
Florin Malita562017b2019-02-14 13:42:15 -050024 * them to the provided stream. Ownership of the stream is not transfered, and it must
25 * remain valid for the lifetime of the returned canvas.
fmalita2aafe6f2015-02-06 12:51:10 -080026 *
27 * The canvas may buffer some drawing calls, so the output is not guaranteed to be valid
28 * or complete until the canvas instance is deleted.
29 *
30 * The 'bounds' parameter defines an initial SVG viewport (viewBox attribute on the root
31 * SVG element).
32 */
Florin Malitaabc96532019-07-19 09:11:29 -040033 static std::unique_ptr<SkCanvas> Make(const SkRect& bounds, SkWStream*, uint32_t flags = 0);
fmalita2aafe6f2015-02-06 12:51:10 -080034};
35
36#endif