Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef PCL_CLOUD_VIEWER_H_
00037 #define PCL_CLOUD_VIEWER_H_
00038
00039 #include <pcl/visualization/pcl_visualizer.h>
00040 #include <pcl/point_cloud.h>
00041 #include <pcl/point_types.h>
00042
00043 #include <boost/function.hpp>
00044
00045 #include <string>
00046
00047 namespace pcl
00048 {
00049 namespace visualization
00050 {
00055 class PCL_EXPORTS CloudViewer : boost::noncopyable
00056 {
00057 public:
00058 typedef pcl::PointCloud<pcl::PointXYZRGBA> ColorACloud;
00059 typedef pcl::PointCloud<pcl::PointXYZRGB> ColorCloud;
00060 typedef pcl::PointCloud<pcl::PointXYZI> GrayCloud;
00061 typedef pcl::PointCloud<pcl::PointXYZ> MonochromeCloud;
00062
00066 CloudViewer (const std::string& window_name);
00067
00072 ~CloudViewer ();
00073
00078 void
00079 showCloud (const ColorCloud::ConstPtr &cloud, const std::string& cloudname = "cloud");
00080
00085 void
00086 showCloud (const ColorACloud::ConstPtr &cloud, const std::string& cloudname = "cloud");
00087
00092 void
00093 showCloud (const GrayCloud::ConstPtr &cloud, const std::string& cloudname = "cloud");
00094
00095
00100 void
00101 showCloud (const MonochromeCloud::ConstPtr &cloud, const std::string& cloudname = "cloud");
00102
00107 bool
00108 wasStopped (int millis_to_wait = 1);
00109
00112 typedef boost::function1<void, pcl::visualization::PCLVisualizer&> VizCallable;
00113
00118 void
00119 runOnVisualizationThread (VizCallable x, const std::string& key = "callable");
00120
00124 void
00125 runOnVisualizationThreadOnce (VizCallable x);
00126
00130 void
00131 removeVisualizationCallable (const std::string& key = "callable");
00132
00138 inline boost::signals2::connection
00139 registerKeyboardCallback (void (*callback) (const pcl::visualization::KeyboardEvent&, void*), void* cookie = NULL)
00140 {
00141 return (registerKeyboardCallback (boost::bind (callback, _1, cookie)));
00142 }
00143
00150 template<typename T> inline boost::signals2::connection
00151 registerKeyboardCallback (void (T::*callback) (const pcl::visualization::KeyboardEvent&, void*), T& instance, void* cookie = NULL)
00152 {
00153 return (registerKeyboardCallback (boost::bind (callback, boost::ref (instance), _1, cookie)));
00154 }
00155
00161 inline boost::signals2::connection
00162 registerMouseCallback (void (*callback) (const pcl::visualization::MouseEvent&, void*), void* cookie = NULL)
00163 {
00164 return (registerMouseCallback (boost::bind (callback, _1, cookie)));
00165 }
00166
00173 template<typename T> inline boost::signals2::connection
00174 registerMouseCallback (void (T::*callback) (const pcl::visualization::MouseEvent&, void*), T& instance, void* cookie = NULL)
00175 {
00176 return (registerMouseCallback (boost::bind (callback, boost::ref (instance), _1, cookie)));
00177 }
00178
00179
00185 inline boost::signals2::connection
00186 registerPointPickingCallback (void (*callback) (const pcl::visualization::PointPickingEvent&, void*), void* cookie = NULL)
00187 {
00188 return (registerPointPickingCallback (boost::bind (callback, _1, cookie)));
00189 }
00190
00197 template<typename T> inline boost::signals2::connection
00198 registerPointPickingCallback (void (T::*callback) (const pcl::visualization::PointPickingEvent&, void*), T& instance, void* cookie = NULL)
00199 {
00200 return (registerPointPickingCallback (boost::bind (callback, boost::ref (instance), _1, cookie)));
00201 }
00202
00203 private:
00205 struct CloudViewer_impl;
00206 std::auto_ptr<CloudViewer_impl> impl_;
00207
00208 boost::signals2::connection
00209 registerMouseCallback (boost::function<void (const pcl::visualization::MouseEvent&)>);
00210
00211 boost::signals2::connection
00212 registerKeyboardCallback (boost::function<void (const pcl::visualization::KeyboardEvent&)>);
00213
00214 boost::signals2::connection
00215 registerPointPickingCallback (boost::function<void (const pcl::visualization::PointPickingEvent&)>);
00216 };
00217 }
00218 }
00219
00220 #endif