123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- * Copyright 2016 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "tools/viewer/SKPSlide.h"
- #include "include/core/SkCanvas.h"
- #include "include/core/SkStream.h"
- #include "src/core/SkOSFile.h"
- SKPSlide::SKPSlide(const SkString& name, const SkString& path) : fPath(path) {
- fName = name;
- }
- SKPSlide::~SKPSlide() {}
- void SKPSlide::draw(SkCanvas* canvas) {
- if (fPic.get()) {
- bool isOffset = SkToBool(fCullRect.left() | fCullRect.top());
- if (isOffset) {
- canvas->save();
- canvas->translate(SkIntToScalar(-fCullRect.left()), SkIntToScalar(-fCullRect.top()));
- }
- canvas->drawPicture(fPic.get());
- if (isOffset) {
- canvas->restore();
- }
- }
- }
- static sk_sp<SkPicture> read_picture(const char path[]) {
- std::unique_ptr<SkStream> stream = SkStream::MakeFromFile(path);
- if (!stream) {
- SkDebugf("Could not read %s.\n", path);
- return nullptr;
- }
- auto pic = SkPicture::MakeFromStream(stream.get());
- if (!pic) {
- SkDebugf("Could not read %s as an SkPicture.\n", path);
- }
- return pic;
- }
- void SKPSlide::load(SkScalar, SkScalar) {
- fPic = read_picture(fPath.c_str());
- fCullRect = fPic->cullRect().roundOut();
- }
- void SKPSlide::unload() {
- fPic.reset(nullptr);
- }
|