#include <QmitkVideoBackground.h>
Public Slots | |
void | UpdateVideo () |
Signals | |
void | NewFrameAvailable (mitk::VideoSource *) |
Public Member Functions | |
QmitkVideoBackground (mitk::VideoSource *v, int TimerDelay=25) | |
~QmitkVideoBackground () | |
void | AddRenderWindow (vtkRenderWindow *renderWindow) |
void | RemoveRenderWindow (vtkRenderWindow *renderWindow) |
bool | IsRenderWindowIncluded (vtkRenderWindow *renderWindow) |
void | SetTimerDelay (int ms) |
void | Enable () |
void | Disable () |
bool | IsEnabled () |
mitk::VideoSource * | GetVideoSource () |
int | GetTimerDelay () |
Protected Types | |
typedef std::vector < mitk::VideoBackgroundVectorInfo > | RenderWindowVectorInfoType |
Protected Member Functions | |
void | ResetVideoBackground () |
void | Modified () |
Protected Attributes | |
RenderWindowVectorInfoType | m_renderWindowVectorInfo |
QTimer * | m_QTimer |
mitk::VideoSource * | m_VideoSource |
int | m_TimerDelay |
Displays a video in the background of one or more vtkRenderWindow(s). The video is provided by a mitkVideoSource / GetVideoTexture(). Caution: As the texture data is not being copied, the user is responsible for a valid pointer to the data. Also the image dimensions needs to be set correctly before enabling the background.
Definition at line 58 of file QmitkVideoBackground.h.
typedef std::vector<mitk::VideoBackgroundVectorInfo> QmitkVideoBackground::RenderWindowVectorInfoType [protected] |
Definition at line 109 of file QmitkVideoBackground.h.
QmitkVideoBackground::QmitkVideoBackground | ( | mitk::VideoSource * | v, |
int | TimerDelay = 25 |
||
) |
Definition at line 36 of file QmitkVideoBackground.cpp.
References m_TimerDelay, m_VideoSource, and ResetVideoBackground().
{ m_VideoSource = v; m_TimerDelay = TimerDelay; ResetVideoBackground(); }
QmitkVideoBackground::~QmitkVideoBackground | ( | ) |
Definition at line 50 of file QmitkVideoBackground.cpp.
References Disable(), IsEnabled(), and m_renderWindowVectorInfo.
{ if ( m_renderWindowVectorInfo.size() > 0 ) if ( this->IsEnabled() ) this->Disable(); }
void QmitkVideoBackground::AddRenderWindow | ( | vtkRenderWindow * | renderWindow ) |
Sets the renderwindow, in which the Video background will be shown. Make sure, you have called this function before calling Enable()
Definition at line 61 of file QmitkVideoBackground.cpp.
References mitk::VideoSource::FetchFrame(), mitk::VideoSource::GetImageHeight(), mitk::VideoSource::GetImageWidth(), m_renderWindowVectorInfo, m_VideoSource, Modified(), RemoveRenderWindow(), mitk::VideoBackgroundVectorInfo::renWin, mitk::VideoBackgroundVectorInfo::videoActor, mitk::VideoBackgroundVectorInfo::videoImport, and mitk::VideoBackgroundVectorInfo::videoRenderer.
Referenced by QmitkOpenCVVideoControls::on_PlayButton_clicked().
{ RemoveRenderWindow(renderWindow); vtkRenderer* videoRenderer = vtkRenderer::New(); vtkImageActor* videoActor = vtkImageActor::New(); vtkImageImport* videoImport = vtkImageImport::New(); videoImport->SetDataScalarTypeToUnsignedChar(); videoImport->SetNumberOfScalarComponents(3); if(m_VideoSource->GetImageWidth() == 0) m_VideoSource->FetchFrame(); videoImport->SetWholeExtent(0,m_VideoSource->GetImageWidth()-1,0,m_VideoSource->GetImageHeight()-1,0,1-1); videoImport->SetDataExtentToWholeExtent(); mitk::VideoBackgroundVectorInfo v; v.renWin = renderWindow; v.videoRenderer = videoRenderer; v.videoActor = videoActor; v.videoImport = videoImport; m_renderWindowVectorInfo.push_back(v); Modified(); }
void QmitkVideoBackground::Disable | ( | ) |
Disables drawing of the color Video background. If you want to enable it, call the Enable() function.
Definition at line 136 of file QmitkVideoBackground.cpp.
References IsEnabled(), and m_QTimer.
Referenced by QmitkOpenCVVideoControls::Stop(), and ~QmitkVideoBackground().
void QmitkVideoBackground::Enable | ( | ) |
Enables drawing of the color Video background. If you want to disable it, call the Disable() function.
Definition at line 124 of file QmitkVideoBackground.cpp.
References m_QTimer, m_TimerDelay, Modified(), and UpdateVideo().
Referenced by QmitkOpenCVVideoControls::on_PlayButton_clicked().
{ UpdateVideo(); Modified(); m_QTimer->start(m_TimerDelay); }
int QmitkVideoBackground::GetTimerDelay | ( | ) | [inline] |
Returns the timer delay
Definition at line 97 of file QmitkVideoBackground.h.
Referenced by QmitkOpenCVVideoControls::SetVideoBackground().
{ return m_TimerDelay; }
mitk::VideoSource* QmitkVideoBackground::GetVideoSource | ( | ) | [inline] |
Returns the videosource attached to this background
Definition at line 93 of file QmitkVideoBackground.h.
Referenced by QmitkOpenCVVideoControls::SetVideoBackground().
{ return m_VideoSource; }
bool QmitkVideoBackground::IsEnabled | ( | ) |
Checks, if the Video background is currently enabled (visible)
Definition at line 152 of file QmitkVideoBackground.cpp.
References m_QTimer.
Referenced by Disable(), and ~QmitkVideoBackground().
{ if (m_QTimer->isActive()) return true; else return false; }
bool QmitkVideoBackground::IsRenderWindowIncluded | ( | vtkRenderWindow * | renderWindow ) |
Definition at line 109 of file QmitkVideoBackground.cpp.
References m_renderWindowVectorInfo.
{ for(RenderWindowVectorInfoType::iterator it = m_renderWindowVectorInfo.begin(); it != m_renderWindowVectorInfo.end(); it++) { if((*it).renWin == renderWindow) return true; } return false; }
void QmitkVideoBackground::Modified | ( | ) | [protected] |
Definition at line 181 of file QmitkVideoBackground.cpp.
References mitk::VideoSource::GetImageHeight(), mitk::VtkLayerController::GetInstance(), m_renderWindowVectorInfo, and m_VideoSource.
Referenced by AddRenderWindow(), and Enable().
{ // ensures registration of video backrounds in each renderwindow for(RenderWindowVectorInfoType::iterator it = m_renderWindowVectorInfo.begin(); it != m_renderWindowVectorInfo.end(); it++) { (*it).videoActor->SetInput((*it).videoImport->GetOutput()); (*it).videoRenderer->AddActor2D((*it).videoActor); (*it).videoRenderer->ResetCamera(); (*it).videoRenderer->InteractiveOff(); (*it).videoRenderer->GetActiveCamera()->ParallelProjectionOn(); (*it).videoRenderer->GetActiveCamera()->SetParallelScale(m_VideoSource->GetImageHeight()/2); if(!mitk::VtkLayerController::GetInstance((*it).renWin)->IsRendererInserted((*it).videoRenderer)) mitk::VtkLayerController::GetInstance((*it).renWin)->InsertBackgroundRenderer((*it).videoRenderer,true); } }
void QmitkVideoBackground::NewFrameAvailable | ( | mitk::VideoSource * | ) | [signal] |
Referenced by UpdateVideo().
void QmitkVideoBackground::RemoveRenderWindow | ( | vtkRenderWindow * | renderWindow ) |
Definition at line 89 of file QmitkVideoBackground.cpp.
References mitk::VtkLayerController::GetInstance(), and m_renderWindowVectorInfo.
Referenced by AddRenderWindow(), and QmitkOpenCVVideoControls::Stop().
{ for(RenderWindowVectorInfoType::iterator it = m_renderWindowVectorInfo.begin(); it != m_renderWindowVectorInfo.end(); it++) { if((*it).renWin == renderWindow) { // unregister video backround renderer from renderwindow mitk::VtkLayerController::GetInstance((*it).renWin)->RemoveRenderer((*it).videoRenderer); (*it).videoRenderer->Delete(); (*it).videoActor->Delete(); (*it).videoImport->Delete(); m_renderWindowVectorInfo.erase(it); return; //delete &(*it); // memory leak renderwindowvectorinfo ?? } } }
void QmitkVideoBackground::ResetVideoBackground | ( | ) | [protected] |
Definition at line 43 of file QmitkVideoBackground.cpp.
References m_QTimer, m_renderWindowVectorInfo, and UpdateVideo().
Referenced by QmitkVideoBackground().
{ m_renderWindowVectorInfo.clear(); m_QTimer = new QTimer(this); connect( m_QTimer, SIGNAL(timeout()), SLOT(UpdateVideo()) ); }
void QmitkVideoBackground::SetTimerDelay | ( | int | ms ) | [inline] |
Definition at line 75 of file QmitkVideoBackground.h.
Referenced by QmitkOpenCVVideoControls::on_PlayButton_clicked().
{ m_TimerDelay = ms; ResetVideoBackground(); }
void QmitkVideoBackground::UpdateVideo | ( | ) | [slot] |
Definition at line 160 of file QmitkVideoBackground.cpp.
References mitk::RenderingManager::GetInstance(), mitk::VideoSource::GetVideoTexture(), m_renderWindowVectorInfo, m_VideoSource, and NewFrameAvailable().
Referenced by Enable(), and ResetVideoBackground().
{ unsigned char *src = 0; src = m_VideoSource->GetVideoTexture(); if(src) { if(m_renderWindowVectorInfo.size()>0) { for(RenderWindowVectorInfoType::iterator it = m_renderWindowVectorInfo.begin(); it != m_renderWindowVectorInfo.end(); it++) { (*it).videoImport->SetImportVoidPointer(src); (*it).videoImport->Modified(); (*it).videoImport->Update(); mitk::RenderingManager::GetInstance()->RequestUpdate((*it).renWin); } } } emit NewFrameAvailable ( m_VideoSource ); }
QTimer* QmitkVideoBackground::m_QTimer [protected] |
Definition at line 113 of file QmitkVideoBackground.h.
Referenced by Disable(), Enable(), IsEnabled(), and ResetVideoBackground().
Definition at line 110 of file QmitkVideoBackground.h.
Referenced by AddRenderWindow(), IsRenderWindowIncluded(), Modified(), RemoveRenderWindow(), ResetVideoBackground(), UpdateVideo(), and ~QmitkVideoBackground().
int QmitkVideoBackground::m_TimerDelay [protected] |
Definition at line 118 of file QmitkVideoBackground.h.
Referenced by Enable(), and QmitkVideoBackground().
mitk::VideoSource* QmitkVideoBackground::m_VideoSource [protected] |
Definition at line 116 of file QmitkVideoBackground.h.
Referenced by AddRenderWindow(), Modified(), QmitkVideoBackground(), and UpdateVideo().