Public Slots | Signals | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

QmitkVideoBackground Class Reference

#include <QmitkVideoBackground.h>

Collaboration diagram for QmitkVideoBackground:
Collaboration graph
[legend]

List of all members.

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::VideoSourceGetVideoSource ()
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::VideoSourcem_VideoSource
int m_TimerDelay

Detailed Description

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.


Member Typedef Documentation

Definition at line 109 of file QmitkVideoBackground.h.


Constructor & Destructor Documentation

QmitkVideoBackground::QmitkVideoBackground ( mitk::VideoSource v,
int  TimerDelay = 25 
)

Definition at line 36 of file QmitkVideoBackground.cpp.

References m_TimerDelay, m_VideoSource, and 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();
}

Member Function Documentation

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

{
  if ( this->IsEnabled() )
  {
    /*for(RenderWindowVectorInfoType::iterator it = m_renderWindowVectorInfo.begin(); 
      it != m_renderWindowVectorInfo.end(); it++)
    {
      mitk::VtkLayerController::GetInstance((*it).renWin)->RemoveRenderer((*it).videoRenderer);
    }*/
    m_QTimer->stop();
  }
}
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().

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]
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 );
}

Member Data Documentation

QTimer* QmitkVideoBackground::m_QTimer [protected]

Definition at line 113 of file QmitkVideoBackground.h.

Referenced by Disable(), Enable(), IsEnabled(), and ResetVideoBackground().

Definition at line 118 of file QmitkVideoBackground.h.

Referenced by Enable(), and QmitkVideoBackground().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines