00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef _Qmitk_Video_Background_h_ 00019 #define _Qmitk_Video_Background_h_ 00020 00021 #include "mitkVideoSource.h" 00022 #include "QmitkExtExports.h" 00023 00024 // Q-Timer 00025 #include "qobject.h" 00026 class QTimer; 00027 class QTime; 00028 00029 class vtkRenderer; 00030 class vtkRenderWindow; 00031 class vtkImageActor; 00032 class vtkImageImport; 00033 class vtkActor2D; 00034 class vtkVideoSizeCallback; 00035 00036 00037 namespace mitk 00038 { 00039 00040 struct VideoBackgroundVectorInfo 00041 { 00042 vtkRenderWindow* renWin; 00043 vtkRenderer* videoRenderer; 00044 vtkImageActor* videoActor; 00045 vtkImageImport* videoImport; 00046 }; 00047 00048 } 00049 00058 class QmitkExt_EXPORT QmitkVideoBackground : public QObject 00059 { 00060 Q_OBJECT 00061 00062 public: 00063 QmitkVideoBackground(mitk::VideoSource* v, int TimerDelay = 25); // TimerDelay = refresh rate of video in ms. 00064 ~QmitkVideoBackground(); 00065 00069 void AddRenderWindow(vtkRenderWindow* renderWindow); 00070 void RemoveRenderWindow(vtkRenderWindow* renderWindow); 00071 bool IsRenderWindowIncluded(vtkRenderWindow* renderWindow); 00072 00075 void SetTimerDelay(int ms) 00076 { 00077 m_TimerDelay = ms; 00078 ResetVideoBackground(); 00079 } 00082 void Enable(); 00085 void Disable(); 00088 bool IsEnabled(); 00089 00093 mitk::VideoSource* GetVideoSource() { return m_VideoSource; } 00097 int GetTimerDelay() { return m_TimerDelay; } 00098 00099 public slots: 00100 void UpdateVideo(); 00101 signals: 00102 void NewFrameAvailable(mitk::VideoSource*); 00103 00104 protected: 00105 void ResetVideoBackground(); 00106 00107 void Modified(); 00108 00109 typedef std::vector<mitk::VideoBackgroundVectorInfo> RenderWindowVectorInfoType; 00110 RenderWindowVectorInfoType m_renderWindowVectorInfo; 00111 00112 //for framegrabbing 00113 QTimer* m_QTimer; 00114 00115 //VideoSource 00116 mitk::VideoSource* m_VideoSource; 00117 00118 int m_TimerDelay; 00119 }; 00120 00121 #endif 00122