Skip to content
Snippets Groups Projects
Commit ff6abd95 authored by Fabian Reister's avatar Fabian Reister
Browse files

ArViz: scoped client that automatically cleans up layers when destroyed

parent 42dc4c2d
No related branches found
No related tags found
2 merge requests!155Feature/arviz scoped client,!154armem_robot_state: updates
This commit is part of merge request !154. Comments created here will be created in the context of that merge request.
......@@ -16,6 +16,7 @@ set(SOURCES
Client/elements/Robot.cpp
Client/elements/RobotHand.cpp
Client/drawer/ArVizDrawerBase.cpp
Client/ScopedClient.cpp
Coin/ElementVisualizer.cpp
......@@ -65,6 +66,7 @@ set(HEADERS
Client/Layer.h
Client/Elements.h
Client/Client.h
Client/ScopedClient.h
Client/ClientCGALExtensions.h
Client/Color.h
......
......@@ -51,7 +51,7 @@ namespace armarx::viz
// ////////////////////////////////////////////////////////////////// //
//layer
Layer layer(std::string const& name) const
virtual Layer layer(std::string const& name) const
{
return Layer(componentName, name);
}
......
/*
* This file is part of ArmarX.
*
* ArmarX is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* ArmarX is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @author Fabian Reister ( fabian dot reister at kit dot edu )
* @date 2021
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
* GNU General Public License
*/
#include "ScopedClient.h"
namespace armarx::viz
{
ScopedClient::ScopedClient(const Client& client) : Client(client) {}
Layer ScopedClient::layer(std::string const& name) const
{
layers.insert(name);
return Client::layer(name);
}
virtual ScopedClient::~ScopedClient()
{
for (const auto& layer : layers)
{
Client::commitDeleteLayer(layer);
}
}
} // namespace armarx::viz
\ No newline at end of file
/*
* This file is part of ArmarX.
*
* ArmarX is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* ArmarX is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @author Fabian Reister ( fabian dot reister at kit dot edu )
* @date 2021
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
* GNU General Public License
*/
#include <set>
#include "Client.h"
namespace armarx::viz
{
/**
* @brief viz::Client that will cleanup layers when destroyed.
*
*/
class ScopedClient: virtual public Client
{
public:
ScopedClient(const Client& client);
Layer layer(std::string const& name) const override;
virtual ~ScopedClient();
private:
mutable std::set<std::string> layers;
};
} // namespace armarx::viz
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment