1/*
2 * Copyright (c) 2020 - 2023 the ThorVG project. All rights reserved.
3
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10
11 * The above copyright notice and this permission notice shall be included in all
12 * copies or substantial portions of the Software.
13
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23#include "tvgCanvasImpl.h"
24
25/************************************************************************/
26/* External Class Implementation */
27/************************************************************************/
28
29Canvas::Canvas(RenderMethod *pRenderer):pImpl(new Impl(pRenderer))
30{
31}
32
33
34Canvas::~Canvas()
35{
36 delete(pImpl);
37}
38
39
40Result Canvas::reserve(TVG_UNUSED uint32_t n) noexcept
41{
42 return Result::NonSupport;
43}
44
45
46list<Paint*>& Canvas::paints() noexcept
47{
48 return pImpl->paints;
49}
50
51
52Result Canvas::push(unique_ptr<Paint> paint) noexcept
53{
54 return pImpl->push(std::move(paint));
55}
56
57
58Result Canvas::clear(bool free) noexcept
59{
60 return pImpl->clear(free);
61}
62
63
64Result Canvas::draw() noexcept
65{
66 TVGLOG("COMMON", "Draw S. -------------------------------- Canvas(%p)", this);
67 auto ret = pImpl->draw();
68 TVGLOG("COMMON", "Draw E. -------------------------------- Canvas(%p)", this);
69
70 return ret;
71}
72
73
74Result Canvas::update(Paint* paint) noexcept
75{
76 TVGLOG("COMMON", "Update S. ------------------------------ Canvas(%p)", this);
77 auto ret = pImpl->update(paint, false);
78 TVGLOG("COMMON", "Update E. ------------------------------ Canvas(%p)", this);
79
80 return ret;
81}
82
83
84Result Canvas::sync() noexcept
85{
86 return pImpl->sync();
87}
88