1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci* Copyright 2016 Google Inc. 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* Copyright 2014 Google Inc. 9cb93a386Sopenharmony_ci* 10cb93a386Sopenharmony_ci* Use of this source code is governed by a BSD-style license that can be 11cb93a386Sopenharmony_ci* found in the LICENSE file. 12cb93a386Sopenharmony_ci*/ 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 15cb93a386Sopenharmony_ci#include "include/gpu/GrDirectContext.h" 16cb93a386Sopenharmony_ci#include "include/gpu/GrRecordingContext.h" 17cb93a386Sopenharmony_ci#include "tools/viewer/GMSlide.h" 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ciGMSlide::GMSlide(std::unique_ptr<skiagm::GM> gm) : fGM(std::move(gm)) { 20cb93a386Sopenharmony_ci fGM->setMode(skiagm::GM::kSample_Mode); 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ci fName.printf("GM_%s", fGM->getName()); 23cb93a386Sopenharmony_ci} 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ciGMSlide::~GMSlide() = default; 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_civoid GMSlide::gpuTeardown() { 28cb93a386Sopenharmony_ci fGM->gpuTeardown(); 29cb93a386Sopenharmony_ci} 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_civoid GMSlide::draw(SkCanvas* canvas) { 32cb93a386Sopenharmony_ci SkString msg; 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci auto direct = GrAsDirectContext(canvas->recordingContext()); 35cb93a386Sopenharmony_ci auto result = fGM->gpuSetup(direct, canvas, &msg); 36cb93a386Sopenharmony_ci if (result != skiagm::GM::DrawResult::kOk) { 37cb93a386Sopenharmony_ci return; 38cb93a386Sopenharmony_ci } 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ci fGM->draw(canvas, &msg); 41cb93a386Sopenharmony_ci} 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_cibool GMSlide::animate(double nanos) { return fGM->animate(nanos); } 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_cibool GMSlide::onChar(SkUnichar c) { return fGM->onChar(c); } 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_cibool GMSlide::onGetControls(SkMetaData* controls) { 48cb93a386Sopenharmony_ci return fGM->getControls(controls); 49cb93a386Sopenharmony_ci} 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_civoid GMSlide::onSetControls(const SkMetaData& controls) { 52cb93a386Sopenharmony_ci fGM->setControls(controls); 53cb93a386Sopenharmony_ci} 54cb93a386Sopenharmony_ci 55