blob: 3d097cc1d382bd3a617461d127f801204f30aca4 [file] [log] [blame]
fmalita6ceef3d2016-07-26 18:46:34 -07001/*
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 SkSVGDOM_DEFINED
9#define SkSVGDOM_DEFINED
10
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "experimental/svg/model/SkSVGIDMapper.h"
12#include "include/core/SkRefCnt.h"
13#include "include/core/SkSize.h"
14#include "include/private/SkTemplates.h"
fmalita6ceef3d2016-07-26 18:46:34 -070015
16class SkCanvas;
17class SkDOM;
18class SkStream;
19class SkSVGNode;
20
21class SkSVGDOM : public SkRefCnt {
22public:
fmalitae1baa7c2016-09-14 12:04:30 -070023 SkSVGDOM();
fmalita6ceef3d2016-07-26 18:46:34 -070024 ~SkSVGDOM() = default;
25
fmalitae1baa7c2016-09-14 12:04:30 -070026 static sk_sp<SkSVGDOM> MakeFromDOM(const SkDOM&);
27 static sk_sp<SkSVGDOM> MakeFromStream(SkStream&);
fmalita6ceef3d2016-07-26 18:46:34 -070028
fmalitae1baa7c2016-09-14 12:04:30 -070029 const SkSize& containerSize() const;
fmalita6ceef3d2016-07-26 18:46:34 -070030 void setContainerSize(const SkSize&);
fmalitae1baa7c2016-09-14 12:04:30 -070031
fmalitaca39d712016-08-12 13:17:11 -070032 void setRoot(sk_sp<SkSVGNode>);
fmalita6ceef3d2016-07-26 18:46:34 -070033
34 void render(SkCanvas*) const;
35
36private:
fmalitae1baa7c2016-09-14 12:04:30 -070037 SkSize intrinsicSize() const;
38
fmalita6ceef3d2016-07-26 18:46:34 -070039 SkSize fContainerSize;
40 sk_sp<SkSVGNode> fRoot;
fmalita28d5b722016-09-12 17:06:47 -070041 SkSVGIDMapper fIDMapper;
fmalita6ceef3d2016-07-26 18:46:34 -070042
43 typedef SkRefCnt INHERITED;
44};
45
46#endif // SkSVGDOM_DEFINED