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.
1.7.2