Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
QmitkVideoBackground.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef QmitkVideoBackground_h
14 #define QmitkVideoBackground_h
15 
16 // MITK
18 #include <mitkVideoSource.h>
19 
20 // Qt
21 #include <QObject>
22 class QTimer;
23 
24 // vtk
25 class vtkRenderer;
26 class vtkRenderWindow;
27 class vtkImageActor;
28 class vtkImageImport;
29 class vtkActor2D;
30 class vtkVideoSizeCallback;
31 class vtkObject;
32 
46 {
47  Q_OBJECT
48 
49 public:
57  explicit QmitkVideoBackground(QObject *parent = nullptr);
58 
68  explicit QmitkVideoBackground(mitk::VideoSource *v, int TimerDelay = 25);
69 
72 
82  void AddRenderWindow(vtkRenderWindow *renderWindow);
83 
88  void RemoveRenderWindow(vtkRenderWindow *renderWindow);
89 
95  bool IsRenderWindowIncluded(vtkRenderWindow *renderWindow);
96 
101  void SetTimerDelay(int ms);
102 
107  void Enable();
108 
110  void Disable();
111 
116  bool IsEnabled();
117 
123 
129 
131  void Pause();
132 
134  void Resume();
135 
144  void SetVideoSource(mitk::VideoSource *videoSource);
145 
152  static void OnRenderWindowDelete(vtkObject *object, unsigned long eid, void *clientdata, void * /*calldata*/);
153 
159  void OnVideoSourceDelete(const itk::Object *caller, const itk::EventObject &event);
160 
161 public slots:
163  void UpdateVideo();
164 
165 signals:
171 
177 
178 protected:
184  {
185  vtkRenderWindow *renWin;
186  vtkRenderer *videoRenderer;
187  vtkImageActor *videoActor;
188  vtkImageImport *videoImport;
189  unsigned long renderWindowObserverTag;
190  };
191 
195  void RemoveRenderWindow(vtkRenderWindow *renderWindow, bool removeObserver);
200 
204  void Modified();
208  typedef std::vector<VideoBackgroundVectorInfo> RenderWindowVectorInfoType;
209 
210 protected:
215 
219  QTimer *m_QTimer;
220 
225 
230 };
231 
232 #endif
#define MITKQTWIDGETSEXT_EXPORT
Displays 3-channel video data as the background layer of vtkRenderWindows.
void SetVideoSource(mitk::VideoSource *videoSource)
Set a new video source.
bool IsEnabled()
Check whether the video background is currently enabled.
QmitkVideoBackground(mitk::VideoSource *v, int TimerDelay=25)
Construct a video background with the given video source.
void OnVideoSourceDelete(const itk::Object *caller, const itk::EventObject &event)
ITK observer callback for video source deletion events.
unsigned long m_VideoSourceObserverTag
std::vector< VideoBackgroundVectorInfo > RenderWindowVectorInfoType
bool IsRenderWindowIncluded(vtkRenderWindow *renderWindow)
Check whether a render window is currently registered.
static void OnRenderWindowDelete(vtkObject *object, unsigned long eid, void *clientdata, void *)
Static VTK callback for render window deletion events.
RenderWindowVectorInfoType m_renderWindowVectorInfo
void Disable()
Disable video background visualization and stop the update timer.
~QmitkVideoBackground() override
Destructor. Disables all video backgrounds.
mitk::VideoSource * GetVideoSource()
Get the attached video source.
void Enable()
Enable video background visualization and start the update timer.
int GetTimerDelay()
Get the current timer delay.
void UpdateVideo()
Fetch a new video frame and update all registered render windows.
mitk::VideoSource * m_VideoSource
void Pause()
Pause the video playback by stopping the update timer.
void RemoveRenderWindow(vtkRenderWindow *renderWindow, bool removeObserver)
QmitkVideoBackground(QObject *parent=nullptr)
Construct a video background with no video source.
void NewFrameAvailable(mitk::VideoSource *videoSource)
Emitted after all render windows have been updated with a new frame.
void Resume()
Resume the video playback by restarting the update timer.
void EndOfVideoSourceReached(mitk::VideoSource *videoSource)
Emitted when the video source reaches the end of its stream.
void AddRenderWindow(vtkRenderWindow *renderWindow)
Add a render window in which the video is displayed.
void RemoveRenderWindow(vtkRenderWindow *renderWindow)
Remove a render window and disable video background in it.
void SetTimerDelay(int ms)
Set the video refresh interval.
Abstract base class for acquiring video frame data.