1 /* 2 * Copyright 2018 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkSGScene_DEFINED 9 #define SkSGScene_DEFINED 10 11 #include "include/core/SkRefCnt.h" 12 #include "include/core/SkTypes.h" 13 14 #include <memory> 15 #include <vector> 16 17 class SkCanvas; 18 struct SkPoint; 19 20 namespace sksg { 21 22 class InvalidationController; 23 class RenderNode; 24 25 /** 26 * Holds a scene root. Provides high-level methods for rendering. 27 * 28 */ 29 class Scene final { 30 public: 31 static std::unique_ptr<Scene> Make(sk_sp<RenderNode> root); 32 ~Scene(); 33 Scene(const Scene&) = delete; 34 Scene& operator=(const Scene&) = delete; 35 36 void render(SkCanvas*) const; 37 void revalidate(InvalidationController* = nullptr); 38 const RenderNode* nodeAt(const SkPoint&) const; 39 40 private: 41 explicit Scene(sk_sp<RenderNode> root); 42 43 const sk_sp<RenderNode> fRoot; 44 }; 45 46 } // namespace sksg 47 48 #endif // SkSGScene_DEFINED 49