Blender V4.3
tree_display.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
23#pragma once
24
25#include <memory>
26
27struct ID;
28struct LayerCollection;
29struct Library;
30struct ListBase;
31struct Main;
32struct Scene;
33struct Sequence;
34struct SpaceOutliner;
35struct ViewLayer;
36
37namespace blender::ed::outliner {
38
39struct TreeElement;
40class TreeElementID;
41
55
56/* -------------------------------------------------------------------- */
57/* Tree-Display Interface */
58
65 public:
66 AbstractTreeDisplay(SpaceOutliner &space_outliner) : space_outliner_(space_outliner) {}
67 virtual ~AbstractTreeDisplay() = default;
68
69 static std::unique_ptr<AbstractTreeDisplay> create_from_display_mode(
70 int /*eSpaceOutliner_Mode*/ mode, SpaceOutliner &space_outliner);
71
75 static TreeElement *add_element(SpaceOutliner *space_outliner,
76 ListBase *lb,
77 ID *owner_id,
78 void *create_data,
79 TreeElement *parent,
80 short type,
81 short index,
82 const bool expand = true);
83
89
97 virtual bool supports_mode_column() const;
98
106 virtual bool is_lazy_built() const;
107
128 ID *owner_id,
129 void *create_data,
130 TreeElement *parent,
131 short type,
132 short index,
133 const bool expand = true);
134
135 protected:
138};
139
140/* -------------------------------------------------------------------- */
141/* View Layer Tree-Display */
142
147 Scene *scene_ = nullptr;
148 ViewLayer *view_layer_ = nullptr;
149 bool show_objects_ = true;
150
151 public:
152 TreeDisplayViewLayer(SpaceOutliner &space_outliner);
153
155
156 bool supports_mode_column() const override;
157
158 private:
159 void add_view_layer(Scene &, ListBase &, TreeElement *);
160 void add_layer_collections_recursive(ListBase &, ListBase &, TreeElement &);
161 void add_layer_collection_objects(ListBase &, LayerCollection &, TreeElement &);
162 void add_layer_collection_objects_children(TreeElement &);
163};
164
165/* -------------------------------------------------------------------- */
166/* Library Tree-Display */
167
172 public:
173 TreeDisplayLibraries(SpaceOutliner &space_outliner);
174
176
177 private:
178 TreeElement *add_library_contents(Main &, ListBase &, Library *);
179 bool library_id_filter_poll(const Library *lib, ID *id) const;
180 short id_filter_get() const;
181};
182
183/* -------------------------------------------------------------------- */
184/* Library Overrides Tree-Display. */
185
190 public:
192
194
195 private:
196 ListBase add_library_contents(Main &);
197 short id_filter_get() const;
198};
199
204 public:
206
208
209 bool is_lazy_built() const override;
210
211 private:
212 ListBase build_hierarchy_for_lib_or_main(Main *bmain,
213 TreeElement &parent_te,
214 Library *lib = nullptr);
215};
216
217/* -------------------------------------------------------------------- */
218/* Video Sequencer Tree-Display */
219
225
230 public:
231 TreeDisplaySequencer(SpaceOutliner &space_outliner);
232
234
235 private:
236 TreeElement *add_sequencer_contents() const;
240 SequenceAddOp need_add_seq_dup(Sequence *seq) const;
241 void add_seq_dup(Sequence *seq, TreeElement *te, short index);
242};
243
244/* -------------------------------------------------------------------- */
245/* Orphaned Data Tree-Display */
246
251 public:
252 TreeDisplayIDOrphans(SpaceOutliner &space_outliner);
253
255
256 private:
257 bool datablock_has_orphans(ListBase &) const;
258};
259
260/* -------------------------------------------------------------------- */
261/* Scenes Tree-Display */
262
267 public:
268 TreeDisplayScenes(SpaceOutliner &space_outliner);
269
271
272 bool supports_mode_column() const override;
273};
274
275/* -------------------------------------------------------------------- */
276/* Data API Tree-Display */
277
282 public:
283 TreeDisplayDataAPI(SpaceOutliner &space_outliner);
284
286
287 bool is_lazy_built() const override;
288};
289
290} // namespace blender::ed::outliner
Base Class For Tree-Displays.
AbstractTreeDisplay(SpaceOutliner &space_outliner)
static TreeElement * add_element(SpaceOutliner *space_outliner, ListBase *lb, ID *owner_id, void *create_data, TreeElement *parent, short type, short index, const bool expand=true)
virtual ListBase build_tree(const TreeSourceData &source_data)=0
static std::unique_ptr< AbstractTreeDisplay > create_from_display_mode(int mode, SpaceOutliner &space_outliner)
Tree-Display for the Scenes display mode.
TreeDisplayDataAPI(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
Tree-Display for the Orphaned Data display mode.
ListBase build_tree(const TreeSourceData &source_data) override
TreeDisplayIDOrphans(SpaceOutliner &space_outliner)
Tree-Display for the Libraries display mode.
TreeDisplayLibraries(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
Tree-Display for the Library Overrides display mode, Hierarchies view mode.
Tree-Display for the Library Overrides display mode, Properties view mode.
Tree-Display for the Scenes display mode.
TreeDisplayScenes(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
Tree-Display for the Video Sequencer display mode.
ListBase build_tree(const TreeSourceData &source_data) override
TreeDisplaySequencer(SpaceOutliner &space_outliner)
Tree-Display for the View Layer display mode.
ListBase build_tree(const TreeSourceData &source_data) override
GPU_SHADER_INTERFACE_INFO(depth_2d_update_iface, "").smooth(Type fragColor push_constant(Type::VEC2, "extent") .push_constant(Type source_data
Definition DNA_ID.h:413
The data to build the tree from.
TreeSourceData(Main &bmain, Scene &scene, ViewLayer &view_layer)
static DynamicLibrary lib