策略抽离

This commit is contained in:
2026-08-02 16:02:15 +08:00
parent dda25f9038
commit ffaca5b05f
55 changed files with 1431 additions and 886 deletions
+11 -2
View File
@@ -46,7 +46,14 @@ public:
void remove_child(const std::shared_ptr<Renderable>& child);
std::vector<std::shared_ptr<Renderable>> children_snapshot() const;
std::vector<std::shared_ptr<Renderable>> hit_renderables(const PointF& pos);
void append_tree_snapshot(Renderable_Frame_Tree& snapshot, const std::string& parent_object_name = {}, int render_tree_depth = 0, const std::string& cache_parent_object_name = {}, int cache_tree_depth = 0);
void append_tree_snapshot(
Renderable_Frame_Tree& snapshot,
std::uint64_t parent_node_id = 0,
const std::string& parent_object_name = {},
int render_tree_depth = 0,
std::uint64_t cache_parent_node_id = 0,
const std::string& cache_parent_object_name = {},
int cache_tree_depth = 0);
void render(Canvas& canvas, const Render_Frame_Snapshot& snapshot);
void render_tree_snapshot(Canvas& canvas, const Render_Frame_Snapshot& snapshot, const Renderable_Frame_Tree& tree, std::size_t index);
void draw(Canvas& canvas, const Render_Frame_Snapshot& snapshot);
@@ -66,6 +73,7 @@ public:
[[nodiscard]] bool attached_to_plot() const;
[[nodiscard]] bool shares_plot_with(const Renderable& other) const;
[[nodiscard]] const std::string& object_name() const;
[[nodiscard]] std::uint64_t node_id() const;
void set_object_name(std::string name);
[[nodiscard]] bool is_visible() const;
void set_visible(bool value);
@@ -75,7 +83,7 @@ public:
int cache_tree_depth() const;
std::string render_parent_object_name() const;
int render_tree_depth() const;
void mark_render_dirty();
void mark_render_dirty(Dirty_Reason reason = Dirty_Reason::Core_Data);
[[nodiscard]] bool ok() const;
[[nodiscard]] bool get_retiring() const;
virtual ~Renderable();
@@ -87,6 +95,7 @@ private:
Render_Object_Owner d_owner;
Render_Data* d_ptr{};
Plot_Core* plot{};
std::uint64_t node_id_{};
std::string object_name_;
std::weak_ptr<Renderable> parent_renderable;
std::atomic_bool visible_{true};