Blender V5.0
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 <cstdint>
26#include <memory>
27
28struct ID;
29struct LayerCollection;
30struct Library;
31struct ListBase;
32struct Main;
33struct Scene;
34struct Strip;
35struct SpaceOutliner;
36struct ViewLayer;
37struct WorkSpace;
38
39namespace blender::ed::outliner {
40
41struct TreeElement;
42class TreeElementID;
43
58
59/* -------------------------------------------------------------------- */
60/* Tree-Display Interface */
61
68 public:
69 AbstractTreeDisplay(SpaceOutliner &space_outliner) : space_outliner_(space_outliner) {}
70 virtual ~AbstractTreeDisplay() = default;
71
72 static std::unique_ptr<AbstractTreeDisplay> create_from_display_mode(
73 int /*eSpaceOutliner_Mode*/ mode, SpaceOutliner &space_outliner);
74
78 static TreeElement *add_element(SpaceOutliner *space_outliner,
79 ListBase *lb,
80 ID *owner_id,
81 void *create_data,
82 TreeElement *parent,
83 short type,
84 short index,
85 const bool expand = true);
86
92
100 virtual bool supports_mode_column() const;
101
109 virtual bool is_lazy_built() const;
110
131 ID *owner_id,
132 void *create_data,
133 TreeElement *parent,
134 short type,
135 short index,
136 const bool expand = true);
137
138 protected:
141};
142
143/* -------------------------------------------------------------------- */
144/* View Layer Tree-Display */
145
150 Scene *scene_ = nullptr;
151 ViewLayer *view_layer_ = nullptr;
152 bool show_objects_ = true;
153
154 public:
155 TreeDisplayViewLayer(SpaceOutliner &space_outliner);
156
158
159 bool supports_mode_column() const override;
160
161 private:
162 void add_view_layer(Scene &, ListBase &, TreeElement *);
163 void add_layer_collections_recursive(ListBase &, ListBase &, TreeElement &);
164 void add_layer_collection_objects(ListBase &, LayerCollection &, TreeElement &);
165 void add_layer_collection_objects_children(TreeElement &);
166};
167
168/* -------------------------------------------------------------------- */
169/* Library Tree-Display */
170
175 public:
176 TreeDisplayLibraries(SpaceOutliner &space_outliner);
177
179
180 private:
181 TreeElement *add_library_contents(Main &, ListBase &, Library *);
182 bool library_id_filter_poll(const Library *lib, ID *id) const;
183 short id_filter_get() const;
184};
185
186/* -------------------------------------------------------------------- */
187/* Library Overrides Tree-Display. */
188
193 public:
195
197
198 private:
199 ListBase add_library_contents(Main &);
200 short id_filter_get() const;
201};
202
207 public:
209
211
212 bool is_lazy_built() const override;
213
214 private:
215 ListBase build_hierarchy_for_lib_or_main(Main *bmain,
216 TreeElement &parent_te,
217 Library *lib = nullptr);
218};
219
220/* -------------------------------------------------------------------- */
221/* Video Sequencer Tree-Display */
222
223enum class StripAddOp : int8_t { Noop = 0, Add, None };
224
229 public:
230 TreeDisplaySequencer(SpaceOutliner &space_outliner);
231
233
234 private:
235 TreeElement *add_sequencer_contents() const;
239 StripAddOp need_add_strip_dup(Strip *strip) const;
240 void add_strip_dup(Strip *strip, TreeElement *te, short index);
241};
242
243/* -------------------------------------------------------------------- */
244/* Orphaned Data Tree-Display */
245
250 public:
251 TreeDisplayIDOrphans(SpaceOutliner &space_outliner);
252
254
255 private:
256 bool datablock_has_orphans(ListBase &) const;
257};
258
259/* -------------------------------------------------------------------- */
260/* Scenes Tree-Display */
261
266 public:
267 TreeDisplayScenes(SpaceOutliner &space_outliner);
268
270
271 bool supports_mode_column() const override;
272};
273
274/* -------------------------------------------------------------------- */
275/* Data API Tree-Display */
276
281 public:
282 TreeDisplayDataAPI(SpaceOutliner &space_outliner);
283
285
286 bool is_lazy_built() const override;
287};
288
289} // 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:414
The data to build the tree from.
TreeSourceData(Main &bmain, WorkSpace &workspace, Scene &scene, ViewLayer &view_layer)
static DynamicLibrary lib