/////////////////////////////////////////////////////////////////////////////////////
| 54 | |
| 55 | ////////////////////////////////////////////////////////////////////////////////////////// |
| 56 | pcl::visualization::ImageViewer::ImageViewer (const std::string& window_title) |
| 57 | : interactor_ (vtkSmartPointer <vtkRenderWindowInteractor>::Take (vtkRenderWindowInteractorFixNew ())) |
| 58 | , mouse_command_ (vtkSmartPointer<vtkCallbackCommand>::New ()) |
| 59 | , keyboard_command_ (vtkSmartPointer<vtkCallbackCommand>::New ()) |
| 60 | , win_ (vtkSmartPointer<vtkRenderWindow>::New ()) |
| 61 | , ren_ (vtkSmartPointer<vtkRenderer>::New ()) |
| 62 | , slice_ (vtkSmartPointer<vtkImageSlice>::New ()) |
| 63 | , interactor_style_ (vtkSmartPointer<ImageViewerInteractorStyle>::New ()) |
| 64 | , |
| 65 | algo_ (vtkSmartPointer<vtkImageFlip>::New ()) |
| 66 | { |
| 67 | // Prepare for image flip |
| 68 | algo_->SetInterpolationModeToCubic (); |
| 69 | algo_->PreserveImageExtentOn (); |
| 70 | algo_->FlipAboutOriginOn (); |
| 71 | algo_->SetFilteredAxis (1); |
| 72 | |
| 73 | // blend_->SetBlendModeToNormal (); |
| 74 | // blend_->SetNumberOfThreads (1); |
| 75 | |
| 76 | // Set the mouse/keyboard callbacks |
| 77 | mouse_command_->SetClientData (this); |
| 78 | mouse_command_->SetCallback (ImageViewer::MouseCallback); |
| 79 | |
| 80 | keyboard_command_->SetClientData (this); |
| 81 | keyboard_command_->SetCallback (ImageViewer::KeyboardCallback); |
| 82 | |
| 83 | // Create our own interactor and set the window title |
| 84 | win_->SetSize (640, 480); |
| 85 | win_->AddRenderer (ren_); |
| 86 | win_->SetWindowName (window_title.c_str ()); |
| 87 | interactor_->SetRenderWindow (win_); |
| 88 | |
| 89 | vtkSmartPointer<vtkImageData> empty_image = vtkSmartPointer<vtkImageData>::New (); |
| 90 | vtkSmartPointer<vtkImageSliceMapper> map = vtkSmartPointer<vtkImageSliceMapper>::New (); |
| 91 | map->SetInputData (empty_image); |
| 92 | slice_->SetMapper (map); |
| 93 | ren_->AddViewProp (slice_); |
| 94 | ren_->GetActiveCamera ()->ParallelProjectionOn (); |
| 95 | interactor_->SetInteractorStyle (interactor_style_); |
| 96 | |
| 97 | // Initialize and create timer |
| 98 | interactor_->Initialize (); |
| 99 | timer_id_ = interactor_->CreateRepeatingTimer (0); |
| 100 | |
| 101 | // Set the exit callbacks |
| 102 | exit_main_loop_timer_callback_ = vtkSmartPointer<ExitMainLoopTimerCallback>::New (); |
| 103 | exit_main_loop_timer_callback_->window = this; |
| 104 | exit_main_loop_timer_callback_->right_timer_id = -1; |
| 105 | interactor_->AddObserver (vtkCommand::TimerEvent, exit_main_loop_timer_callback_); |
| 106 | |
| 107 | exit_callback_ = vtkSmartPointer<ExitCallback>::New (); |
| 108 | exit_callback_->window = this; |
| 109 | interactor_->AddObserver (vtkCommand::ExitEvent, exit_callback_); |
| 110 | |
| 111 | // Reset camera (flip it vertically) |
| 112 | resetStoppedFlag (); |
| 113 |
nothing calls this directly
no test coverage detected