Blender V4.5
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
22
23#pragma once
24
25#include <memory>
26
27struct ID;
28struct LayerCollection;
29struct Library;
30struct ListBase;
31struct Main;
32struct Scene;
33struct Strip;
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
220enum class StripAddOp : int8_t { Noop = 0, Add, None };
221
226 public:
227 TreeDisplaySequencer(SpaceOutliner &space_outliner);
228
230
231 private:
232 TreeElement *add_sequencer_contents() const;
236 StripAddOp need_add_strip_dup(Strip *strip) const;
237 void add_strip_dup(Strip *strip, TreeElement *te, short index);
238};
239
240/* -------------------------------------------------------------------- */
241/* Orphaned Data Tree-Display */
242
247 public:
248 TreeDisplayIDOrphans(SpaceOutliner &space_outliner);
249
251
252 private:
253 bool datablock_has_orphans(ListBase &) const;
254};
255
256/* -------------------------------------------------------------------- */
257/* Scenes Tree-Display */
258
263 public:
264 TreeDisplayScenes(SpaceOutliner &space_outliner);
265
267
268 bool supports_mode_column() const override;
269};
270
271/* -------------------------------------------------------------------- */
272/* Data API Tree-Display */
273
278 public:
279 TreeDisplayDataAPI(SpaceOutliner &space_outliner);
280
282
283 bool is_lazy_built() const override;
284};
285
286} // namespace blender::ed::outliner
#define final(a, b, c)
Definition BLI_hash.h:19
static btMatrix3x3 Add(const btMatrix3x3 &a, const btMatrix3x3 &b)
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)
TreeDisplayDataAPI(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
ListBase build_tree(const TreeSourceData &source_data) override
TreeDisplayIDOrphans(SpaceOutliner &space_outliner)
TreeDisplayLibraries(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
TreeDisplayScenes(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
ListBase build_tree(const TreeSourceData &source_data) override
TreeDisplaySequencer(SpaceOutliner &space_outliner)
ListBase build_tree(const TreeSourceData &source_data) override
GPU_SHADER_INTERFACE_INFO(depth_2d_update_iface).smooth(Type fragColor push_constant(Type::float2_t, "extent") .push_constant(Type source_data
Definition DNA_ID.h:404
The data to build the tree from.
TreeSourceData(Main &bmain, Scene &scene, ViewLayer &view_layer)
static DynamicLibrary lib