Public Slots | Public Member Functions | Protected Attributes

QmitkSliceWidget Class Reference

#include <QmitkSliceWidget.h>

Inheritance diagram for QmitkSliceWidget:
Inheritance graph
[legend]
Collaboration diagram for QmitkSliceWidget:
Collaboration graph
[legend]

List of all members.

Public Slots

void SetData (mitk::DataStorage::SetOfObjects::ConstIterator it)
void SetData (mitk::DataStorage::SetOfObjects::ConstIterator it, mitk::SliceNavigationController::ViewDirection view)
void SetData (mitk::DataNode::Pointer node)
void SetData (mitk::DataNode::Pointer node, mitk::SliceNavigationController::ViewDirection view)
void InitWidget (mitk::SliceNavigationController::ViewDirection viewDirection)
void wheelEvent (QWheelEvent *e)
void ChangeView (QAction *val)
void SetLevelWindowEnabled (bool enable)

Public Member Functions

 QmitkSliceWidget (QWidget *parent=0, const char *name=0, Qt::WindowFlags f=0)
mitk::VtkPropRendererGetRenderer ()
QFrame * GetSelectionFrame ()
void UpdateGL ()
void mousePressEvent (QMouseEvent *e)
void setPopUpEnabled (bool b)
void SetDataStorage (mitk::StandaloneDataStorage::Pointer storage)
mitk::StandaloneDataStorageGetDataStorage ()
QmitkSliderNavigatorWidgetGetNavigatorWidget ()
bool IsLevelWindowEnabled ()
QmitkRenderWindowGetRenderWindow ()
mitk::SliceNavigationControllerGetSliceNavigationController () const
mitk::CameraRotationControllerGetCameraRotationController () const
mitk::BaseControllerGetController () const

Protected Attributes

QmitkRenderWindowm_RenderWindow
mitk::SliceNavigationController::ViewDirection m_View

Detailed Description

Examples:

Step4.cpp, Step5.cpp, and Step6.cpp.

Definition at line 31 of file QmitkSliceWidget.h.


Constructor & Destructor Documentation

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

}

Member Function Documentation

void QmitkSliceWidget::ChangeView ( QAction *  val ) [slot]
mitk::CameraRotationController * QmitkSliceWidget::GetCameraRotationController (  ) const
mitk::BaseController * QmitkSliceWidget::GetController (  ) const
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 (  )
Examples:
Step4.cpp, Step5.cpp, and Step6.cpp.

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
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]

Definition at line 115 of file QmitkSliceWidget.cpp.

References m_View, and SetData().

{
        try
        {
                if (m_DataStorage.IsNotNull())
                {
                        m_DataStorage->Add(node);
                }
        } catch (...)
        {
        }
        SetData(node, m_View);
}
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]
Examples:
Step4.cpp, Step5.cpp, and Step6.cpp.

Definition at line 102 of file QmitkSliceWidget.cpp.

References m_View.

Referenced by main(), SetData(), and Step6::SetupWidgets().

{
        SetData(it->Value(), m_View);
}
void QmitkSliceWidget::SetDataStorage ( mitk::StandaloneDataStorage::Pointer  storage )
Examples:
Step4.cpp, Step5.cpp, and Step6.cpp.

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]
Examples:
Step4.cpp.

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

Member Data Documentation

Definition at line 91 of file QmitkSliceWidget.h.

Referenced by InitWidget(), QmitkSliceWidget(), and SetData().


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