removeAllWidgets implementation, removed other remove methods

This commit is contained in:
ozantonkal 2013-08-22 19:04:42 +02:00 committed by Ozan Tonkal
parent e106dcc606
commit 0bbaf5d47a
4 changed files with 7 additions and 112 deletions

View File

@ -37,6 +37,7 @@ namespace cv
void showWidget(const String &id, const Widget &widget, const Affine3f &pose = Affine3f::Identity()); void showWidget(const String &id, const Widget &widget, const Affine3f &pose = Affine3f::Identity());
void removeWidget(const String &id); void removeWidget(const String &id);
Widget getWidget(const String &id) const; Widget getWidget(const String &id) const;
void removeAllWidgets();
void setWidgetPose(const String &id, const Affine3f &pose); void setWidgetPose(const String &id, const Affine3f &pose);
void updateWidgetPose(const String &id, const Affine3f &pose); void updateWidgetPose(const String &id, const Affine3f &pose);

View File

@ -79,6 +79,7 @@ void cv::viz::Viz3d::registerMouseCallback(MouseCallback callback, void* cookie)
void cv::viz::Viz3d::showWidget(const String &id, const Widget &widget, const Affine3f &pose) { impl_->showWidget(id, widget, pose); } void cv::viz::Viz3d::showWidget(const String &id, const Widget &widget, const Affine3f &pose) { impl_->showWidget(id, widget, pose); }
void cv::viz::Viz3d::removeWidget(const String &id) { impl_->removeWidget(id); } void cv::viz::Viz3d::removeWidget(const String &id) { impl_->removeWidget(id); }
cv::viz::Widget cv::viz::Viz3d::getWidget(const String &id) const { return impl_->getWidget(id); } cv::viz::Widget cv::viz::Viz3d::getWidget(const String &id) const { return impl_->getWidget(id); }
void cv::viz::Viz3d::removeAllWidgets() { impl_->removeAllWidgets(); }
void cv::viz::Viz3d::setWidgetPose(const String &id, const Affine3f &pose) { impl_->setWidgetPose(id, pose); } void cv::viz::Viz3d::setWidgetPose(const String &id, const Affine3f &pose) { impl_->setWidgetPose(id, pose); }
void cv::viz::Viz3d::updateWidgetPose(const String &id, const Affine3f &pose) { impl_->updateWidgetPose(id, pose); } void cv::viz::Viz3d::updateWidgetPose(const String &id, const Affine3f &pose) { impl_->updateWidgetPose(id, pose); }
cv::Affine3f cv::viz::Viz3d::getWidgetPose(const String &id) const { return impl_->getWidgetPose(id); } cv::Affine3f cv::viz::Viz3d::getWidgetPose(const String &id) const { return impl_->getWidgetPose(id); }

View File

@ -128,104 +128,13 @@ void cv::viz::Viz3d::VizImpl::spinOnce (int time, bool force_redraw)
} }
} }
///////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removePointCloud (const std::string &id) void cv::viz::Viz3d::VizImpl::removeAllWidgets()
{ {
CloudActorMap::iterator am_it = cloud_actor_map_->find (id); widget_actor_map_->clear();
if (am_it == cloud_actor_map_->end ()) renderer_->RemoveAllViewProps();
return false;
if (removeActorFromRenderer (am_it->second.actor))
return cloud_actor_map_->erase (am_it), true;
return false;
} }
/////////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removeShape (const std::string &id)
{
// Check to see if the given ID entry exists
ShapeActorMap::iterator am_it = shape_actor_map_->find (id);
// Extra step: check if there is a cloud with the same ID
CloudActorMap::iterator ca_it = cloud_actor_map_->find (id);
bool shape = true;
// Try to find a shape first
if (am_it == shape_actor_map_->end ())
{
// There is no cloud or shape with this ID, so just exit
if (ca_it == cloud_actor_map_->end ())
return false;
// Cloud found, set shape to false
shape = false;
}
// Remove the pointer/ID pair to the global actor map
if (shape)
{
if (removeActorFromRenderer (am_it->second))
{
shape_actor_map_->erase (am_it);
return (true);
}
}
else
{
if (removeActorFromRenderer (ca_it->second.actor))
{
cloud_actor_map_->erase (ca_it);
return true;
}
}
return false;
}
/////////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removeText3D (const std::string &id)
{
// Check to see if the given ID entry exists
ShapeActorMap::iterator am_it = shape_actor_map_->find (id);
if (am_it == shape_actor_map_->end ())
return false;
// Remove it from all renderers
if (removeActorFromRenderer (am_it->second))
return shape_actor_map_->erase (am_it), true;
return false;
}
/////////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removeAllPointClouds ()
{
// Check to see if the given ID entry exists
CloudActorMap::iterator am_it = cloud_actor_map_->begin ();
while (am_it != cloud_actor_map_->end () )
{
if (removePointCloud (am_it->first))
am_it = cloud_actor_map_->begin ();
else
++am_it;
}
return (true);
}
/////////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removeAllShapes ()
{
// Check to see if the given ID entry exists
ShapeActorMap::iterator am_it = shape_actor_map_->begin ();
while (am_it != shape_actor_map_->end ())
{
if (removeShape (am_it->first))
am_it = shape_actor_map_->begin ();
else
++am_it;
}
return (true);
}
////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////
bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkLODActor> &actor) bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer (const vtkSmartPointer<vtkLODActor> &actor)
{ {

View File

@ -17,23 +17,7 @@ public:
VizImpl (const String &name); VizImpl (const String &name);
virtual ~VizImpl (); virtual ~VizImpl ();
void removeAllWidgets();
//to refactor
bool removePointCloud (const String& id = "cloud");
inline bool removePolygonMesh (const String& id = "polygon") { return removePointCloud (id); }
bool removeShape (const String& id = "cloud");
bool removeText3D (const String& id = "cloud");
bool removeAllPointClouds ();
//create Viz3d::removeAllWidgets()
bool removeAllShapes ();
//to refactor //to refactor
bool addPolygonMesh (const Mesh3d& mesh, const cv::Mat& mask, const String& id = "polygon"); bool addPolygonMesh (const Mesh3d& mesh, const cv::Mat& mask, const String& id = "polygon");