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 "SkSVGContainer.h"
12 #include "SkSVGTypes.h"
13 #include "SkTLazy.h"
14 
15 class SkSVGLengthContext;
16 
17 class SkSVGSVG : public SkSVGContainer {
18 public:
19     ~SkSVGSVG() override = default;
20 
Make()21     static sk_sp<SkSVGSVG> Make() { return sk_sp<SkSVGSVG>(new SkSVGSVG()); }
22 
23     void setX(const SkSVGLength&);
24     void setY(const SkSVGLength&);
25     void setWidth(const SkSVGLength&);
26     void setHeight(const SkSVGLength&);
27     void setViewBox(const SkSVGViewBoxType&);
28 
29     SkSize intrinsicSize(const SkSVGLengthContext&) const;
30 
31 protected:
32     bool onPrepareToRender(SkSVGRenderContext*) const override;
33 
34     void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
35 
36 private:
37     SkSVGSVG();
38 
39     SkSVGLength fX      = SkSVGLength(0);
40     SkSVGLength fY      = SkSVGLength(0);
41     SkSVGLength fWidth  = SkSVGLength(100, SkSVGLength::Unit::kPercentage);
42     SkSVGLength fHeight = SkSVGLength(100, SkSVGLength::Unit::kPercentage);
43 
44     SkTLazy<SkSVGViewBoxType> fViewBox;
45 
46     typedef SkSVGContainer INHERITED;
47 };
48 
49 #endif // SkSVGSVG_DEFINED
50