#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().
1.7.2