Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / modules / svg / include / SkSVGSVG.h
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/core/SkTLazy.h"
14
15 class SkSVGLengthContext;
16
17 class 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