2015-02-06 20:51:10 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2015 Google Inc.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
|
|
* found in the LICENSE file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SkSVGCanvas_DEFINED
|
|
|
|
#define SkSVGCanvas_DEFINED
|
|
|
|
|
2022-03-15 18:18:53 +00:00
|
|
|
#include "include/core/SkTypes.h"
|
2015-02-06 20:51:10 +00:00
|
|
|
|
2022-03-15 18:18:53 +00:00
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
class SkCanvas;
|
2017-09-19 20:12:25 +00:00
|
|
|
class SkWStream;
|
2022-03-15 18:18:53 +00:00
|
|
|
struct SkRect;
|
2015-02-06 20:51:10 +00:00
|
|
|
|
|
|
|
class SK_API SkSVGCanvas {
|
|
|
|
public:
|
2019-07-19 13:11:29 +00:00
|
|
|
enum {
|
2021-05-11 16:09:20 +00:00
|
|
|
kConvertTextToPaths_Flag = 0x01, // emit text as <path>s
|
|
|
|
kNoPrettyXML_Flag = 0x02, // suppress newlines and tabs in output
|
|
|
|
kRelativePathEncoding_Flag = 0x04, // use relative commands for path encoding
|
2019-07-19 13:11:29 +00:00
|
|
|
};
|
|
|
|
|
2015-02-06 20:51:10 +00:00
|
|
|
/**
|
|
|
|
* Returns a new canvas that will generate SVG commands from its draw calls, and send
|
2019-02-14 18:42:15 +00:00
|
|
|
* them to the provided stream. Ownership of the stream is not transfered, and it must
|
|
|
|
* remain valid for the lifetime of the returned canvas.
|
2015-02-06 20:51:10 +00:00
|
|
|
*
|
|
|
|
* The canvas may buffer some drawing calls, so the output is not guaranteed to be valid
|
|
|
|
* or complete until the canvas instance is deleted.
|
|
|
|
*
|
|
|
|
* The 'bounds' parameter defines an initial SVG viewport (viewBox attribute on the root
|
|
|
|
* SVG element).
|
|
|
|
*/
|
2019-07-19 13:11:29 +00:00
|
|
|
static std::unique_ptr<SkCanvas> Make(const SkRect& bounds, SkWStream*, uint32_t flags = 0);
|
2015-02-06 20:51:10 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|