From 8c77408c15d9fa3a16e0c7356914e798a6fd8551 Mon Sep 17 00:00:00 2001 From: frozar Date: Tue, 5 Dec 2017 13:41:30 +0100 Subject: [PATCH 1/5] [VISU] Review from SergioRAgostinho. --- .../pcl/visualization/impl/pcl_visualizer.hpp | 31 ++++++++++++++----- visualization/src/pcl_visualizer.cpp | 12 +++++-- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/visualization/include/pcl/visualization/impl/pcl_visualizer.hpp b/visualization/include/pcl/visualization/impl/pcl_visualizer.hpp index 41805a0c31d..e615b11f779 100644 --- a/visualization/include/pcl/visualization/impl/pcl_visualizer.hpp +++ b/visualization/include/pcl/visualization/impl/pcl_visualizer.hpp @@ -672,10 +672,18 @@ pcl::visualization::PCLVisualizer::addText3D ( if (viewport < 0) return false; + // If there is no custom viewport and the viewport number is not 0, exit + if (rens_->GetNumberOfItems () <= viewport) + { + PCL_ERROR ("[addText3D] The viewport [%d] doesn't exist (id <%s>)! ", + viewport, + tid.c_str ()); + return false; + } + // check all or an individual viewport for a similar id rens_->InitTraversal (); - rens_->GetNextItem (); //discard first because it's not a renderer for the viewps - for (size_t i = std::max (viewport, 1); rens_->GetNextItem () != NULL; ++i) + for (size_t i = viewport; rens_->GetNextItem () != NULL; ++i) { const std::string uid = tid + std::string (i, '*'); if (contains (uid)) @@ -700,8 +708,8 @@ pcl::visualization::PCLVisualizer::addText3D ( // Since each follower may follow a different camera, we need different followers rens_->InitTraversal (); - vtkRenderer* renderer = rens_->GetNextItem (); //discard first because it's not a renderer for the viewps - int i = 1; + vtkRenderer* renderer; + int i = 0; while ((renderer = rens_->GetNextItem ()) != NULL) { // Should we add the actor to all renderers or just to i-nth renderer? @@ -751,10 +759,18 @@ pcl::visualization::PCLVisualizer::addText3D ( if (viewport < 0) return false; + // If there is no custom viewport and the viewport number is not 0, exit + if (rens_->GetNumberOfItems () <= viewport) + { + PCL_ERROR ("[addText3D] The viewport [%d] doesn't exist (id <%s>)! ", + viewport, + tid.c_str ()); + return false; + } + // check all or an individual viewport for a similar id rens_->InitTraversal (); - rens_->GetNextItem (); //discard first because it's not a renderer for the viewps - for (size_t i = std::max (viewport, 1); rens_->GetNextItem () != NULL; ++i) + for (size_t i = viewport; rens_->GetNextItem () != NULL; ++i) { const std::string uid = tid + std::string (i, '*'); if (contains (uid)) @@ -786,8 +802,7 @@ pcl::visualization::PCLVisualizer::addText3D ( // Save the pointer/ID pair to the global actor map. If we are saving multiple vtkFollowers rens_->InitTraversal (); - rens_->GetNextItem (); //discard first because it's not a renderer for the viewps - int i = 1; + int i = 0; for ( vtkRenderer* renderer = rens_->GetNextItem (); renderer != NULL; renderer = rens_->GetNextItem (), ++i) diff --git a/visualization/src/pcl_visualizer.cpp b/visualization/src/pcl_visualizer.cpp index 5ba1fdb0ba5..192f422deb5 100644 --- a/visualization/src/pcl_visualizer.cpp +++ b/visualization/src/pcl_visualizer.cpp @@ -899,10 +899,18 @@ pcl::visualization::PCLVisualizer::removeText3D (const std::string &id, int view bool success = true; + // If there is no custom viewport and the viewport number is not 0, exit + if (rens_->GetNumberOfItems () <= viewport) + { + PCL_ERROR ("[addText3D] The viewport [%d] doesn't exist (id <%s>)! ", + viewport, + id.c_str ()); + return false; + } + // check all or an individual viewport for a similar id rens_->InitTraversal (); - rens_->GetNextItem (); //discard first because it's not a renderer for the viewps - for (size_t i = std::max (viewport, 1); rens_->GetNextItem () != NULL; ++i) + for (size_t i = viewport; rens_->GetNextItem () != NULL; ++i) { const std::string uid = id + std::string (i, '*'); ShapeActorMap::iterator am_it = shape_actor_map_->find (uid); From c3991a1c5f03f3fb4c999459d383e56568ecfdc2 Mon Sep 17 00:00:00 2001 From: frozar Date: Mon, 4 Dec 2017 20:17:58 +0100 Subject: [PATCH 2/5] [TEST] Uncomment some test for visualisation. --- visualization/test/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/visualization/test/CMakeLists.txt b/visualization/test/CMakeLists.txt index c503e3b231b..3ef5250cc5d 100644 --- a/visualization/test/CMakeLists.txt +++ b/visualization/test/CMakeLists.txt @@ -6,8 +6,8 @@ #target_link_libraries(test_geometry pcl_common pcl_features pcl_filters pcl_io pcl_kdtree pcl_visualization) #add_test(vis_test_geometry test_geometry) -#add_executable(demo_shapes test_shapes.cpp) -#target_link_libraries(demo_shapes pcl_common pcl_io pcl_kdtree pcl_visualization) +add_executable(demo_shapes test_shapes.cpp) +target_link_libraries(demo_shapes pcl_common pcl_io pcl_kdtree pcl_visualization) -#add_executable(demo_shapes_multiport test_shapes_multiport.cpp) -#target_link_libraries(demo_shapes_multiport pcl_common pcl_io pcl_kdtree pcl_visualization) +add_executable(demo_shapes_multiport test_shapes_multiport.cpp) +target_link_libraries(demo_shapes_multiport pcl_common pcl_io pcl_kdtree pcl_visualization) From 8c0520483953e2d8f8a0173e95712c4336670375 Mon Sep 17 00:00:00 2001 From: frozar Date: Mon, 4 Dec 2017 20:19:44 +0100 Subject: [PATCH 3/5] [TEST] Add the test demo_text_simple. --- visualization/test/CMakeLists.txt | 3 +++ visualization/test/text_simple.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 visualization/test/text_simple.cpp diff --git a/visualization/test/CMakeLists.txt b/visualization/test/CMakeLists.txt index 3ef5250cc5d..7f9b3af7034 100644 --- a/visualization/test/CMakeLists.txt +++ b/visualization/test/CMakeLists.txt @@ -11,3 +11,6 @@ target_link_libraries(demo_shapes pcl_common pcl_io pcl_kdtree pcl_visualization add_executable(demo_shapes_multiport test_shapes_multiport.cpp) target_link_libraries(demo_shapes_multiport pcl_common pcl_io pcl_kdtree pcl_visualization) + +add_executable(demo_text_simple text_simple.cpp) +target_link_libraries(demo_text_simple pcl_common pcl_visualization) diff --git a/visualization/test/text_simple.cpp b/visualization/test/text_simple.cpp new file mode 100644 index 00000000000..e2b52815d64 --- /dev/null +++ b/visualization/test/text_simple.cpp @@ -0,0 +1,24 @@ +#include + +#include + +int +main (int argc, char** argv) +{ + pcl::visualization::PCLVisualizer viz ("Visualizator"); + viz.addCoordinateSystem(1.0); + + viz.addText3D ("Following text", pcl::PointXYZ(0.0, 0.0, 0.0), + 1.0, 1.0, 0.0, 0.0, "id_following"); + viz.spin (); + double orientation[3] = {0., 0., 0.}; + viz.addText3D ("Fixed text", pcl::PointXYZ(0.0, 0.0, 0.0), orientation, + 1.0, 0.0, 1.0, 0.0, "id_fixed"); + viz.spin (); + viz.removeText3D ("id_following"); + viz.spin (); + viz.removeText3D ("id_fixed"); + viz.spin (); + + return (0); +} From 6d1439823877dc813ffcf91f1a6ce06563a55ff5 Mon Sep 17 00:00:00 2001 From: frozar Date: Mon, 4 Dec 2017 20:10:22 +0100 Subject: [PATCH 4/5] [TEST] Add the test demo_text_simple_multiport. --- visualization/test/CMakeLists.txt | 3 ++ visualization/test/text_simple_multiport.cpp | 30 ++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 visualization/test/text_simple_multiport.cpp diff --git a/visualization/test/CMakeLists.txt b/visualization/test/CMakeLists.txt index 7f9b3af7034..43cf1dbdfa9 100644 --- a/visualization/test/CMakeLists.txt +++ b/visualization/test/CMakeLists.txt @@ -14,3 +14,6 @@ target_link_libraries(demo_shapes_multiport pcl_common pcl_io pcl_kdtree pcl_vis add_executable(demo_text_simple text_simple.cpp) target_link_libraries(demo_text_simple pcl_common pcl_visualization) + +add_executable(demo_text_simple_multiport text_simple_multiport.cpp) +target_link_libraries(demo_text_simple_multiport pcl_common pcl_visualization) diff --git a/visualization/test/text_simple_multiport.cpp b/visualization/test/text_simple_multiport.cpp new file mode 100644 index 00000000000..90606797f28 --- /dev/null +++ b/visualization/test/text_simple_multiport.cpp @@ -0,0 +1,30 @@ +#include + +#include + +int +main (int argc, char** argv) +{ + pcl::visualization::PCLVisualizer viz ("Visualizator"); + int leftPort(0); + int rightPort(0); + + viz.createViewPort(0, 0, 0.5, 1, leftPort); + viz.createViewPort(0.5, 0, 1, 1, rightPort); + + viz.addCoordinateSystem(1.0); + + viz.addText3D ("Following text", pcl::PointXYZ(0.0, 0.0, 0.0), + 1.0, 1.0, 0.0, 0.0, "id_following", leftPort); + viz.spin (); + double orientation[3] = {0., 0., 0.}; + viz.addText3D ("Fixed text", pcl::PointXYZ(0.0, 0.0, 0.0), orientation, + 1.0, 0.0, 1.0, 0.0, "id_fixed", rightPort); + viz.spin (); + viz.removeText3D ("id_following", leftPort); + viz.spin (); + viz.removeText3D ("id_fixed", rightPort); + viz.spin (); + + return (0); +} From 5a228f6c703e61f7b5a52600ebb1d0d87d86c6e7 Mon Sep 17 00:00:00 2001 From: frozar Date: Tue, 5 Dec 2017 14:41:06 +0100 Subject: [PATCH 5/5] [CODING_STYLE] Add spaces. --- visualization/test/text_simple.cpp | 2 +- visualization/test/text_simple_multiport.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/visualization/test/text_simple.cpp b/visualization/test/text_simple.cpp index e2b52815d64..9b6c45e81b4 100644 --- a/visualization/test/text_simple.cpp +++ b/visualization/test/text_simple.cpp @@ -6,7 +6,7 @@ int main (int argc, char** argv) { pcl::visualization::PCLVisualizer viz ("Visualizator"); - viz.addCoordinateSystem(1.0); + viz.addCoordinateSystem (1.0); viz.addText3D ("Following text", pcl::PointXYZ(0.0, 0.0, 0.0), 1.0, 1.0, 0.0, 0.0, "id_following"); diff --git a/visualization/test/text_simple_multiport.cpp b/visualization/test/text_simple_multiport.cpp index 90606797f28..ebffcd6212e 100644 --- a/visualization/test/text_simple_multiport.cpp +++ b/visualization/test/text_simple_multiport.cpp @@ -6,13 +6,13 @@ int main (int argc, char** argv) { pcl::visualization::PCLVisualizer viz ("Visualizator"); - int leftPort(0); - int rightPort(0); + int leftPort (0); + int rightPort (0); - viz.createViewPort(0, 0, 0.5, 1, leftPort); - viz.createViewPort(0.5, 0, 1, 1, rightPort); + viz.createViewPort (0, 0, 0.5, 1, leftPort); + viz.createViewPort (0.5, 0, 1, 1, rightPort); - viz.addCoordinateSystem(1.0); + viz.addCoordinateSystem (1.0); viz.addText3D ("Following text", pcl::PointXYZ(0.0, 0.0, 0.0), 1.0, 1.0, 0.0, 0.0, "id_following", leftPort);