23 #include <itkCommand.h> 26 #include <vtkCallbackCommand.h> 27 #include <vtkCamera.h> 28 #include <vtkCommand.h> 29 #include <vtkCommand.h> 30 #include <vtkImageActor.h> 31 #include <vtkImageImport.h> 32 #include <vtkMapper.h> 33 #include <vtkObjectFactory.h> 34 #include <vtkRenderWindow.h> 35 #include <vtkRenderer.h> 36 #include <vtkSmartPointer.h> 37 #include <vtkSystemIncludes.h> 40 : QObject(parent), m_QTimer(new QTimer(this)), m_VideoSource(nullptr), m_VideoSourceObserverTag(0)
68 MITK_WARN <<
"No Renderwindow or VideoSource set!";
74 vtkRenderer *videoRenderer = vtkRenderer::New();
75 vtkImageActor *videoActor = vtkImageActor::New();
76 vtkImageImport *videoImport = vtkImageImport::New();
78 videoImport->SetDataScalarTypeToUnsignedChar();
79 videoImport->SetNumberOfScalarComponents(3);
85 videoImport->SetDataExtentToWholeExtent();
94 vtkSmartPointer<vtkCallbackCommand> deleteCallback = vtkSmartPointer<vtkCallbackCommand>::New();
96 deleteCallback->SetClientData(
this);
116 if ((*it).renWin == renderWindow)
123 (*it).videoRenderer->Delete();
124 (*it).videoActor->Delete();
125 (*it).videoImport->Delete();
128 renderWindow->RemoveObserver((*it).renderWindowObserverTag);
139 if ((*it).renWin == renderWindow)
195 unsigned char *src =
nullptr;
201 catch (
const std::logic_error &error)
212 (*it).videoImport->SetImportVoidPointer(src);
213 (*it).videoImport->Modified();
214 (*it).videoImport->Update();
220 MITK_WARN <<
"No video texture available";
229 (*it).videoImport->Update();
230 (*it).videoActor->SetInputData((*it).videoImport->GetOutput());
231 (*it).videoRenderer->AddActor2D((*it).videoActor);
232 (*it).videoRenderer->ResetCamera();
233 (*it).videoRenderer->InteractiveOff();
234 (*it).videoRenderer->GetActiveCamera()->ParallelProjectionOn();
256 itk::MemberCommand<QmitkVideoBackground>::Pointer _ModifiedCommand =
257 itk::MemberCommand<QmitkVideoBackground>::New();
unsigned long m_VideoSourceObserverTag
void RemoveRenderWindow(vtkRenderWindow *renderWindow)
removes a renderwindow = disables video background there
vtkImageActor * videoActor
vtkImageImport * videoImport
void Disable()
disables visualization of the video.
QmitkVideoBackground(QObject *parent=nullptr)
void EndOfVideoSourceReached(mitk::VideoSource *)
void AddRenderWindow(vtkRenderWindow *renderWindow)
add a RenderWindow in which the video is displayed. -> must be initialized before enabling the backgr...
virtual int GetImageHeight()
static void OnRenderWindowDelete(vtkObject *, unsigned long eid, void *clientdata, void *)
vtkRenderer * videoRenderer
static VtkLayerController * GetInstance(vtkSmartPointer< vtkRenderWindow > renWin)
mitk::VideoSource * m_VideoSource
static RenderingManager * GetInstance()
unsigned long renderWindowObserverTag
bool IsEnabled()
Checks, if the Video background is currently enabled (visible).
virtual int GetImageWidth()
mitk::VideoSource * GetVideoSource()
void NewFrameAvailable(mitk::VideoSource *)
void SetVideoSource(mitk::VideoSource *videoSource)
void RequestUpdate(vtkRenderWindow *renderWindow)
void RemoveRenderer(vtkSmartPointer< vtkRenderer > renderer)
void ResetVideoBackground()
bool IsRendererInserted(vtkSmartPointer< vtkRenderer > renderer)
void SetTimerDelay(int ms)
sets the update rate of the video in milli seconds, by default 25.
virtual unsigned char * GetVideoTexture()=0
void OnVideoSourceDelete(const itk::Object *caller, const itk::EventObject &event)
~QmitkVideoBackground() override
virtual void FetchFrame()
bool IsRenderWindowIncluded(vtkRenderWindow *renderWindow)
void InsertBackgroundRenderer(vtkSmartPointer< vtkRenderer > renderer, bool forceAbsoluteBackground)
RenderWindowVectorInfoType m_renderWindowVectorInfo