Flutter Engine
The Flutter Engine
SkSVGSVG.h
Go to the documentation of this file.
1/*
2 * Copyright 2016 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 SkSVGSVG_DEFINED
9#define SkSVGSVG_DEFINED
10
13#include "src/base/SkTLazy.h"
14
16
18public:
19 enum class Type {
20 kRoot,
21 kInner,
22 };
23 static sk_sp<SkSVGSVG> Make(Type t = Type::kInner) { return sk_sp<SkSVGSVG>(new SkSVGSVG(t)); }
24
27 SVG_ATTR(Width , SkSVGLength, SkSVGLength(100, SkSVGLength::Unit::kPercentage))
28 SVG_ATTR(Height , SkSVGLength, SkSVGLength(100, SkSVGLength::Unit::kPercentage))
30
32
33 SkSize intrinsicSize(const SkSVGLengthContext&) const;
34
35 void renderNode(const SkSVGRenderContext&, const SkSVGIRI& iri) const;
36
37protected:
38 bool onPrepareToRender(SkSVGRenderContext*) const override;
39
40 void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
41
42private:
43 explicit SkSVGSVG(Type t)
45 , fType(t)
46 {}
47
48 // Some attributes behave differently for the outermost svg element.
49 const Type fType;
50
52};
53
54#endif // SkSVGSVG_DEFINED
#define SK_API
Definition: SkAPI.h:35
#define INHERITED(method,...)
Definition: SkRecorder.cpp:128
SkSVGAttribute
#define SVG_OPTIONAL_ATTR(attr_name, attr_type)
Definition: SkSVGNode.h:220
SkSVGTag
Definition: SkSVGNode.h:23
#define SVG_ATTR(attr_name, attr_type, attr_default)
Definition: SkSVGNode.h:210
static const SkScalar Y
Definition: StrokeBench.cpp:55
static const SkScalar X
Definition: StrokeBench.cpp:54
SkSVGContainer(SkSVGTag)
static sk_sp< SkSVGSVG > Make(Type t=Type::kInner)
Definition: SkSVGSVG.h:23
Unit(benchmark::kNanosecond)
Definition: SkSize.h:52