xref: /third_party/skia/tools/viewer/GMSlide.cpp (revision cb93a386)
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