Medical Imaging Interaction Toolkit  2018.4.99-389bf124
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 _Qmitk_Video_Background_h_
14 #define _Qmitk_Video_Background_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 
42 {
43  Q_OBJECT
44 
45 public:
50  explicit QmitkVideoBackground(QObject *parent = nullptr);
58  explicit QmitkVideoBackground(mitk::VideoSource *v, int TimerDelay = 25);
62  ~QmitkVideoBackground() override;
63 
74  void AddRenderWindow(vtkRenderWindow *renderWindow);
78  void RemoveRenderWindow(vtkRenderWindow *renderWindow);
83  bool IsRenderWindowIncluded(vtkRenderWindow *renderWindow);
84 
88  void SetTimerDelay(int ms);
92  void Enable();
96  void Disable();
100  bool IsEnabled();
101 
105  mitk::VideoSource *GetVideoSource();
109  int GetTimerDelay();
113  void Pause();
117  void Resume();
118 
123  void SetVideoSource(mitk::VideoSource *videoSource);
124 
128  static void OnRenderWindowDelete(vtkObject *, unsigned long eid, void *clientdata, void * /*calldata*/);
129 
133  void OnVideoSourceDelete(const itk::Object *caller, const itk::EventObject &event);
134 public slots:
139  void UpdateVideo();
140 signals:
145  void NewFrameAvailable(mitk::VideoSource *);
146 
147  void EndOfVideoSourceReached(mitk::VideoSource *);
148 
149 protected:
155  {
156  vtkRenderWindow *renWin;
157  vtkRenderer *videoRenderer;
158  vtkImageActor *videoActor;
159  vtkImageImport *videoImport;
160  unsigned long renderWindowObserverTag;
161  };
162 
166  void RemoveRenderWindow(vtkRenderWindow *renderWindow, bool removeObserver);
170  void ResetVideoBackground();
171 
175  void Modified();
179  typedef std::vector<VideoBackgroundVectorInfo> RenderWindowVectorInfoType;
180 
181 protected:
185  RenderWindowVectorInfoType m_renderWindowVectorInfo;
186 
190  QTimer *m_QTimer;
191 
196 
201 };
202 
203 #endif
unsigned long m_VideoSourceObserverTag
std::vector< VideoBackgroundVectorInfo > RenderWindowVectorInfoType
#define MITKQTWIDGETSEXT_EXPORT
mitk::VideoSource * m_VideoSource
RenderWindowVectorInfoType m_renderWindowVectorInfo