40 #ifndef PCL_VISUALIZER_WINDOW_H__
41 #define PCL_VISUALIZER_WINDOW_H__
50 namespace visualization
58 Window (
const std::string& window_name =
"");
74 spinOnce (
int time = 1,
bool force_redraw =
false);
86 boost::signals2::connection
90 return registerKeyboardCallback (boost::bind (callback, _1, cookie));
100 template<
typename T> boost::signals2::connection
102 T& instance,
void* cookie = NULL)
104 return registerKeyboardCallback (boost::bind (callback, boost::ref (instance), _1, cookie));
113 boost::signals2::connection
117 return registerMouseCallback (boost::bind (callback, _1, cookie));
127 template<
typename T> boost::signals2::connection
129 T& instance,
void* cookie = NULL)
131 return registerMouseCallback (boost::bind (callback, boost::ref (instance), _1, cookie));
138 resetStoppedFlag () { stopped_ =
false; }
145 boost::signals2::connection
153 boost::signals2::connection
157 emitMouseEvent (
unsigned long event_id);
160 emitKeyboardEvent (
unsigned long event_id);
164 MouseCallback (vtkObject*,
unsigned long eid,
void* clientdata,
void *calldata);
166 KeyboardCallback (vtkObject*,
unsigned long eid,
void* clientdata,
void *calldata);
169 struct ExitMainLoopTimerCallback :
public vtkCommand
171 static ExitMainLoopTimerCallback* New()
173 return (
new ExitMainLoopTimerCallback);
176 ExitMainLoopTimerCallback () : right_timer_id (), window () {}
177 ExitMainLoopTimerCallback (
const ExitMainLoopTimerCallback& src) : vtkCommand (), right_timer_id (src.right_timer_id), window (src.window) {}
178 ExitMainLoopTimerCallback& operator = (
const ExitMainLoopTimerCallback& src) { right_timer_id = src.right_timer_id; window = src.window;
return (*
this); }
181 Execute (vtkObject*,
unsigned long event_id,
void* call_data)
183 if (event_id != vtkCommand::TimerEvent)
185 int timer_id = *
static_cast<int*
> (call_data);
187 if (timer_id != right_timer_id)
189 window->interactor_->TerminateApp ();
196 struct ExitCallback :
public vtkCommand
198 static ExitCallback* New ()
200 return (
new ExitCallback);
203 ExitCallback () : window () {}
204 ExitCallback (
const ExitCallback &src) : vtkCommand (), window (src.window) {}
205 ExitCallback& operator = (
const ExitCallback &src) { window = src.window;
return (*
this); }
208 Execute (vtkObject*,
unsigned long event_id,
void*)
210 if (event_id != vtkCommand::ExitEvent)
212 window->interactor_->TerminateApp ();
213 window->stopped_ =
true;
222 boost::signals2::signal<void (const pcl::visualization::MouseEvent&)> mouse_signal_;
223 boost::signals2::signal<void (const pcl::visualization::KeyboardEvent&)> keyboard_signal_;
225 vtkSmartPointer<vtkRenderWindow> win_;
226 vtkSmartPointer<vtkRenderWindowInteractor> interactor_;
227 vtkCallbackCommand* mouse_command_;
228 vtkCallbackCommand* keyboard_command_;
230 vtkSmartPointer<PCLVisualizerInteractorStyle> style_;
232 vtkSmartPointer<vtkRendererCollection> rens_;
233 vtkSmartPointer<ExitMainLoopTimerCallback> exit_main_loop_timer_callback_;
234 vtkSmartPointer<ExitCallback> exit_callback_;