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 "include/core/SkTypes.h" 12 13 #include <cstdint> 14 #include <memory> 15 16 class SkCanvas; 17 class SkWStream; 18 struct SkRect; 19 20 class SK_API SkSVGCanvas { 21 public: 22 enum { 23 kConvertTextToPaths_Flag = 0x01, // emit text as <path>s 24 kNoPrettyXML_Flag = 0x02, // suppress newlines and tabs in output 25 kRelativePathEncoding_Flag = 0x04, // use relative commands for path encoding 26 }; 27 28 /** 29 * Returns a new canvas that will generate SVG commands from its draw calls, and send 30 * them to the provided stream. Ownership of the stream is not transfered, and it must 31 * remain valid for the lifetime of the returned canvas. 32 * 33 * The canvas may buffer some drawing calls, so the output is not guaranteed to be valid 34 * or complete until the canvas instance is deleted. 35 * 36 * The 'bounds' parameter defines an initial SVG viewport (viewBox attribute on the root 37 * SVG element). 38 */ 39 static std::unique_ptr<SkCanvas> Make(const SkRect& bounds, SkWStream*, uint32_t flags = 0); 40 }; 41 42 #endif 43