#include <QmitkSliceWidget.h>
Definition at line 31 of file QmitkSliceWidget.h.
QmitkSliceWidget::QmitkSliceWidget | ( | QWidget * | parent = 0 , |
const char * | name = 0 , |
||
Qt::WindowFlags | f = 0 |
||
) |
Definition at line 32 of file QmitkSliceWidget.cpp.
References ChangeView(), Ui_QmitkSliceWidgetUi::container, mitk::RenderWindowBase::GetRenderer(), mitk::BaseController::GetSlice(), mitk::RenderWindowBase::GetSliceNavigationController(), Ui_QmitkSliceWidgetUi::m_NavigatorWidget, m_RenderWindow, m_View, SetLevelWindowEnabled(), setPopUpEnabled(), Ui_QmitkSliceWidgetUi::setupUi(), and mitk::SliceNavigationController::Transversal.
: QWidget(parent, f) { this->setupUi(this); if (name != 0) this->setObjectName(name); popUp = new QMenu(this); popUp->addAction("Transversal"); popUp->addAction("Frontal"); popUp->addAction("Sagittal"); QObject::connect(popUp, SIGNAL(triggered(QAction*)), this, SLOT(ChangeView(QAction*)) ); setPopUpEnabled(false); m_SlicedGeometry = 0; m_View = mitk::SliceNavigationController::Transversal; QHBoxLayout *hlayout = new QHBoxLayout(container); hlayout->setMargin(0); // create widget QString composedName("QmitkSliceWidget::"); if (!this->objectName().isEmpty()) composedName += this->objectName(); else composedName += "QmitkGLWidget"; m_RenderWindow = new QmitkRenderWindow(container, composedName); m_Renderer = m_RenderWindow->GetRenderer(); hlayout->addWidget(m_RenderWindow); new QmitkStepperAdapter(m_NavigatorWidget, m_RenderWindow->GetSliceNavigationController()->GetSlice(), "navigation"); SetLevelWindowEnabled(true); }
void QmitkSliceWidget::ChangeView | ( | QAction * | val ) | [slot] |
Definition at line 304 of file QmitkSliceWidget.cpp.
References mitk::SliceNavigationController::Frontal, InitWidget(), mitk::SliceNavigationController::Sagittal, and mitk::SliceNavigationController::Transversal.
Referenced by QmitkSliceWidget().
{ if (val->text() == "Transversal") { InitWidget(mitk::SliceNavigationController::Transversal); } else if (val->text() == "Frontal") { InitWidget(mitk::SliceNavigationController::Frontal); } else if (val->text() == "Sagittal") { InitWidget(mitk::SliceNavigationController::Sagittal); } }
mitk::CameraRotationController * QmitkSliceWidget::GetCameraRotationController | ( | ) | const |
Definition at line 362 of file QmitkSliceWidget.cpp.
References mitk::RenderWindowBase::GetCameraRotationController(), and m_RenderWindow.
{ return m_RenderWindow->GetCameraRotationController(); }
mitk::BaseController * QmitkSliceWidget::GetController | ( | ) | const |
Definition at line 368 of file QmitkSliceWidget.cpp.
References mitk::RenderWindowBase::GetController(), and m_RenderWindow.
{ return m_RenderWindow->GetController(); }
mitk::StandaloneDataStorage * QmitkSliceWidget::GetDataStorage | ( | ) |
Definition at line 90 of file QmitkSliceWidget.cpp.
{ if (m_DataStorage.IsNotNull()) { return m_DataStorage; } else { return NULL; } }
QmitkSliderNavigatorWidget * QmitkSliceWidget::GetNavigatorWidget | ( | ) |
Definition at line 325 of file QmitkSliceWidget.cpp.
References Ui_QmitkSliceWidgetUi::m_NavigatorWidget.
{ return m_NavigatorWidget; }
mitk::VtkPropRenderer * QmitkSliceWidget::GetRenderer | ( | ) |
Definition at line 73 of file QmitkSliceWidget.cpp.
Referenced by InitWidget(), main(), SetData(), Step6::SetupWidgets(), and UpdateGL().
{
return m_Renderer;
}
QmitkRenderWindow * QmitkSliceWidget::GetRenderWindow | ( | ) |
Definition at line 350 of file QmitkSliceWidget.cpp.
References m_RenderWindow.
Referenced by InitWidget(), and UpdateGL().
{ return m_RenderWindow; }
QFrame * QmitkSliceWidget::GetSelectionFrame | ( | ) |
Definition at line 78 of file QmitkSliceWidget.cpp.
References Ui_QmitkSliceWidgetUi::SelectionFrame.
{ return SelectionFrame; }
mitk::SliceNavigationController * QmitkSliceWidget::GetSliceNavigationController | ( | ) | const |
Definition at line 356 of file QmitkSliceWidget.cpp.
References mitk::RenderWindowBase::GetSliceNavigationController(), and m_RenderWindow.
{ return m_RenderWindow->GetSliceNavigationController(); }
void QmitkSliceWidget::InitWidget | ( | mitk::SliceNavigationController::ViewDirection | viewDirection ) | [slot] |
Definition at line 182 of file QmitkSliceWidget.cpp.
References mitk::SliceNavigationController::Frontal, mitk::BaseRenderer::GetDisplayGeometry(), mitk::RenderingManager::GetInstance(), mitk::Stepper::GetPos(), GetRenderer(), GetRenderWindow(), mitk::BaseController::GetSlice(), mitk::RenderWindowBase::GetSliceNavigationController(), int(), m_RenderWindow, m_View, QuadProgPP::max(), mitk::TimeSlicedGeometry::New(), mitk::SliceNavigationController::Sagittal, mitk::SliceNavigationController::SetInputWorldGeometry(), mitk::SliceNavigationController::SetViewDirection(), mitk::SliceNavigationController::Transversal, and mitk::SliceNavigationController::Update().
Referenced by ChangeView(), and SetData().
{ m_View = viewDirection; mitk::SliceNavigationController* controller = m_RenderWindow->GetSliceNavigationController(); if (viewDirection == mitk::SliceNavigationController::Transversal) { controller->SetViewDirection( mitk::SliceNavigationController::Transversal); } else if (viewDirection == mitk::SliceNavigationController::Frontal) { controller->SetViewDirection(mitk::SliceNavigationController::Frontal); } // init sagittal view else { controller->SetViewDirection(mitk::SliceNavigationController::Sagittal); } int currentPos = 0; if (m_RenderWindow->GetSliceNavigationController()) { currentPos = controller->GetSlice()->GetPos(); } if (m_SlicedGeometry.IsNull()) { return; } // compute bounding box with respect to first images geometry const mitk::BoundingBox::BoundsArrayType imageBounds = m_SlicedGeometry->GetBoundingBox()->GetBounds(); // mitk::SlicedGeometry3D::Pointer correctGeometry = m_SlicedGeometry.GetPointer(); mitk::Geometry3D::Pointer geometry = static_cast<mitk::Geometry3D*> (m_SlicedGeometry->Clone().GetPointer()); const mitk::BoundingBox::Pointer boundingbox = m_DataStorage->ComputeVisibleBoundingBox(GetRenderer(), NULL); if (boundingbox->GetPoints()->Size() > 0) { //geometry->SetBounds(boundingbox->GetBounds()); //geometry->SetSpacing(correctGeometry->GetSpacing()); //let's see if we have data with a limited live-span ... mitk::TimeBounds timebounds = m_DataStorage->ComputeTimeBounds( GetRenderer(), NULL); if (timebounds[1] < mitk::ScalarTypeNumericTraits::max()) { mitk::ScalarType duration = timebounds[1] - timebounds[0]; mitk::TimeSlicedGeometry::Pointer timegeometry = mitk::TimeSlicedGeometry::New(); timegeometry->InitializeEvenlyTimed(geometry.GetPointer(), (unsigned int) duration); timegeometry->SetTimeBounds(timebounds); //@bug really required? FIXME timebounds[1] = timebounds[0] + 1.0f; geometry->SetTimeBounds(timebounds); geometry = timegeometry; } if (const_cast<mitk::BoundingBox*> (geometry->GetBoundingBox())->GetDiagonalLength2() >= mitk::eps) { controller->SetInputWorldGeometry(geometry); controller->Update(); } } GetRenderer()->GetDisplayGeometry()->Fit(); mitk::RenderingManager::GetInstance()->RequestUpdate( GetRenderer()->GetRenderWindow()); //int w=vtkObject::GetGlobalWarningDisplay(); //vtkObject::GlobalWarningDisplayOff(); //vtkRenderer * vtkrenderer = ((mitk::OpenGLRenderer*)(GetRenderer()))->GetVtkRenderer(); //if(vtkrenderer!=NULL) vtkrenderer->ResetCamera(); //vtkObject::SetGlobalWarningDisplay(w); }
bool QmitkSliceWidget::IsLevelWindowEnabled | ( | ) |
Definition at line 345 of file QmitkSliceWidget.cpp.
References Ui_QmitkSliceWidgetUi::levelWindow.
{ return levelWindow->isEnabled(); }
void QmitkSliceWidget::mousePressEvent | ( | QMouseEvent * | e ) |
Definition at line 281 of file QmitkSliceWidget.cpp.
{
if (e->button() == Qt::RightButton && popUpEnabled)
{
popUp->popup(QCursor::pos());
}
}
void QmitkSliceWidget::SetData | ( | mitk::DataNode::Pointer | node ) | [slot] |
void QmitkSliceWidget::SetData | ( | mitk::DataStorage::SetOfObjects::ConstIterator | it, |
mitk::SliceNavigationController::ViewDirection | view | ||
) | [slot] |
Definition at line 108 of file QmitkSliceWidget.cpp.
References SetData().
{ SetData(it->Value(), view); }
void QmitkSliceWidget::SetData | ( | mitk::DataNode::Pointer | node, |
mitk::SliceNavigationController::ViewDirection | view | ||
) | [slot] |
Definition at line 141 of file QmitkSliceWidget.cpp.
References GetRenderer(), InitWidget(), Ui_QmitkSliceWidgetUi::levelWindow, MITK_INFO, mitk::NodePredicateDataType::New(), mitk::VtkPropRenderer::SetDataStorage(), and QmitkLevelWindowWidget::SetDataStorage().
{ try { if (m_DataStorage.IsNotNull()) { levelWindow->SetDataStorage(m_DataStorage); mitk::DataStorage::SetOfObjects::ConstPointer rs = m_DataStorage->GetSubset(mitk::NodePredicateDataType::New( "Image")); mitk::DataStorage::SetOfObjects::ConstIterator it; bool noVisibleImage = true; for (it = rs->Begin(); it != rs->End(); ++it) { mitk::DataNode::Pointer node = it.Value(); node->SetName("currentImage"); mitk::Image::Pointer image = m_DataStorage->GetNamedObject< mitk::Image> ("currentImage"); if (image.IsNotNull() && node->IsVisible(GetRenderer())) { m_SlicedGeometry = image->GetSlicedGeometry(); mitk::LevelWindow picLevelWindow; node->GetLevelWindow(picLevelWindow, NULL); noVisibleImage = false; break; } } if (noVisibleImage) MITK_INFO << " No image visible!"; GetRenderer()->SetDataStorage(m_DataStorage); } InitWidget(view); } catch (...) { } }
void QmitkSliceWidget::SetData | ( | mitk::DataStorage::SetOfObjects::ConstIterator | it ) | [slot] |
void QmitkSliceWidget::SetDataStorage | ( | mitk::StandaloneDataStorage::Pointer | storage ) |
Definition at line 83 of file QmitkSliceWidget.cpp.
Referenced by main(), and Step6::SetupWidgets().
{ m_DataStorage = storage; m_Renderer->SetDataStorage(m_DataStorage); }
void QmitkSliceWidget::SetLevelWindowEnabled | ( | bool | enable ) | [slot] |
Definition at line 330 of file QmitkSliceWidget.cpp.
References Ui_QmitkSliceWidgetUi::levelWindow.
Referenced by main(), and QmitkSliceWidget().
{ levelWindow->setEnabled(enable); if (!enable) { levelWindow->setMinimumWidth(0); levelWindow->setMaximumWidth(0); } else { levelWindow->setMinimumWidth(28); levelWindow->setMaximumWidth(28); } }
void QmitkSliceWidget::setPopUpEnabled | ( | bool | b ) |
Definition at line 320 of file QmitkSliceWidget.cpp.
Referenced by QmitkSliceWidget().
{ popUpEnabled = b; }
void QmitkSliceWidget::UpdateGL | ( | ) |
Definition at line 274 of file QmitkSliceWidget.cpp.
References mitk::BaseRenderer::GetDisplayGeometry(), mitk::RenderingManager::GetInstance(), GetRenderer(), and GetRenderWindow().
{ GetRenderer()->GetDisplayGeometry()->Fit(); mitk::RenderingManager::GetInstance()->RequestUpdate( GetRenderer()->GetRenderWindow()); }
void QmitkSliceWidget::wheelEvent | ( | QWheelEvent * | e ) | [slot] |
Definition at line 289 of file QmitkSliceWidget.cpp.
References QmitkSliderNavigatorWidget::GetPos(), Ui_QmitkSliceWidgetUi::m_NavigatorWidget, and QmitkSliderNavigatorWidget::SetPos().
{ int val = m_NavigatorWidget->GetPos(); if (e->orientation() * e->delta() > 0) { m_NavigatorWidget->SetPos(val + 1); } else { if (val > 0) m_NavigatorWidget->SetPos(val - 1); } }
QmitkRenderWindow* QmitkSliceWidget::m_RenderWindow [protected] |
Definition at line 90 of file QmitkSliceWidget.h.
Referenced by GetCameraRotationController(), GetController(), GetRenderWindow(), GetSliceNavigationController(), InitWidget(), and QmitkSliceWidget().
Definition at line 91 of file QmitkSliceWidget.h.
Referenced by InitWidget(), QmitkSliceWidget(), and SetData().