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