QmitkSimpleExampleView. More...
#include <QmitkSimpleExampleView.h>
Public Member Functions | |
QmitkSimpleExampleView () | |
virtual | ~QmitkSimpleExampleView () |
virtual void | CreateQtPartControl (QWidget *parent) |
virtual void | CreateConnections () |
Creation of the connections of main and control widget. | |
virtual void | Activated () |
Called when the functionality is activated. | |
virtual void | Deactivated () |
virtual void | StdMultiWidgetAvailable (QmitkStdMultiWidget &stdMultiWidget) |
virtual void | StdMultiWidgetNotAvailable () |
Static Public Attributes | |
static const std::string | VIEW_ID = "org.mitk.views.simpleexample" |
Protected Slots | |
void | stereoSelectionChanged (int id) |
void | initNavigators () |
void | generateMovie () |
QmitkRenderWindow * | GetMovieRenderWindow () |
void | OnRenderWindow1Clicked () |
void | OnRenderWindow2Clicked () |
void | OnRenderWindow3Clicked () |
void | OnRenderWindow4Clicked () |
void | OnTakeHighResolutionScreenshot () |
takes screenshot of the 3D window in 4x resolution of the render window | |
void | OnTakeScreenshot () |
takes screenshot of the selected render window | |
Protected Member Functions | |
void | TakeScreenshot (vtkRenderer *renderer, unsigned int magnificationFactor, QString fileName) |
writes a screenshot in JPEG or PNG format to the file fileName | |
Protected Attributes | |
Ui::QmitkSimpleExampleViewControls * | m_Controls |
QmitkStdMultiWidget * | m_MultiWidget |
bool | m_NavigatorsInitialized |
Document your class here.
Definition at line 38 of file QmitkSimpleExampleView.h.
QmitkSimpleExampleView::QmitkSimpleExampleView | ( | ) |
Definition at line 45 of file QmitkSimpleExampleView.cpp.
: QmitkFunctionality(), m_Controls(NULL), m_MultiWidget(NULL), m_NavigatorsInitialized(false) { }
QmitkSimpleExampleView::~QmitkSimpleExampleView | ( | ) | [virtual] |
Definition at line 53 of file QmitkSimpleExampleView.cpp.
{ }
void QmitkSimpleExampleView::Activated | ( | ) | [virtual] |
Called when the functionality is activated.
Reimplemented from QmitkFunctionality.
Definition at line 100 of file QmitkSimpleExampleView.cpp.
void QmitkSimpleExampleView::CreateConnections | ( | ) | [virtual] |
Creation of the connections of main and control widget.
Definition at line 84 of file QmitkSimpleExampleView.cpp.
References generateMovie(), Ui_QmitkSimpleExampleViewControls::genMovieButton, initNavigators(), m_Controls, Ui_QmitkSimpleExampleViewControls::m_RenderWindow1Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow2Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow3Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow4Button, Ui_QmitkSimpleExampleViewControls::m_TakeHighResScreenShotBtn, Ui_QmitkSimpleExampleViewControls::m_TakeScreenshotBtn, OnRenderWindow1Clicked(), OnRenderWindow2Clicked(), OnRenderWindow3Clicked(), OnRenderWindow4Clicked(), OnTakeHighResolutionScreenshot(), OnTakeScreenshot(), Ui_QmitkSimpleExampleViewControls::reInitializeNavigatorsButton, Ui_QmitkSimpleExampleViewControls::stereoSelect, and stereoSelectionChanged().
Referenced by CreateQtPartControl().
{ if ( m_Controls ) { connect(m_Controls->stereoSelect, SIGNAL(activated(int)), this, SLOT(stereoSelectionChanged(int)) ); connect(m_Controls->reInitializeNavigatorsButton, SIGNAL(clicked()), this, SLOT(initNavigators()) ); connect(m_Controls->genMovieButton, SIGNAL(clicked()), this, SLOT(generateMovie()) ); connect(m_Controls->m_RenderWindow1Button, SIGNAL(clicked()), this, SLOT(OnRenderWindow1Clicked()) ); connect(m_Controls->m_RenderWindow2Button, SIGNAL(clicked()), this, SLOT(OnRenderWindow2Clicked()) ); connect(m_Controls->m_RenderWindow3Button, SIGNAL(clicked()), this, SLOT(OnRenderWindow3Clicked()) ); connect(m_Controls->m_RenderWindow4Button, SIGNAL(clicked()), this, SLOT(OnRenderWindow4Clicked()) ); connect(m_Controls->m_TakeScreenshotBtn, SIGNAL(clicked()), this, SLOT(OnTakeScreenshot()) ); connect(m_Controls->m_TakeHighResScreenShotBtn, SIGNAL(clicked()), this, SLOT(OnTakeHighResolutionScreenshot()) ); } }
void QmitkSimpleExampleView::CreateQtPartControl | ( | QWidget * | parent ) | [virtual] |
Implements berry::QtViewPart.
Definition at line 57 of file QmitkSimpleExampleView.cpp.
References CreateConnections(), m_Controls, and Ui_QmitkSimpleExampleViewControls::setupUi().
{ if (!m_Controls) { // create GUI widgets m_Controls = new Ui::QmitkSimpleExampleViewControls; m_Controls->setupUi(parent); this->CreateConnections(); } }
void QmitkSimpleExampleView::Deactivated | ( | ) | [virtual] |
Only called when IsExclusiveFunctionality() returns true.
Reimplemented from QmitkFunctionality.
Definition at line 105 of file QmitkSimpleExampleView.cpp.
void QmitkSimpleExampleView::generateMovie | ( | ) | [protected, slot] |
generate a movie as *.avi from the active render window
Definition at line 122 of file QmitkSimpleExampleView.cpp.
References mitk::BaseRenderer::GetInstance(), GetMovieRenderWindow(), mitk::BaseController::GetSlice(), mitk::RenderWindowBase::GetSliceNavigationController(), and mitk::MovieGenerator::New().
Referenced by CreateConnections().
{ QmitkRenderWindow* movieRenderWindow = GetMovieRenderWindow(); //mitk::Stepper::Pointer stepper = multiWidget->mitkWidget1->GetSliceNavigationController()->GetSlice(); mitk::Stepper::Pointer stepper = movieRenderWindow->GetSliceNavigationController()->GetSlice(); mitk::MovieGenerator::Pointer movieGenerator = mitk::MovieGenerator::New(); if (movieGenerator.IsNotNull()) { movieGenerator->SetStepper( stepper ); movieGenerator->SetRenderer( mitk::BaseRenderer::GetInstance(movieRenderWindow->GetRenderWindow()) ); QString movieFileName = QFileDialog::getSaveFileName(0, "Choose a file name", QString(), "Movie (*.avi)"); if (!movieFileName.isEmpty()) { movieGenerator->SetFileName( movieFileName.toStdString().c_str() ); movieGenerator->WriteMovie(); } } }
QmitkRenderWindow * QmitkSimpleExampleView::GetMovieRenderWindow | ( | ) | [protected, slot] |
return the renderwindow of which the movie shall be created, what depends on the toggled button
Definition at line 172 of file QmitkSimpleExampleView.cpp.
References m_Controls, m_MultiWidget, Ui_QmitkSimpleExampleViewControls::m_RenderWindow1Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow2Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow3Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow4Button, QmitkStdMultiWidget::mitkWidget1, QmitkStdMultiWidget::mitkWidget2, QmitkStdMultiWidget::mitkWidget3, and QmitkStdMultiWidget::mitkWidget4.
Referenced by generateMovie(), and OnTakeScreenshot().
{ //check which RenderWindow should be used to generate the movie, e.g. which button is toggled if(m_Controls->m_RenderWindow1Button->isChecked()) { return m_MultiWidget->mitkWidget1; } else if(m_Controls->m_RenderWindow2Button->isChecked()) { return m_MultiWidget->mitkWidget2; } else if(m_Controls->m_RenderWindow3Button->isChecked()) { return m_MultiWidget->mitkWidget3; } else if(m_Controls->m_RenderWindow4Button->isChecked()) { return m_MultiWidget->mitkWidget4; } else //as default take widget1 { return m_MultiWidget->mitkWidget1; } }
void QmitkSimpleExampleView::initNavigators | ( | ) | [protected, slot] |
initialize the transversal, sagittal, coronal and temporal slider according to the image dimensions
Definition at line 110 of file QmitkSimpleExampleView.cpp.
References QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), m_NavigatorsInitialized, mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), and mitk::NodePredicateNot::New().
Referenced by CreateConnections().
{ /* get all nodes that have not set "includeInBoundingBox" to false */ mitk::NodePredicateNot::Pointer pred = mitk::NodePredicateNot::New(mitk::NodePredicateProperty::New("includeInBoundingBox", mitk::BoolProperty::New(false))); mitk::DataStorage::SetOfObjects::ConstPointer rs = this->GetDataStorage()->GetSubset(pred); /* calculate bounding geometry of these nodes */ mitk::TimeSlicedGeometry::Pointer bounds = this->GetDataStorage()->ComputeBoundingGeometry3D(rs); /* initialize the views to the bounding geometry */ m_NavigatorsInitialized = mitk::RenderingManager::GetInstance()->InitializeViews(bounds); //m_NavigatorsInitialized = mitk::RenderingManager::GetInstance()->InitializeViews(GetDefaultDataStorage()); }
void QmitkSimpleExampleView::OnRenderWindow1Clicked | ( | ) | [protected, slot] |
Definition at line 198 of file QmitkSimpleExampleView.cpp.
References m_Controls, Ui_QmitkSimpleExampleViewControls::m_RenderWindow2Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow3Button, and Ui_QmitkSimpleExampleViewControls::m_RenderWindow4Button.
Referenced by CreateConnections().
{ m_Controls->m_RenderWindow2Button->setChecked(false); m_Controls->m_RenderWindow3Button->setChecked(false); m_Controls->m_RenderWindow4Button->setChecked(false); }
void QmitkSimpleExampleView::OnRenderWindow2Clicked | ( | ) | [protected, slot] |
Definition at line 204 of file QmitkSimpleExampleView.cpp.
References m_Controls, Ui_QmitkSimpleExampleViewControls::m_RenderWindow1Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow3Button, and Ui_QmitkSimpleExampleViewControls::m_RenderWindow4Button.
Referenced by CreateConnections().
{ m_Controls->m_RenderWindow1Button->setChecked(false); m_Controls->m_RenderWindow3Button->setChecked(false); m_Controls->m_RenderWindow4Button->setChecked(false); }
void QmitkSimpleExampleView::OnRenderWindow3Clicked | ( | ) | [protected, slot] |
Definition at line 210 of file QmitkSimpleExampleView.cpp.
References m_Controls, Ui_QmitkSimpleExampleViewControls::m_RenderWindow1Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow2Button, and Ui_QmitkSimpleExampleViewControls::m_RenderWindow4Button.
Referenced by CreateConnections().
{ m_Controls->m_RenderWindow2Button->setChecked(false); m_Controls->m_RenderWindow1Button->setChecked(false); m_Controls->m_RenderWindow4Button->setChecked(false); }
void QmitkSimpleExampleView::OnRenderWindow4Clicked | ( | ) | [protected, slot] |
Definition at line 216 of file QmitkSimpleExampleView.cpp.
References m_Controls, Ui_QmitkSimpleExampleViewControls::m_RenderWindow1Button, Ui_QmitkSimpleExampleViewControls::m_RenderWindow2Button, and Ui_QmitkSimpleExampleViewControls::m_RenderWindow3Button.
Referenced by CreateConnections().
{ m_Controls->m_RenderWindow2Button->setChecked(false); m_Controls->m_RenderWindow3Button->setChecked(false); m_Controls->m_RenderWindow1Button->setChecked(false); }
void QmitkSimpleExampleView::OnTakeHighResolutionScreenshot | ( | ) | [protected, slot] |
takes screenshot of the 3D window in 4x resolution of the render window
Definition at line 224 of file QmitkSimpleExampleView.cpp.
References mitk::RenderWindowBase::GetRenderer(), mitk::BaseRenderer::GetVtkRenderer(), m_MultiWidget, QmitkStdMultiWidget::mitkWidget4, and TakeScreenshot().
Referenced by CreateConnections().
{ QString fileName = QFileDialog::getSaveFileName(NULL, "Save screenshot to...", QDir::currentPath(), "JPEG file (*.jpg);;PNG file (*.png)"); // only works correctly for 3D RenderWindow vtkRenderer* renderer = m_MultiWidget->mitkWidget4->GetRenderer()->GetVtkRenderer(); if (renderer == NULL) return; this->TakeScreenshot(renderer, 4, fileName); }
void QmitkSimpleExampleView::OnTakeScreenshot | ( | ) | [protected, slot] |
takes screenshot of the selected render window
Definition at line 235 of file QmitkSimpleExampleView.cpp.
References GetMovieRenderWindow(), mitk::RenderWindowBase::GetRenderer(), mitk::BaseRenderer::GetVtkRenderer(), and TakeScreenshot().
Referenced by CreateConnections().
{ QString fileName = QFileDialog::getSaveFileName(NULL, "Save screenshot to...", QDir::currentPath(), "JPEG file (*.jpg);;PNG file (*.png)"); QmitkRenderWindow* renWin = this->GetMovieRenderWindow(); if (renWin == NULL) return; vtkRenderer* renderer = renWin->GetRenderer()->GetVtkRenderer(); if (renderer == NULL) return; this->TakeScreenshot(renderer, 1, fileName); }
void QmitkSimpleExampleView::StdMultiWidgetAvailable | ( | QmitkStdMultiWidget & | stdMultiWidget ) | [virtual] |
Called when a StdMultiWidget is available. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 68 of file QmitkSimpleExampleView.cpp.
References mitk::BaseController::GetSlice(), mitk::RenderWindowBase::GetSliceNavigationController(), mitk::BaseController::GetTime(), QmitkStdMultiWidget::GetTimeNavigationController(), m_Controls, m_MultiWidget, QmitkStdMultiWidget::mitkWidget1, QmitkStdMultiWidget::mitkWidget2, QmitkStdMultiWidget::mitkWidget3, Ui_QmitkSimpleExampleViewControls::movieNavigatorTime, Ui_QmitkSimpleExampleViewControls::sliceNavigatorFrontal, Ui_QmitkSimpleExampleViewControls::sliceNavigatorSagittal, Ui_QmitkSimpleExampleViewControls::sliceNavigatorTime, and Ui_QmitkSimpleExampleViewControls::sliceNavigatorTransversal.
{ m_MultiWidget = &stdMultiWidget; new QmitkStepperAdapter(m_Controls->sliceNavigatorTransversal, m_MultiWidget->mitkWidget1->GetSliceNavigationController()->GetSlice(), "sliceNavigatorTransversalFromSimpleExample"); new QmitkStepperAdapter(m_Controls->sliceNavigatorSagittal, m_MultiWidget->mitkWidget2->GetSliceNavigationController()->GetSlice(), "sliceNavigatorSagittalFromSimpleExample"); new QmitkStepperAdapter(m_Controls->sliceNavigatorFrontal, m_MultiWidget->mitkWidget3->GetSliceNavigationController()->GetSlice(), "sliceNavigatorFrontalFromSimpleExample"); new QmitkStepperAdapter(m_Controls->sliceNavigatorTime, m_MultiWidget->GetTimeNavigationController()->GetTime(), "sliceNavigatorTimeFromSimpleExample"); new QmitkStepperAdapter(m_Controls->movieNavigatorTime, m_MultiWidget->GetTimeNavigationController()->GetTime(), "movieNavigatorTimeFromSimpleExample"); }
void QmitkSimpleExampleView::StdMultiWidgetNotAvailable | ( | ) | [virtual] |
Called when no StdMultiWidget is available anymore. Should not be used anymore, see GetActiveStdMultiWidget()
Reimplemented from QmitkFunctionality.
Definition at line 79 of file QmitkSimpleExampleView.cpp.
References m_MultiWidget.
{ m_MultiWidget = NULL; }
void QmitkSimpleExampleView::stereoSelectionChanged | ( | int | id ) | [protected, slot] |
qt slot for event processing from a qt widget defining the stereo mode of widget 4
Definition at line 140 of file QmitkSimpleExampleView.cpp.
References QmitkStdMultiWidget::DisableDepartmentLogo(), mitk::BaseRenderer::GetInstance(), m_MultiWidget, QmitkStdMultiWidget::mitkWidget4, and QmitkStdMultiWidget::RequestUpdate().
Referenced by CreateConnections().
{ /* From vtkRenderWindow.h tells us about stereo rendering: Set/Get what type of stereo rendering to use. CrystalEyes mode uses frame-sequential capabilities available in OpenGL to drive LCD shutter glasses and stereo projectors. RedBlue mode is a simple type of stereo for use with red-blue glasses. Anaglyph mode is a superset of RedBlue mode, but the color output channels can be configured using the AnaglyphColorMask and the color of the original image can be (somewhat maintained using AnaglyphColorSaturation; the default colors for Anaglyph mode is red-cyan. Interlaced stereo mode produces a composite image where horizontal lines alternate between left and right views. StereoLeft and StereoRight modes choose one or the other stereo view. Dresden mode is yet another stereoscopic interleaving. */ vtkRenderWindow * vtkrenderwindow = m_MultiWidget->mitkWidget4->GetRenderWindow(); // note: foreground vtkRenderers (at least the department logo renderer) produce errors in stereoscopic visualization. // Therefore, we disable the logo visualization during stereo rendering. switch(id) { case 0: vtkrenderwindow->StereoRenderOff(); break; case 1: vtkrenderwindow->SetStereoTypeToRedBlue(); vtkrenderwindow->StereoRenderOn(); m_MultiWidget->DisableDepartmentLogo(); break; case 2: vtkrenderwindow->SetStereoTypeToDresden(); vtkrenderwindow->StereoRenderOn(); m_MultiWidget->DisableDepartmentLogo(); break; } mitk::BaseRenderer::GetInstance(m_MultiWidget->mitkWidget4->GetRenderWindow())->SetMapperID(2); m_MultiWidget->RequestUpdate(); }
void QmitkSimpleExampleView::TakeScreenshot | ( | vtkRenderer * | renderer, |
unsigned int | magnificationFactor, | ||
QString | fileName | ||
) | [protected] |
writes a screenshot in JPEG or PNG format to the file fileName
Definition at line 250 of file QmitkSimpleExampleView.cpp.
References QmitkStdMultiWidget::DisableColoredRectangles(), QmitkStdMultiWidget::DisableDepartmentLogo(), QmitkStdMultiWidget::DisableGradientBackground(), QmitkStdMultiWidget::EnableColoredRectangles(), QmitkStdMultiWidget::EnableDepartmentLogo(), QmitkStdMultiWidget::EnableGradientBackground(), and m_MultiWidget.
Referenced by OnTakeHighResolutionScreenshot(), and OnTakeScreenshot().
{ if ((renderer == NULL) ||(magnificationFactor < 1) || fileName.isEmpty()) return; bool doubleBuffering( renderer->GetRenderWindow()->GetDoubleBuffer() ); renderer->GetRenderWindow()->DoubleBufferOff(); vtkImageWriter* fileWriter; QFileInfo fi(fileName); QString suffix = fi.suffix(); if (suffix.compare("png", Qt::CaseInsensitive) == 0) { fileWriter = vtkPNGWriter::New(); } else // default is jpeg { vtkJPEGWriter* w = vtkJPEGWriter::New(); w->SetQuality(100); w->ProgressiveOff(); fileWriter = w; } vtkRenderLargeImage* magnifier = vtkRenderLargeImage::New(); magnifier->SetInput(renderer); magnifier->SetMagnification(magnificationFactor); //magnifier->Update(); fileWriter->SetInput(magnifier->GetOutput()); fileWriter->SetFileName(fileName.toLatin1()); // vtkRenderLargeImage has problems with different layers, therefore we have to // temporarily deactivate all other layers. // we set the background to white, because it is nicer than black... double oldBackground[3]; renderer->GetBackground(oldBackground); double white[] = {1.0, 1.0, 1.0}; renderer->SetBackground(white); m_MultiWidget->DisableColoredRectangles(); m_MultiWidget->DisableDepartmentLogo(); m_MultiWidget->DisableGradientBackground(); fileWriter->Write(); fileWriter->Delete(); m_MultiWidget->EnableColoredRectangles(); m_MultiWidget->EnableDepartmentLogo(); m_MultiWidget->EnableGradientBackground(); renderer->SetBackground(oldBackground); renderer->GetRenderWindow()->SetDoubleBuffer(doubleBuffering); }
Definition at line 95 of file QmitkSimpleExampleView.h.
Referenced by CreateConnections(), CreateQtPartControl(), GetMovieRenderWindow(), OnRenderWindow1Clicked(), OnRenderWindow2Clicked(), OnRenderWindow3Clicked(), OnRenderWindow4Clicked(), and StdMultiWidgetAvailable().
QmitkStdMultiWidget* QmitkSimpleExampleView::m_MultiWidget [protected] |
Definition at line 97 of file QmitkSimpleExampleView.h.
Referenced by GetMovieRenderWindow(), OnTakeHighResolutionScreenshot(), StdMultiWidgetAvailable(), StdMultiWidgetNotAvailable(), stereoSelectionChanged(), and TakeScreenshot().
bool QmitkSimpleExampleView::m_NavigatorsInitialized [protected] |
Definition at line 101 of file QmitkSimpleExampleView.h.
Referenced by initNavigators().
const std::string QmitkSimpleExampleView::VIEW_ID = "org.mitk.views.simpleexample" [static] |
Definition at line 46 of file QmitkSimpleExampleView.h.