1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2021 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef MSKPSlide_DEFINED 9cb93a386Sopenharmony_ci#define MSKPSlide_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "tools/MSKPPlayer.h" 12cb93a386Sopenharmony_ci#include "tools/viewer/Slide.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ciclass SkStreamSeekable; 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ciclass MSKPSlide : public Slide { 17cb93a386Sopenharmony_cipublic: 18cb93a386Sopenharmony_ci MSKPSlide(const SkString& name, const SkString& path); 19cb93a386Sopenharmony_ci MSKPSlide(const SkString& name, std::unique_ptr<SkStreamSeekable>); 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ci SkISize getDimensions() const override; 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ci void draw(SkCanvas* canvas) override; 24cb93a386Sopenharmony_ci bool animate(double nanos) override; 25cb93a386Sopenharmony_ci void load(SkScalar winWidth, SkScalar winHeight) override; 26cb93a386Sopenharmony_ci void unload() override; 27cb93a386Sopenharmony_ci void gpuTeardown() override; 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ciprivate: 30cb93a386Sopenharmony_ci // Call if layers need to be redrawn because we've looped playback or UI interaction. 31cb93a386Sopenharmony_ci void redrawLayers(); 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci std::unique_ptr<SkStreamSeekable> fStream; 34cb93a386Sopenharmony_ci std::unique_ptr<MSKPPlayer> fPlayer; 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ci int fFrame = 0; 37cb93a386Sopenharmony_ci int fFPS = 15; 38cb93a386Sopenharmony_ci bool fPaused = false; 39cb93a386Sopenharmony_ci double fLastFrameTime = -1; 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci bool fShowFrameBounds = false; 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci // Default to transparent black, which is correct for Android MSKPS. 44cb93a386Sopenharmony_ci float fBackgroundColor[4] = {0, 0, 0, 0}; 45cb93a386Sopenharmony_ci 46cb93a386Sopenharmony_ci std::vector<int> fAllLayerIDs; 47cb93a386Sopenharmony_ci std::vector<std::vector<int>> fFrameLayerIDs; 48cb93a386Sopenharmony_ci std::vector<SkString> fLayerIDStrings; 49cb93a386Sopenharmony_ci int fDrawLayerID = -1; // -1 means just draw the root layer 50cb93a386Sopenharmony_ci bool fListAllLayers = true; 51cb93a386Sopenharmony_ci 52cb93a386Sopenharmony_ci using INHERITED = Slide; 53cb93a386Sopenharmony_ci}; 54cb93a386Sopenharmony_ci 55cb93a386Sopenharmony_ci#endif 56