| 118 | } |
| 119 | |
| 120 | void RenderingManager::AddRenderWindow(vtkRenderWindow *renderWindow) |
| 121 | { |
| 122 | if (renderWindow && (m_RenderWindowList.find(renderWindow) == m_RenderWindowList.end())) |
| 123 | { |
| 124 | m_RenderWindowList[renderWindow] = RENDERING_INACTIVE; |
| 125 | m_AllRenderWindows.push_back(renderWindow); |
| 126 | |
| 127 | if (m_DataStorage.IsNotNull()) |
| 128 | BaseRenderer::GetInstance(renderWindow)->SetDataStorage(m_DataStorage.GetPointer()); |
| 129 | |
| 130 | // Register vtkRenderWindow instance |
| 131 | renderWindow->Register(nullptr); |
| 132 | |
| 133 | // Add callbacks for rendering abort mechanism |
| 134 | // BaseRenderer *renderer = BaseRenderer::GetInstance( renderWindow ); |
| 135 | vtkCallbackCommand *startCallbackCommand = vtkCallbackCommand::New(); |
| 136 | startCallbackCommand->SetCallback(RenderingManager::RenderingStartCallback); |
| 137 | renderWindow->AddObserver(vtkCommand::StartEvent, startCallbackCommand); |
| 138 | |
| 139 | vtkCallbackCommand *progressCallbackCommand = vtkCallbackCommand::New(); |
| 140 | progressCallbackCommand->SetCallback(RenderingManager::RenderingProgressCallback); |
| 141 | renderWindow->AddObserver(vtkCommand::AbortCheckEvent, progressCallbackCommand); |
| 142 | |
| 143 | vtkCallbackCommand *endCallbackCommand = vtkCallbackCommand::New(); |
| 144 | endCallbackCommand->SetCallback(RenderingManager::RenderingEndCallback); |
| 145 | renderWindow->AddObserver(vtkCommand::EndEvent, endCallbackCommand); |
| 146 | |
| 147 | RenderWindowCallbacks callbacks; |
| 148 | |
| 149 | callbacks.commands[0u] = startCallbackCommand; |
| 150 | callbacks.commands[1u] = progressCallbackCommand; |
| 151 | callbacks.commands[2u] = endCallbackCommand; |
| 152 | this->m_RenderWindowCallbacksList[renderWindow] = callbacks; |
| 153 | |
| 154 | // Delete vtk variables correctly |
| 155 | startCallbackCommand->Delete(); |
| 156 | progressCallbackCommand->Delete(); |
| 157 | endCallbackCommand->Delete(); |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | void RenderingManager::RemoveRenderWindow(vtkRenderWindow *renderWindow) |
| 162 | { |