Skia
2D Graphics Library
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
11
#include "
modules/svg/include/SkSVGContainer.h
"
12
#include "
modules/svg/include/SkSVGTypes.h
"
13
#include "src/base/SkTLazy.h"
14
15
class
SkSVGLengthContext
;
16
17
class
SK_API
SkSVGSVG
:
public
SkSVGContainer
{
18
public
:
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
25
SVG_ATTR
(X ,
SkSVGLength
,
SkSVGLength
(0))
26
SVG_ATTR
(Y ,
SkSVGLength
,
SkSVGLength
(0))
27
SVG_ATTR
(Width ,
SkSVGLength
,
SkSVGLength
(100,
SkSVGLength
::Unit::kPercentage))
28
SVG_ATTR
(Height ,
SkSVGLength
,
SkSVGLength
(100,
SkSVGLength
::Unit::kPercentage))
29
SVG_ATTR
(PreserveAspectRatio,
SkSVGPreserveAspectRatio
,
SkSVGPreserveAspectRatio
())
30
31
SVG_OPTIONAL_ATTR
(ViewBox,
SkSVGViewBoxType
)
32
33
SkSize
intrinsicSize(const
SkSVGLengthContext
&) const;
34
35
void
renderNode(const
SkSVGRenderContext
&, const
SkSVGIRI
& iri) const;
36
37
protected:
38
bool
onPrepareToRender(
SkSVGRenderContext
*) const override;
39
40
void
onSetAttribute(
SkSVGAttribute
, const
SkSVGValue
&) override;
41
42
private:
43
explicit
SkSVGSVG
(
Type
t)
44
:
INHERITED
(
SkSVGTag
::
kSvg
)
45
, fType(t)
46
{}
47
48
// Some attributes behave differently for the outermost svg element.
49
const
Type fType;
50
51
using
INHERITED =
SkSVGContainer
;
52
};
53
54
#endif
// SkSVGSVG_DEFINED
SkSVGAttribute
SkSVGAttribute
Definition:
SkSVGAttribute.h:16
SkSVGContainer.h
SVG_OPTIONAL_ATTR
#define SVG_OPTIONAL_ATTR(attr_name, attr_type)
Definition:
SkSVGNode.h:213
SkSVGTag
SkSVGTag
Definition:
SkSVGNode.h:23
SkSVGTag::kSvg
@ kSvg
SVG_ATTR
#define SVG_ATTR(attr_name, attr_type, attr_default)
Definition:
SkSVGNode.h:203
SkSVGTypes.h
SkSVGContainer
Definition:
SkSVGContainer.h:14
SkSVGContainer::SkSVGContainer
SkSVGContainer(SkSVGTag)
SkSVGIRI
Definition:
SkSVGTypes.h:152
SkSVGLengthContext
Definition:
SkSVGRenderContext.h:27
SkSVGLength
Definition:
SkSVGTypes.h:116
SkSVGRenderContext
Definition:
SkSVGRenderContext.h:61
SkSVGSVG
Definition:
SkSVGSVG.h:17
SkSVGSVG::Make
static sk_sp< SkSVGSVG > Make(Type t=Type::kInner)
Definition:
SkSVGSVG.h:23
SkSVGSVG::Type
Type
Definition:
SkSVGSVG.h:19
SkSVGTransformableNode
Definition:
SkSVGTransformableNode.h:14
SkSVGValue
Definition:
SkSVGValue.h:18
sk_sp< SkSVGSVG >
SkRect
SkRect holds four float coordinates describing the upper and lower bounds of a rectangle.
Definition:
SkRect.h:582
SkSVGPreserveAspectRatio
Definition:
SkSVGTypes.h:585
SkSize
Definition:
SkSize.h:51
modules
svg
include
SkSVGSVG.h
Generated by
Doxygen
1.9.1 on Tue Nov 14 2023