Cleanup: Follow C++ code style for new Outliner building code

See https://developer.blender.org/D9499.

* Use C++17 nested namespaces.
* Use `_` suffix rather than prefix for private member variables.

Also: Simplify code visually in `tree_view.cc` with `using namespace`.
This commit is contained in:
Julian Eisel 2020-11-09 12:21:51 +01:00
parent 43b4570dcf
commit 01318b3112
4 changed files with 42 additions and 56 deletions

View File

@ -24,9 +24,7 @@
#include "tree_view.hh"
namespace outliner = blender::ed::outliner;
/* Convenience. */
using outliner::AbstractTreeView;
using namespace blender::ed::outliner;
TreeView *outliner_tree_view_create(eSpaceOutliner_Mode mode, SpaceOutliner *space_outliner)
{
@ -36,14 +34,14 @@ TreeView *outliner_tree_view_create(eSpaceOutliner_Mode mode, SpaceOutliner *spa
case SO_SCENES:
break;
case SO_LIBRARIES:
tree_view = new outliner::TreeViewLibraries(*space_outliner);
tree_view = new TreeViewLibraries(*space_outliner);
break;
case SO_SEQUENCE:
case SO_DATA_API:
case SO_ID_ORPHANS:
break;
case SO_VIEW_LAYER:
tree_view = new outliner::TreeViewViewLayer(*space_outliner);
tree_view = new TreeViewViewLayer(*space_outliner);
break;
}

View File

@ -33,9 +33,7 @@ struct TreeSourceData;
#ifdef __cplusplus
namespace blender {
namespace ed {
namespace outliner {
namespace blender::ed::outliner {
/* -------------------------------------------------------------------- */
/* Tree-View Interface */
@ -50,7 +48,7 @@ namespace outliner {
*/
class AbstractTreeView {
public:
AbstractTreeView(SpaceOutliner &space_outliner) : _space_outliner(space_outliner)
AbstractTreeView(SpaceOutliner &space_outliner) : space_outliner_(space_outliner)
{
}
virtual ~AbstractTreeView() = default;
@ -63,7 +61,7 @@ class AbstractTreeView {
protected:
/** All derived classes will need a handle to this, so storing it in the base for convenience. */
SpaceOutliner &_space_outliner;
SpaceOutliner &space_outliner_;
};
/* -------------------------------------------------------------------- */
@ -73,8 +71,8 @@ class AbstractTreeView {
* \brief Tree-View for the View Layer display mode.
*/
class TreeViewViewLayer final : public AbstractTreeView {
ViewLayer *_view_layer = nullptr;
bool _show_objects = true;
ViewLayer *view_layer_ = nullptr;
bool show_objects_ = true;
public:
TreeViewViewLayer(SpaceOutliner &space_outliner);
@ -106,9 +104,7 @@ class TreeViewLibraries final : public AbstractTreeView {
short id_filter_get() const;
};
} // namespace outliner
} // namespace ed
} // namespace blender
} // namespace blender::ed::outliner
extern "C" {
#endif

View File

@ -29,9 +29,7 @@
#include "../outliner_intern.h"
#include "tree_view.hh"
namespace blender {
namespace ed {
namespace outliner {
namespace blender::ed::outliner {
/* Convenience/readability. */
template<typename T> using List = ListBaseWrapper<T>;
@ -114,7 +112,7 @@ TreeElement *TreeViewLibraries::add_library_contents(Main &mainvar,
ListBase *lbarray[MAX_LIBARRAY];
int tot;
if (filter_id_type) {
lbarray[0] = which_libbase(&mainvar, _space_outliner.filter_id_type);
lbarray[0] = which_libbase(&mainvar, space_outliner_.filter_id_type);
tot = 1;
}
else {
@ -144,10 +142,10 @@ TreeElement *TreeViewLibraries::add_library_contents(Main &mainvar,
if (!tenlib) {
/* Create library tree element on demand, depending if there are any data-blocks. */
if (lib) {
tenlib = outliner_add_element(&_space_outliner, &lb, lib, nullptr, 0, 0);
tenlib = outliner_add_element(&space_outliner_, &lb, lib, nullptr, 0, 0);
}
else {
tenlib = outliner_add_element(&_space_outliner, &lb, &mainvar, nullptr, TSE_ID_BASE, 0);
tenlib = outliner_add_element(&space_outliner_, &lb, &mainvar, nullptr, TSE_ID_BASE, 0);
tenlib->name = IFACE_("Current File");
}
}
@ -161,14 +159,14 @@ TreeElement *TreeViewLibraries::add_library_contents(Main &mainvar,
}
else {
ten = outliner_add_element(
&_space_outliner, &tenlib->subtree, lbarray[a], nullptr, TSE_ID_BASE, 0);
&space_outliner_, &tenlib->subtree, lbarray[a], nullptr, TSE_ID_BASE, 0);
ten->directdata = lbarray[a];
ten->name = outliner_idcode_to_plural(GS(id->name));
}
for (ID *id : List<ID>(lbarray[a])) {
if (library_id_filter_poll(lib, id)) {
outliner_add_element(&_space_outliner, &ten->subtree, id, ten, 0, 0);
outliner_add_element(&space_outliner_, &ten->subtree, id, ten, 0, 0);
}
}
}
@ -180,8 +178,8 @@ TreeElement *TreeViewLibraries::add_library_contents(Main &mainvar,
short TreeViewLibraries::id_filter_get() const
{
if (_space_outliner.filter & SO_FILTER_ID_TYPE) {
return _space_outliner.filter_id_type;
if (space_outliner_.filter & SO_FILTER_ID_TYPE) {
return space_outliner_.filter_id_type;
}
return 0;
}
@ -212,6 +210,4 @@ bool TreeViewLibraries::library_id_filter_poll(Library *lib, ID *id) const
return true;
}
} // namespace outliner
} // namespace ed
} // namespace blender
} // namespace blender::ed::outliner

View File

@ -34,9 +34,7 @@
#include "../outliner_intern.h"
#include "tree_view.hh"
namespace blender {
namespace ed {
namespace outliner {
namespace blender::ed::outliner {
/* Convenience/readability. */
template<typename T> using List = ListBaseWrapper<T>;
@ -45,8 +43,8 @@ class ObjectsChildrenBuilder {
using TreeChildren = Vector<TreeElement *>;
using ObjectTreeElementsMap = Map<Object *, TreeChildren>;
SpaceOutliner &_outliner;
ObjectTreeElementsMap _object_tree_elements_map;
SpaceOutliner &outliner_;
ObjectTreeElementsMap object_tree_elements_map_;
public:
ObjectsChildrenBuilder(SpaceOutliner &);
@ -73,16 +71,16 @@ ListBase TreeViewViewLayer::buildTree(const TreeSourceData &source_data)
{
ListBase tree = {nullptr};
_view_layer = source_data.view_layer;
_show_objects = !(_space_outliner.filter & SO_FILTER_NO_OBJECT);
view_layer_ = source_data.view_layer;
show_objects_ = !(space_outliner_.filter & SO_FILTER_NO_OBJECT);
const bool show_children = (_space_outliner.filter & SO_FILTER_NO_CHILDREN) == 0;
const bool show_children = (space_outliner_.filter & SO_FILTER_NO_CHILDREN) == 0;
if (_space_outliner.filter & SO_FILTER_NO_COLLECTION) {
if (space_outliner_.filter & SO_FILTER_NO_COLLECTION) {
/* Show objects in the view layer. */
for (Base *base : List<Base>(_view_layer->object_bases)) {
for (Base *base : List<Base>(view_layer_->object_bases)) {
TreeElement *te_object = outliner_add_element(
&_space_outliner, &tree, base->object, nullptr, 0, 0);
&space_outliner_, &tree, base->object, nullptr, 0, 0);
te_object->directdata = base;
}
@ -93,7 +91,7 @@ ListBase TreeViewViewLayer::buildTree(const TreeSourceData &source_data)
else {
/* Show collections in the view layer. */
TreeElement &ten = *outliner_add_element(
&_space_outliner, &tree, source_data.scene, nullptr, TSE_VIEW_COLLECTION_BASE, 0);
&space_outliner_, &tree, source_data.scene, nullptr, TSE_VIEW_COLLECTION_BASE, 0);
ten.name = IFACE_("Scene Collection");
TREESTORE(&ten)->flag &= ~TSE_CLOSED;
@ -109,13 +107,13 @@ ListBase TreeViewViewLayer::buildTree(const TreeSourceData &source_data)
void TreeViewViewLayer::add_view_layer(ListBase &tree, TreeElement &parent)
{
/* First layer collection is for master collection, don't show it. */
LayerCollection *lc = static_cast<LayerCollection *>(_view_layer->layer_collections.first);
LayerCollection *lc = static_cast<LayerCollection *>(view_layer_->layer_collections.first);
if (lc == nullptr) {
return;
}
add_layer_collections_recursive(tree, lc->layer_collections, parent);
if (_show_objects) {
if (show_objects_) {
add_layer_collection_objects(tree, *lc, parent);
}
}
@ -128,13 +126,13 @@ void TreeViewViewLayer::add_layer_collections_recursive(ListBase &tree,
const bool exclude = (lc->flag & LAYER_COLLECTION_EXCLUDE) != 0;
TreeElement *ten;
if (exclude && ((_space_outliner.show_restrict_flags & SO_RESTRICT_ENABLE) == 0)) {
if (exclude && ((space_outliner_.show_restrict_flags & SO_RESTRICT_ENABLE) == 0)) {
ten = &parent_ten;
}
else {
ID *id = &lc->collection->id;
ten = outliner_add_element(
&_space_outliner, &tree, id, &parent_ten, TSE_LAYER_COLLECTION, 0);
&space_outliner_, &tree, id, &parent_ten, TSE_LAYER_COLLECTION, 0);
ten->name = id->name + 2;
ten->directdata = lc;
@ -151,7 +149,7 @@ void TreeViewViewLayer::add_layer_collections_recursive(ListBase &tree,
}
add_layer_collections_recursive(ten->subtree, lc->layer_collections, *ten);
if (!exclude && _show_objects) {
if (!exclude && show_objects_) {
add_layer_collection_objects(ten->subtree, *lc, *ten);
}
}
@ -162,9 +160,9 @@ void TreeViewViewLayer::add_layer_collection_objects(ListBase &tree,
TreeElement &ten)
{
for (CollectionObject *cob : List<CollectionObject>(lc.collection->gobject)) {
Base *base = BKE_view_layer_base_find(_view_layer, cob->ob);
Base *base = BKE_view_layer_base_find(view_layer_, cob->ob);
TreeElement *te_object = outliner_add_element(
&_space_outliner, &tree, base->object, &ten, 0, 0);
&space_outliner_, &tree, base->object, &ten, 0, 0);
te_object->directdata = base;
if (!(base->flag & BASE_VISIBLE_VIEWLAYER)) {
@ -176,7 +174,7 @@ void TreeViewViewLayer::add_layer_collection_objects(ListBase &tree,
void TreeViewViewLayer::add_layer_collection_objects_children(TreeElement &collection_tree_elem)
{
/* Call helper to add children. */
ObjectsChildrenBuilder child_builder{_space_outliner};
ObjectsChildrenBuilder child_builder{space_outliner_};
child_builder(collection_tree_elem);
}
@ -190,7 +188,7 @@ void TreeViewViewLayer::add_layer_collection_objects_children(TreeElement &colle
*
* \{ */
ObjectsChildrenBuilder::ObjectsChildrenBuilder(SpaceOutliner &outliner) : _outliner(outliner)
ObjectsChildrenBuilder::ObjectsChildrenBuilder(SpaceOutliner &outliner) : outliner_(outliner)
{
}
@ -216,7 +214,7 @@ void ObjectsChildrenBuilder::object_tree_elements_lookup_create_recursive(TreeEl
if (tselem->type == 0 && te->idcode == ID_OB) {
Object *ob = (Object *)tselem->id;
/* Lookup children or add new, empty children vector. */
Vector<TreeElement *> &tree_elements = _object_tree_elements_map.lookup_or_add(ob, {});
Vector<TreeElement *> &tree_elements = object_tree_elements_map_.lookup_or_add(ob, {});
tree_elements.append(te);
object_tree_elements_lookup_create_recursive(te);
@ -230,7 +228,7 @@ void ObjectsChildrenBuilder::object_tree_elements_lookup_create_recursive(TreeEl
*/
void ObjectsChildrenBuilder::make_object_parent_hierarchy_collections()
{
for (ObjectTreeElementsMap::MutableItem item : _object_tree_elements_map.items()) {
for (ObjectTreeElementsMap::MutableItem item : object_tree_elements_map_.items()) {
Object *child = item.key;
if (child->parent == nullptr) {
@ -238,7 +236,7 @@ void ObjectsChildrenBuilder::make_object_parent_hierarchy_collections()
}
Vector<TreeElement *> &child_ob_tree_elements = item.value;
Vector<TreeElement *> *parent_ob_tree_elements = _object_tree_elements_map.lookup_ptr(
Vector<TreeElement *> *parent_ob_tree_elements = object_tree_elements_map_.lookup_ptr(
child->parent);
if (parent_ob_tree_elements == nullptr) {
continue;
@ -272,7 +270,7 @@ void ObjectsChildrenBuilder::make_object_parent_hierarchy_collections()
/* We add the child in the tree even if it is not in the collection.
* We deliberately clear its sub-tree though, to make it less prominent. */
TreeElement *child_ob_tree_element = outliner_add_element(
&_outliner, &parent_ob_tree_element->subtree, child, parent_ob_tree_element, 0, 0);
&outliner_, &parent_ob_tree_element->subtree, child, parent_ob_tree_element, 0, 0);
outliner_free_tree(&child_ob_tree_element->subtree);
child_ob_tree_element->flag |= TE_CHILD_NOT_IN_COLLECTION;
child_ob_tree_elements.append(child_ob_tree_element);
@ -283,6 +281,4 @@ void ObjectsChildrenBuilder::make_object_parent_hierarchy_collections()
/** \} */
} // namespace outliner
} // namespace ed
} // namespace blender
} // namespace blender::ed::outliner