display_group_visibility_property.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef RVIZ_DISPLAY_GROUP_VISIBILITY_PROPERTY_H_
31 #define RVIZ_DISPLAY_GROUP_VISIBILITY_PROPERTY_H_
32 
34 
35 #include <stdint.h>
36 
37 #include <map>
38 #include <string>
39 
40 #include <QObject>
41 #include <QString>
42 
43 namespace rviz
44 {
45 class DisplayContext;
46 class Property;
47 class BoolProperty;
48 class DisplayGroup;
49 class BoolProperty;
50 class DisplayVisibilityProperty;
51 
52 
53 /*
54  * Manages the visibility of all displays in a display group
55  * by switching one bit in Ogre's visibility mask.
56  */
58 {
59  Q_OBJECT
60 public:
61  /* @param parent Parent display (will not get a visibility property)
62  * @param context The display context
63  * @param root_property Where to attach new properties to
64  */
65  DisplayGroupVisibilityProperty(uint32_t vis_bit,
66  DisplayGroup* display_group,
67  Display* parent_display,
68  const QString& name = QString(),
69  bool default_value = false,
70  const QString& description = QString(),
71  Property* parent = nullptr);
72  template <typename Func, typename R>
74  DisplayGroup* display_group,
75  Display* parent_display,
76  const QString& name,
77  bool default_value,
78  const QString& description,
79  Property* parent,
80  Func&& changed_slot,
81  const R* receiver)
83  display_group,
84  parent_display,
85  name,
88  parent)
89  {
90  connect(receiver, std::forward<Func>(changed_slot));
91  }
92 
93  // this variant is required to allow omitting the receiver argument
94  template <typename Func, typename P>
96  DisplayGroup* display_group,
97  Display* parent_display,
98  const QString& name,
99  bool default_value,
100  const QString& description,
101  P* parent,
102  Func&& changed_slot)
104  display_group,
105  parent_display,
106  name,
108  description,
109  parent)
110  {
111  connect(parent, std::forward<Func>(changed_slot));
112  }
114 
115  // @brief Update visibility masks of all objects in the Ogre scene
116  void update() override;
117 
118 public Q_SLOTS:
119 
120  void onDisplayAdded(rviz::Display* display);
121  void onDisplayRemoved(rviz::Display* display);
122 
123 private:
124  // sort the properties in the same way as in the
125  // root display group
126  void sortDisplayList();
127 
129  std::map<rviz::Display*, DisplayVisibilityProperty*> disp_vis_props_;
131 };
132 
133 
134 } // namespace rviz
135 
136 #endif /* DISPLAY_VISIBILITY_MANAGER_H_ */
rviz::DisplayGroupVisibilityProperty::onDisplayAdded
void onDisplayAdded(rviz::Display *display)
Definition: display_group_visibility_property.cpp:100
rviz::DisplayGroupVisibilityProperty::DisplayGroupVisibilityProperty
DisplayGroupVisibilityProperty(uint32_t vis_bit, DisplayGroup *display_group, Display *parent_display, const QString &name=QString(), bool default_value=false, const QString &description=QString(), Property *parent=nullptr)
Definition: display_group_visibility_property.cpp:46
rviz::DisplayGroupVisibilityProperty::update
void update() override
Definition: display_group_visibility_property.cpp:74
rviz::DisplayGroupVisibilityProperty::sortDisplayList
void sortDisplayList()
Definition: display_group_visibility_property.cpp:84
rviz::DisplayGroupVisibilityProperty::DisplayGroupVisibilityProperty
DisplayGroupVisibilityProperty(uint32_t vis_bit, DisplayGroup *display_group, Display *parent_display, const QString &name, bool default_value, const QString &description, P *parent, Func &&changed_slot)
Definition: display_group_visibility_property.h:95
description
description
rviz::Property::connect
QMetaObject::Connection connect(const QObject *receiver, const char *slot, Qt::ConnectionType type=Qt::AutoConnection)
Connect changed() signal to given slot of receiver.
Definition: property.cpp:78
rviz::Display
Definition: display.h:63
rviz::Property
A single element of a property tree, with a name, value, description, and possibly children.
Definition: property.h:100
display_visibility_property.h
rviz::DisplayGroupVisibilityProperty::disp_vis_props_
std::map< rviz::Display *, DisplayVisibilityProperty * > disp_vis_props_
Definition: display_group_visibility_property.h:129
rviz
Definition: add_display_dialog.cpp:54
rviz::DisplayGroupVisibilityProperty::display_group_
DisplayGroup * display_group_
Definition: display_group_visibility_property.h:128
rviz::DisplayGroupVisibilityProperty::DisplayGroupVisibilityProperty
DisplayGroupVisibilityProperty(uint32_t vis_bit, DisplayGroup *display_group, Display *parent_display, const QString &name, bool default_value, const QString &description, Property *parent, Func &&changed_slot, const R *receiver)
Definition: display_group_visibility_property.h:73
rviz::DisplayVisibilityProperty
Definition: display_visibility_property.h:55
rviz::DisplayGroupVisibilityProperty::onDisplayRemoved
void onDisplayRemoved(rviz::Display *display)
Definition: display_group_visibility_property.cpp:119
default_value
def default_value(type_)
rviz::DisplayGroupVisibilityProperty::~DisplayGroupVisibilityProperty
~DisplayGroupVisibilityProperty() override
Definition: display_group_visibility_property.cpp:132
rviz::DisplayGroupVisibilityProperty::parent_display_
Display * parent_display_
Definition: display_group_visibility_property.h:130
rviz::DisplayGroup
A Display object which stores other Displays as children.
Definition: display_group.h:47
rviz::DisplayGroupVisibilityProperty
Definition: display_group_visibility_property.h:57


rviz
Author(s): Dave Hershberger, David Gossow, Josh Faust, William Woodall
autogenerated on Tue May 28 2024 02:33:17