7 #include "imstkAbstractVTKViewer.h" 8 #include "imstkLogger.h" 9 #include "imstkScene.h" 10 #include "imstkVTKInteractorStyle.h" 11 #include "imstkVTKRenderer.h" 13 #include <vtkCallbackCommand.h> 14 #include <vtkFileOutputWindow.h> 15 #include <vtkOpenGLRenderWindow.h> 16 #include <vtkRenderer.h> 17 #include <vtkRenderWindow.h> 18 #include <vtkRenderWindowInteractor.h> 24 vtkObject* vtkNotUsed(sender),
unsigned long eventId,
25 void* clientData,
void* vtkNotUsed(callData))
27 AbstractVTKViewer* viewer =
static_cast<AbstractVTKViewer*
>(clientData);
29 && eventId == vtkCommand::ExitEvent)
32 viewer->postEvent(Event(Module::end()));
36 AbstractVTKViewer::AbstractVTKViewer(std::string name) :
Viewer(name)
49 if (m_vtkRenderWindow != NULL)
51 m_vtkRenderWindow->SetSize(width, height);
58 m_useVsync = useVsync;
59 if (
auto glRenWin = vtkOpenGLRenderWindow::SafeDownCast(m_vtkRenderWindow))
61 glRenWin->SetSwapControl(static_cast<int>(useVsync));
68 m_config->m_windowName = title;
69 if (m_vtkRenderWindow)
71 m_vtkRenderWindow->SetWindowName(title.c_str());
80 LOG(WARNING) <<
"Must set active scene before setting background color";
83 this->
getActiveRenderer()->updateBackground(Vec3d(color1.r, color1.g, color1.b), Vec3d(color2.r, color2.g, color2.b), gradientBackground);
89 m_vtkRenderWindow->GetInteractor()->ProcessEvents();
95 if (loggerMode == VTKLoggerMode::SHOW)
97 vtkObject::GlobalWarningDisplayOn();
99 else if (loggerMode == VTKLoggerMode::MUTE)
101 vtkObject::GlobalWarningDisplayOff();
103 else if (loggerMode == VTKLoggerMode::WRITE)
105 vtkObject::GlobalWarningDisplayOn();
108 vtkNew<vtkFileOutputWindow> fileOutputWindow;
109 fileOutputWindow->SetFileName(
"vtkOutput.log");
110 vtkOutputWindow::SetInstance(fileOutputWindow);
115 AbstractVTKViewer::initModule()
117 exitCallback = vtkSmartPointer<vtkCallbackCommand>::New();
118 exitCallback->SetCallback(exitCallbackFunc);
119 exitCallback->SetClientData(
this);
120 m_vtkRenderWindow->GetInteractor()->AddObserver(vtkCommand::ExitEvent, exitCallback);
125 AbstractVTKViewer::uninitModule()
127 auto iren = m_vtkRenderWindow->GetInteractor();
130 iren->TerminateApp();
131 iren->ProcessEvents();
132 m_vtkRenderWindow->Finalize();
135 std::shared_ptr<VTKRenderer>
void processEvents() override
Processes VTK events, includes OS events.
virtual void setBackgroundColors(const Color color1, const Color color2=Color(0.0, 0.0, 0.0), const bool gradientBackground=false) override
Set the coloring of the screen background If 'gradientBackground' is false or not supplied color1 wil...
void setUseVsync(const bool useVsync) override
Set whether to vertical sync. Sync framerate to the refresh of the monitor.
std::shared_ptr< Scene > getActiveScene() const
Get scene currently being rendered.
Renderer::Mode getRenderingMode() const override
Get the current renderer mode.
std::shared_ptr< Renderer > getActiveRenderer() const
Retrieve the renderer associated with the current scene.
Base class for viewer that manages render window and the renderers /// Creates backend-specific rende...
Mode
Enumerations for the render mode.
void setVtkLoggerMode(VTKLoggerMode loggerMode)
Set the logger mode.
void setSize(const int width, const int height) override
Set the render window size.
std::shared_ptr< VTKRenderer > getActiveVtkRenderer() const
Retrieve the renderer associated with the current scene.
void setWindowTitle(const std::string &title) override
Set the render window title.