blob: 87e3fc6778dd58480b4924b96d8237281099e666 [file] [log] [blame]
jvanverth2bb3b6d2016-04-08 07:24:09 -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
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "tools/viewer/SKPSlide.h"
jvanverth2bb3b6d2016-04-08 07:24:09 -07009
Mike Kleinc0bd9f92019-04-23 12:05:21 -050010#include "include/core/SkCanvas.h"
11#include "include/core/SkStream.h"
12#include "src/core/SkOSFile.h"
jvanverth2bb3b6d2016-04-08 07:24:09 -070013
Chris Daltonf3242c42020-05-27 17:31:12 -060014SKPSlide::SKPSlide(const SkString& name, const SkString& path)
15 : SKPSlide(name, SkStream::MakeFromFile(path.c_str())) {
16}
17
18SKPSlide::SKPSlide(const SkString& name, std::unique_ptr<SkStream> stream)
19 : fStream(std::move(stream)) {
jvanverth2bb3b6d2016-04-08 07:24:09 -070020 fName = name;
21}
22
23SKPSlide::~SKPSlide() {}
24
25void SKPSlide::draw(SkCanvas* canvas) {
John Stilesa008b0f2020-08-16 08:48:02 -040026 if (fPic) {
jvanverthc265a922016-04-08 12:51:45 -070027 bool isOffset = SkToBool(fCullRect.left() | fCullRect.top());
28 if (isOffset) {
29 canvas->save();
30 canvas->translate(SkIntToScalar(-fCullRect.left()), SkIntToScalar(-fCullRect.top()));
31 }
32
33 canvas->drawPicture(fPic.get());
34
35 if (isOffset) {
36 canvas->restore();
37 }
38 }
39}
40
jvanverthc7027ab2016-06-16 09:52:35 -070041void SKPSlide::load(SkScalar, SkScalar) {
Chris Daltonf3242c42020-05-27 17:31:12 -060042 if (!fStream) {
43 SkDebugf("No skp stream for slide %s.\n", fName.c_str());
44 return;
Jim Van Verthd0cf5da2019-09-09 16:53:39 -040045 }
Chris Daltonf3242c42020-05-27 17:31:12 -060046 fStream->rewind();
47 fPic = SkPicture::MakeFromStream(fStream.get());
48 if (!fPic) {
49 SkDebugf("Could parse SkPicture from skp stream for slide %s.\n", fName.c_str());
50 return;
51 }
52 fCullRect = fPic->cullRect().roundOut();
jvanverthc265a922016-04-08 12:51:45 -070053}
54
55void SKPSlide::unload() {
56 fPic.reset(nullptr);
jvanverth2bb3b6d2016-04-08 07:24:09 -070057}