1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2018 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#include "modules/sksg/include/SkSGScene.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 11cb93a386Sopenharmony_ci#include "include/core/SkMatrix.h" 12cb93a386Sopenharmony_ci#include "include/core/SkPaint.h" 13cb93a386Sopenharmony_ci#include "modules/sksg/include/SkSGInvalidationController.h" 14cb93a386Sopenharmony_ci#include "modules/sksg/include/SkSGRenderNode.h" 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_cinamespace sksg { 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_cistd::unique_ptr<Scene> Scene::Make(sk_sp<RenderNode> root) { 19cb93a386Sopenharmony_ci return root ? std::unique_ptr<Scene>(new Scene(std::move(root))) : nullptr; 20cb93a386Sopenharmony_ci} 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ciScene::Scene(sk_sp<RenderNode> root) : fRoot(std::move(root)) {} 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ciScene::~Scene() = default; 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_civoid Scene::render(SkCanvas* canvas) const { 27cb93a386Sopenharmony_ci // Ensure the SG is revalidated. 28cb93a386Sopenharmony_ci // Note: this is a no-op if the scene has already been revalidated - e.g. in animate(). 29cb93a386Sopenharmony_ci fRoot->revalidate(nullptr, SkMatrix::I()); 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci fRoot->render(canvas); 32cb93a386Sopenharmony_ci} 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_civoid Scene::revalidate(InvalidationController* ic) { 35cb93a386Sopenharmony_ci fRoot->revalidate(ic, SkMatrix::I()); 36cb93a386Sopenharmony_ci} 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ciconst RenderNode* Scene::nodeAt(const SkPoint& p) const { 39cb93a386Sopenharmony_ci return fRoot->nodeAt(p); 40cb93a386Sopenharmony_ci} 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci} // namespace sksg 43