aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/SvgSlide.cpp
blob: 41dc3187a5d219d12a2ab0098a8c2122257cd1ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 * Copyright 2018 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "SvgSlide.h"

#include "SkCanvas.h"
#include "SkStream.h"
#include "SkSVGDOM.h"

SvgSlide::SvgSlide(const SkString& name, const SkString& path)
    : fPath(path) {
    fName = name;
}

void SvgSlide::load(SkScalar w, SkScalar h) {
    fWinSize   = SkSize::Make(w, h);

    if (const auto svgStream =  SkStream::MakeFromFile(fPath.c_str())) {
        fDom = SkSVGDOM::MakeFromStream(*svgStream);
        if (fDom) {
            fDom->setContainerSize(fWinSize);
        }
    }
}

void SvgSlide::unload() {
    fDom.reset();
}

SkISize SvgSlide::getDimensions() const {
    // We always scale to fill the window.
    return fWinSize.toCeil();
}

void SvgSlide::draw(SkCanvas* canvas) {
    if (fDom) {
        fDom->render(canvas);
    }
}