Public Types | Public Slots | Public Member Functions | Protected Slots | Protected Member Functions | Protected Attributes | Friends

QmitkMeasurement Class Reference

#include <QmitkMeasurement.h>

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

List of all members.

Public Types

typedef std::vector
< mitk::DataNode::Pointer
DataNodes

Public Slots

void OnRenderWindowDelete (QObject *obj=0)

Public Member Functions

 QmitkMeasurement ()
virtual ~QmitkMeasurement ()
void CreateQtPartControl (QWidget *parent)
virtual void Activated ()
virtual void Deactivated ()
virtual void NodeChanged (const mitk::DataNode *node)
virtual void PropertyChanged (const mitk::DataNode *node, const mitk::BaseProperty *prop)
virtual void NodeRemoved (const mitk::DataNode *node)
virtual void NodeAddedInDataStorage (const mitk::DataNode *node)
virtual void PlanarFigureInitialized ()
virtual void PlanarFigureSelected (itk::Object *object, const itk::EventObject &event)
virtual void AddFigureToDataStorage (mitk::PlanarFigure *figure, const QString &name, const char *propertyKey=NULL, mitk::BaseProperty *property=NULL)
virtual void OnSelectionChanged (std::vector< mitk::DataNode * > nodes)

Protected Slots

void ActionDrawLineTriggered (bool checked=false)
 # draw actions
void ActionDrawPathTriggered (bool checked=false)
void ActionDrawAngleTriggered (bool checked=false)
void ActionDrawFourPointAngleTriggered (bool checked=false)
void ActionDrawEllipseTriggered (bool checked=false)
void ActionDrawRectangleTriggered (bool checked=false)
void ActionDrawPolygonTriggered (bool checked=false)
void ActionDrawArrowTriggered (bool checked=false)
void ActionDrawTextTriggered (bool checked=false)
void CopyToClipboard (bool checked=false)

Protected Member Functions

void PlanarFigureSelectionChanged ()
void SetMeasurementInfoToRenderWindow (const QString &text, QmitkRenderWindow *_RenderWindow)
bool AssertDrawingIsPossible (bool checked)

Protected Attributes

QGridLayout * m_Layout
QLabel * m_SelectedImage
QAction * m_DrawLine
QAction * m_DrawPath
QAction * m_DrawAngle
QAction * m_DrawFourPointAngle
QAction * m_DrawEllipse
QAction * m_DrawRectangle
QAction * m_DrawPolygon
QToolBar * m_DrawActionsToolBar
QActionGroup * m_DrawActionsGroup
QTextBrowser * m_SelectedPlanarFiguresText
QPushButton * m_CopyToClipboard
vtkRenderer * m_MeasurementInfoRenderer
vtkCornerAnnotation * m_MeasurementInfoAnnotation
berry::ISelectionListener::Pointer m_SelectionListener
mitk::DataStorageSelection::Pointer m_SelectedPlanarFigures
mitk::DataStorageSelection::Pointer m_SelectedImageNode
mitk::WeakPointer< mitk::DataNodem_CurrentFigureNode
unsigned int m_LineCounter
unsigned int m_PathCounter
unsigned int m_AngleCounter
unsigned int m_FourPointAngleCounter
unsigned int m_EllipseCounter
unsigned int m_RectangleCounter
unsigned int m_PolygonCounter
unsigned int m_EndPlacementObserverTag
unsigned int m_SelectObserverTag
bool m_Visible
bool m_CurrentFigureNodeInitialized
QmitkRenderWindowm_LastRenderWindow

Friends

struct berry::SelectionChangedAdapter< QmitkMeasurement >
 berry::SelectionChangedAdapter<QmitkPropertyListView> must be a friend to call

Detailed Description

A view for doing measurements in digital images by means of mitk::Planarfigures which can represent drawing primitives (Lines, circles, ...). The view consists of only three main elements: 1. A toolbar for activating PlanarFigure drawing 2. A textbrowser which shows details for the selected PlanarFigures 3. A button for copying all details to the clipboard

Definition at line 57 of file QmitkMeasurement.h.


Member Typedef Documentation

Just a shortcut

Definition at line 65 of file QmitkMeasurement.h.


Constructor & Destructor Documentation

QmitkMeasurement::QmitkMeasurement (  )
QmitkMeasurement::~QmitkMeasurement (  ) [virtual]

Remove all event listener from DataStorage, DataStorageSelection, Selection Service

Definition at line 78 of file QmitkMeasurement.cpp.

References QmitkFunctionality::GetDefaultDataStorage(), m_MeasurementInfoRenderer, m_SelectedImageNode, m_SelectedPlanarFigures, NodeAddedInDataStorage(), NodeChanged(), NodeRemoved(), PropertyChanged(), and QmitkMeasurement().

{

  m_MeasurementInfoRenderer->Delete();

  this->GetDefaultDataStorage()->AddNodeEvent -= mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeAddedInDataStorage );

  m_SelectedPlanarFigures->NodeChanged.RemoveListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeChanged ) );

  m_SelectedPlanarFigures->NodeRemoved.RemoveListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeRemoved ) );

  m_SelectedPlanarFigures->PropertyChanged.RemoveListener( mitk::MessageDelegate2<QmitkMeasurement
    , const mitk::DataNode*, const mitk::BaseProperty*>( this, &QmitkMeasurement::PropertyChanged ) );

  m_SelectedImageNode->NodeChanged.RemoveListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeChanged ) );

  m_SelectedImageNode->NodeRemoved.RemoveListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeRemoved ) );

  m_SelectedImageNode->PropertyChanged.RemoveListener( mitk::MessageDelegate2<QmitkMeasurement
    , const mitk::DataNode*, const mitk::BaseProperty*>( this, &QmitkMeasurement::PropertyChanged ) );
}

Member Function Documentation

void QmitkMeasurement::ActionDrawAngleTriggered ( bool  checked = false ) [protected, slot]

Definition at line 650 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_AngleCounter, MITK_INFO, and mitk::PlanarAngle::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  mitk::PlanarAngle::Pointer figure = mitk::PlanarAngle::New();
  this->AddFigureToDataStorage(figure, QString("Angle%1").arg(++m_AngleCounter));

  MITK_INFO << "PlanarAngle initialized...";
}
void QmitkMeasurement::ActionDrawArrowTriggered ( bool  checked = false ) [protected, slot]

Definition at line 707 of file QmitkMeasurement.cpp.

References AssertDrawingIsPossible(), and MITK_WARN.

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  MITK_WARN << "Draw Arrow not implemented yet.";
}
void QmitkMeasurement::ActionDrawEllipseTriggered ( bool  checked = false ) [protected, slot]

Definition at line 673 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_EllipseCounter, MITK_INFO, and mitk::PlanarCircle::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  mitk::PlanarCircle::Pointer figure = mitk::PlanarCircle::New();
  this->AddFigureToDataStorage(figure, QString("Circle%1").arg(++m_EllipseCounter));

  MITK_INFO << "PlanarCircle initialized...";
}
void QmitkMeasurement::ActionDrawFourPointAngleTriggered ( bool  checked = false ) [protected, slot]

Definition at line 661 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_FourPointAngleCounter, MITK_INFO, and mitk::PlanarFourPointAngle::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  mitk::PlanarFourPointAngle::Pointer figure =
      mitk::PlanarFourPointAngle::New();
  this->AddFigureToDataStorage(figure, QString("Four Point Angle%1").arg(++m_FourPointAngleCounter));

  MITK_INFO << "PlanarFourPointAngle initialized...";
}
void QmitkMeasurement::ActionDrawLineTriggered ( bool  checked = false ) [protected, slot]

# draw actions

Definition at line 625 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_LineCounter, MITK_INFO, and mitk::PlanarLine::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;
  mitk::PlanarLine::Pointer figure = mitk::PlanarLine::New();
  this->AddFigureToDataStorage(figure, QString("Line%1").arg(++m_LineCounter));

  MITK_INFO << "PlanarLine initialized...";
}
void QmitkMeasurement::ActionDrawPathTriggered ( bool  checked = false ) [protected, slot]

Definition at line 635 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_PathCounter, MITK_INFO, mitk::BoolProperty::New(), and mitk::PlanarPolygon::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  mitk::PlanarPolygon::Pointer figure = mitk::PlanarPolygon::New();
  figure->ClosedOff();

  mitk::BoolProperty::Pointer closedProperty = mitk::BoolProperty::New( false );
  this->AddFigureToDataStorage(figure, QString("Path%1").arg(++m_PathCounter),
    "ClosedPlanarPolygon", closedProperty);

  MITK_INFO << "PlanarPath initialized...";
}
void QmitkMeasurement::ActionDrawPolygonTriggered ( bool  checked = false ) [protected, slot]

Definition at line 695 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_PolygonCounter, MITK_INFO, and mitk::PlanarPolygon::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  mitk::PlanarPolygon::Pointer figure = mitk::PlanarPolygon::New();
  figure->ClosedOn();
  this->AddFigureToDataStorage(figure, QString("Polygon%1").arg(++m_PolygonCounter));

  MITK_INFO << "PlanarPolygon initialized...";
}
void QmitkMeasurement::ActionDrawRectangleTriggered ( bool  checked = false ) [protected, slot]

Definition at line 684 of file QmitkMeasurement.cpp.

References AddFigureToDataStorage(), AssertDrawingIsPossible(), m_RectangleCounter, MITK_INFO, and mitk::PlanarRectangle::New().

Referenced by CreateQtPartControl().

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  mitk::PlanarRectangle::Pointer figure = mitk::PlanarRectangle::New();
  this->AddFigureToDataStorage(figure, QString("Rectangle%1").arg(++m_RectangleCounter));

  MITK_INFO << "PlanarRectangle initialized...";
}
void QmitkMeasurement::ActionDrawTextTriggered ( bool  checked = false ) [protected, slot]

Definition at line 715 of file QmitkMeasurement.cpp.

References AssertDrawingIsPossible(), and MITK_WARN.

{
  if(!this->AssertDrawingIsPossible(checked))
    return;

  MITK_WARN << "Draw Text not implemented yet.";
}
void QmitkMeasurement::Activated (  ) [virtual]

Set widget planes visibility to false. Show only transversal view. Add an interactor to all PlanarFigures in the DataStorage (if they dont have one yet). Add their interactor to the global interaction.

Reimplemented from QmitkFunctionality.

Definition at line 723 of file QmitkMeasurement.cpp.

References QmitkFunctionality::GetActiveStdMultiWidget(), mitk::DataNode::GetData(), QmitkFunctionality::GetDefaultDataStorage(), mitk::GlobalInteraction::GetInstance(), mitk::DataNode::GetInteractor(), m_Visible, mitk::PlanarFigureInteractor::New(), and QmitkStdMultiWidget::SetWidgetPlanesVisibility().

{
  this->GetActiveStdMultiWidget()->SetWidgetPlanesVisibility(false);
  //this->GetActiveStdMultiWidget()->GetRenderWindow1()->FullScreenMode(true);

  mitk::TNodePredicateDataType<mitk::PlanarFigure>::Pointer isPlanarFigure
    = mitk::TNodePredicateDataType<mitk::PlanarFigure>::New();

  mitk::DataStorage::SetOfObjects::ConstPointer _NodeSet = this->GetDefaultDataStorage()->GetAll();
  mitk::DataNode* node = 0;
  mitk::PlanarFigure* figure = 0;
  mitk::PlanarFigureInteractor::Pointer figureInteractor = 0;
  // finally add all nodes to the model
  for(mitk::DataStorage::SetOfObjects::ConstIterator it=_NodeSet->Begin(); it!=_NodeSet->End()
    ; it++)
  {
    node = const_cast<mitk::DataNode*>(it->Value().GetPointer());
    figure = dynamic_cast<mitk::PlanarFigure*>(node->GetData());
    if(figure)
    {
      figureInteractor = dynamic_cast<mitk::PlanarFigureInteractor*>(node->GetInteractor());

      if(figureInteractor.IsNull())
        figureInteractor = mitk::PlanarFigureInteractor::New("PlanarFigureInteractor", node);

      mitk::GlobalInteraction::GetInstance()->AddInteractor(figureInteractor);
    }
  }

  m_Visible = true;

}
void QmitkMeasurement::AddFigureToDataStorage ( mitk::PlanarFigure figure,
const QString &  name,
const char *  propertyKey = NULL,
mitk::BaseProperty property = NULL 
) [virtual]

Definition at line 555 of file QmitkMeasurement.cpp.

References QmitkFunctionality::GetDataManagerSelection(), QmitkFunctionality::GetDataStorage(), mitk::RenderingManager::GetInstance(), mitk::WeakPointer< TObjectType >::IsNotNull(), m_CurrentFigureNode, m_CurrentFigureNodeInitialized, m_EndPlacementObserverTag, m_SelectedPlanarFigures, m_SelectObserverTag, mitk::DataNode::New(), PlanarFigureInitialized(), and PlanarFigureSelected().

Referenced by ActionDrawAngleTriggered(), ActionDrawEllipseTriggered(), ActionDrawFourPointAngleTriggered(), ActionDrawLineTriggered(), ActionDrawPathTriggered(), ActionDrawPolygonTriggered(), and ActionDrawRectangleTriggered().

{
  if ( m_CurrentFigureNode.IsNotNull() )
  {
    m_CurrentFigureNode->GetData()->RemoveObserver( m_EndPlacementObserverTag );
  }

  mitk::DataNode::Pointer newNode = mitk::DataNode::New();
  newNode->SetName(name.toStdString());
  newNode->SetData(figure);

  // Add custom property, if available
  if ( (propertyKey != NULL) && (property != NULL) )
  {
    newNode->AddProperty( propertyKey, property );
  }

  // add observer for event when figure has been placed
  typedef itk::SimpleMemberCommand< QmitkMeasurement > SimpleCommandType;
  SimpleCommandType::Pointer initializationCommand = SimpleCommandType::New();
  initializationCommand->SetCallbackFunction( this, &QmitkMeasurement::PlanarFigureInitialized );
  m_EndPlacementObserverTag = figure->AddObserver( mitk::EndPlacementPlanarFigureEvent(), initializationCommand );

  // add observer for event when figure is picked (selected)
  typedef itk::MemberCommand< QmitkMeasurement > MemberCommandType;
  MemberCommandType::Pointer selectCommand = MemberCommandType::New();
  selectCommand->SetCallbackFunction( this, &QmitkMeasurement::PlanarFigureSelected );
  m_SelectObserverTag = figure->AddObserver( mitk::SelectPlanarFigureEvent(), selectCommand );


  // figure drawn on the topmost layer / image
  this->GetDataStorage()->Add(newNode, this->DetectTopMostVisibleImage() );
  std::vector<mitk::DataNode*> selectedNodes = GetDataManagerSelection();
  for(unsigned int i = 0; i < selectedNodes.size(); i++)
  {
    selectedNodes[i]->SetSelected(false);
  }
  selectedNodes = m_SelectedPlanarFigures->GetNodes();
  for(unsigned int i = 0; i < selectedNodes.size(); i++)
  {
    selectedNodes[i]->SetSelected(false);
  }
  newNode->SetSelected(true);


  m_CurrentFigureNodeInitialized = false;
  m_CurrentFigureNode = newNode;

  *m_SelectedPlanarFigures = newNode;

  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
bool QmitkMeasurement::AssertDrawingIsPossible ( bool  checked ) [protected]
void QmitkMeasurement::CopyToClipboard ( bool  checked = false ) [protected, slot]

Definition at line 800 of file QmitkMeasurement.cpp.

References QuadProgPP::distance(), mitk::PlanarFigure::GetFeatureName(), mitk::PlanarFigure::GetFeatureUnit(), mitk::PlanarFigure::GetNumberOfFeatures(), mitk::PlanarFigure::GetQuantity(), mitk::PlanarFigure::IsFeatureActive(), and m_SelectedPlanarFigures.

Referenced by CreateQtPartControl().

{
  std::vector<QString> headerRow;
  std::vector<std::vector<QString> > rows;
  QString featureName;
  QString featureQuantity;
  std::vector<QString> newRow;
  headerRow.push_back("Name");

  std::vector<mitk::DataNode*> nodes = m_SelectedPlanarFigures->GetNodes();

  for (std::vector<mitk::DataNode*>::iterator it = nodes.begin(); it
      != nodes.end(); ++it)
  {
    mitk::PlanarFigure* planarFigure =
        dynamic_cast<mitk::PlanarFigure*> ((*it)->GetData());
    if (!planarFigure)
      continue;

    newRow.clear();
    newRow.push_back(QString::fromStdString((*it)->GetName()));
    newRow.resize(headerRow.size());
    for (unsigned int i = 0; i < planarFigure->GetNumberOfFeatures(); ++i)
    {
      if ( !planarFigure->IsFeatureActive( i ) ) continue;

      featureName = planarFigure->GetFeatureName(i);
      featureName.append(QString(" [%1]").arg(planarFigure->GetFeatureUnit(i)));
      std::vector<QString>::iterator itColumn = std::find(headerRow.begin(),
          headerRow.end(), featureName);

      featureQuantity
          = QString("%1").arg(planarFigure->GetQuantity(i)).replace(QChar('.'),
              ",");
      if (itColumn == headerRow.end())
      {
        headerRow.push_back(featureName);
        newRow.push_back(featureQuantity);
      } else
      {
        newRow[std::distance(headerRow.begin(), itColumn)] = featureQuantity;
      }

    }
    rows.push_back(newRow);
  }

  QString clipboardText;
  for (std::vector<QString>::iterator it = headerRow.begin(); it
      != headerRow.end(); ++it)
    clipboardText.append(QString("%1 \t").arg(*it));

  for (std::vector<std::vector<QString> >::iterator it = rows.begin(); it
      != rows.end(); ++it)
  {
    clipboardText.append("\n");
    for (std::vector<QString>::iterator it2 = (*it).begin(); it2 != (*it).end(); ++it2)
    {
      clipboardText.append(QString("%1 \t").arg(*it2));
    }
  }

  QApplication::clipboard()->setText(clipboardText, QClipboard::Clipboard);

}
void QmitkMeasurement::CreateQtPartControl ( QWidget *  parent ) [virtual]

Initializes all variables. Builds up GUI.

Implements berry::QtViewPart.

Definition at line 105 of file QmitkMeasurement.cpp.

References ActionDrawAngleTriggered(), ActionDrawEllipseTriggered(), ActionDrawFourPointAngleTriggered(), ActionDrawLineTriggered(), ActionDrawPathTriggered(), ActionDrawPolygonTriggered(), ActionDrawRectangleTriggered(), CopyToClipboard(), QmitkFunctionality::GetDefaultDataStorage(), m_CopyToClipboard, m_DrawActionsGroup, m_DrawActionsToolBar, m_DrawAngle, m_DrawEllipse, m_DrawFourPointAngle, m_DrawLine, m_DrawPath, m_DrawPolygon, m_DrawRectangle, m_Layout, m_MeasurementInfoAnnotation, m_MeasurementInfoRenderer, m_SelectedImage, m_SelectedImageNode, m_SelectedPlanarFigures, m_SelectedPlanarFiguresText, mitk::DataStorageSelection::New(), NodeAddedInDataStorage(), NodeChanged(), NodeRemoved(), and PropertyChanged().

{
  m_MeasurementInfoRenderer = vtkRenderer::New();
  m_MeasurementInfoAnnotation = vtkCornerAnnotation::New();
  vtkTextProperty *textProp = vtkTextProperty::New();

  m_MeasurementInfoAnnotation->SetMaximumFontSize(12);
  textProp->SetColor(1.0, 1.0, 1.0);
  m_MeasurementInfoAnnotation->SetTextProperty(textProp);

  m_MeasurementInfoRenderer->AddActor(m_MeasurementInfoAnnotation);
  m_DrawActionsToolBar = new QToolBar;
  m_DrawActionsGroup = new QActionGroup(this);
  m_DrawActionsGroup->setExclusive(true);

  //# add actions
  QAction* currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/line.png"), "Draw Line");
  m_DrawLine = currentAction;
  m_DrawLine->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawLineTriggered(bool) ) );

  currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/path.png"), "Draw Path");
  m_DrawPath = currentAction;
  m_DrawPath->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawPathTriggered(bool) ) );

  currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/angle.png"), "Draw Angle");
  m_DrawAngle = currentAction;
  m_DrawAngle->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawAngleTriggered(bool) ) );

  currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/four-point-angle.png"), "Draw Four Point Angle");
  m_DrawFourPointAngle = currentAction;
  m_DrawFourPointAngle->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawFourPointAngleTriggered(bool) ) );

  currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/circle.png"), "Draw Circle");
  m_DrawEllipse = currentAction;
  m_DrawEllipse->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawEllipseTriggered(bool) ) );

  currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/rectangle.png"), "Draw Rectangle");
  m_DrawRectangle = currentAction;
  m_DrawRectangle->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawRectangleTriggered(bool) ) );

  currentAction = m_DrawActionsToolBar->addAction(QIcon(
      ":/measurement/polygon.png"), "Draw Polygon");
  m_DrawPolygon = currentAction;
  m_DrawPolygon->setCheckable(true);
  m_DrawActionsToolBar->addAction(currentAction);
  m_DrawActionsGroup->addAction(currentAction);
  QObject::connect( currentAction, SIGNAL( triggered(bool) )
      , this, SLOT( ActionDrawPolygonTriggered(bool) ) );

  QLabel* selectedImageLabel = new QLabel("Selected Image: ");
  m_SelectedImage = new QLabel;
  m_SelectedImage->setStyleSheet("font-weight: bold;");
  m_SelectedPlanarFiguresText = new QTextBrowser;

  m_CopyToClipboard = new QPushButton("Copy to Clipboard");
  QObject::connect( m_CopyToClipboard, SIGNAL( clicked(bool) )
      , this, SLOT( CopyToClipboard(bool) ) );

  m_Layout = new QGridLayout;
  m_Layout->addWidget(selectedImageLabel, 0, 0, 1, 1);
  m_Layout->addWidget(m_SelectedImage, 0, 1, 1, 1);
  m_Layout->addWidget(m_DrawActionsToolBar, 1, 0, 1, 2);
  m_Layout->addWidget(m_SelectedPlanarFiguresText, 2, 0, 1, 2);
  m_Layout->addWidget(m_CopyToClipboard, 3, 0, 1, 2);
  m_Layout->setRowStretch(0, 1);
  m_Layout->setRowStretch(1, 1);
  m_Layout->setRowStretch(2, 10);
  m_Layout->setRowStretch(3, 1);
  m_Layout->setContentsMargins(2, 2, 2, 2);

  parent->setLayout(m_Layout);


  m_SelectedPlanarFigures = mitk::DataStorageSelection::New(this->GetDefaultDataStorage(), false);

  m_SelectedPlanarFigures->NodeChanged.AddListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeChanged ) );

  m_SelectedPlanarFigures->NodeRemoved.AddListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeRemoved ) );

  m_SelectedPlanarFigures->PropertyChanged.AddListener( mitk::MessageDelegate2<QmitkMeasurement
    , const mitk::DataNode*, const mitk::BaseProperty*>( this, &QmitkMeasurement::PropertyChanged ) );

  m_SelectedImageNode = mitk::DataStorageSelection::New(this->GetDefaultDataStorage(), false);

  m_SelectedImageNode->PropertyChanged.AddListener( mitk::MessageDelegate2<QmitkMeasurement
    , const mitk::DataNode*, const mitk::BaseProperty*>( this, &QmitkMeasurement::PropertyChanged ) );

  m_SelectedImageNode->NodeChanged.AddListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeChanged ) );

  m_SelectedImageNode->NodeRemoved.AddListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeRemoved ) );

  this->GetDefaultDataStorage()->AddNodeEvent.AddListener( mitk::MessageDelegate1<QmitkMeasurement
    , const mitk::DataNode*>( this, &QmitkMeasurement::NodeAddedInDataStorage ) );

}
void QmitkMeasurement::Deactivated (  ) [virtual]

Show widget planes and all renderwindows again. Remove all planar figure interactors from the global interaction.

Reimplemented from QmitkFunctionality.

Definition at line 756 of file QmitkMeasurement.cpp.

References QmitkFunctionality::GetActiveStdMultiWidget(), mitk::DataNode::GetData(), QmitkFunctionality::GetDefaultDataStorage(), mitk::GlobalInteraction::GetInstance(), mitk::DataNode::GetInteractor(), m_Visible, SetMeasurementInfoToRenderWindow(), and QmitkStdMultiWidget::SetWidgetPlanesVisibility().

{
  this->GetActiveStdMultiWidget()->SetWidgetPlanesVisibility(true);
  //this->GetActiveStdMultiWidget()->GetRenderWindow1()->FullScreenMode(false);
  this->SetMeasurementInfoToRenderWindow("", 0);

  mitk::DataStorage::SetOfObjects::ConstPointer _NodeSet = this->GetDefaultDataStorage()->GetAll();
  mitk::DataNode* node = 0;
  mitk::PlanarFigure* figure = 0;
  mitk::PlanarFigureInteractor::Pointer figureInteractor = 0;
  // finally add all nodes to the model
  for(mitk::DataStorage::SetOfObjects::ConstIterator it=_NodeSet->Begin(); it!=_NodeSet->End()
    ; it++)
  {
    node = const_cast<mitk::DataNode*>(it->Value().GetPointer());
    figure = dynamic_cast<mitk::PlanarFigure*>(node->GetData());
    if(figure)
    {
      figureInteractor = dynamic_cast<mitk::PlanarFigureInteractor*>(node->GetInteractor());

      if(figureInteractor)
        mitk::GlobalInteraction::GetInstance()->RemoveInteractor(figureInteractor);
    }
  }

  m_Visible = false;
}
void QmitkMeasurement::NodeAddedInDataStorage ( const mitk::DataNode node ) [virtual]

Definition at line 446 of file QmitkMeasurement.cpp.

References mitk::DataNode::GetData(), QmitkFunctionality::GetDefaultDataStorage(), mitk::GlobalInteraction::GetInstance(), mitk::DataNode::GetInteractor(), mitk::WeakPointer< TObjectType >::IsNotNull(), m_CurrentFigureNode, m_CurrentFigureNodeInitialized, m_Visible, and mitk::PlanarFigureInteractor::New().

Referenced by CreateQtPartControl(), and ~QmitkMeasurement().

{
  if(!m_Visible)
    return;
  mitk::DataNode* nonConstNode = const_cast<mitk::DataNode*>(node);
  mitk::PlanarFigure* figure = dynamic_cast<mitk::PlanarFigure*>(nonConstNode->GetData());
  if(figure)
  {
    mitk::PlanarFigureInteractor::Pointer figureInteractor
      = dynamic_cast<mitk::PlanarFigureInteractor*>(node->GetInteractor());

    if(figureInteractor.IsNull())
      figureInteractor = mitk::PlanarFigureInteractor::New("PlanarFigureInteractor", nonConstNode);

    // remove old interactor if present
    if( m_CurrentFigureNode.IsNotNull() && m_CurrentFigureNodeInitialized == false )
    {
      mitk::Interactor::Pointer oldInteractor = m_CurrentFigureNode->GetInteractor();
      if(oldInteractor.IsNotNull())
        mitk::GlobalInteraction::GetInstance()->RemoveInteractor(oldInteractor);

      this->GetDefaultDataStorage()->Remove(m_CurrentFigureNode);
    }

    mitk::GlobalInteraction::GetInstance()->AddInteractor(figureInteractor);
  }
}
void QmitkMeasurement::NodeChanged ( const mitk::DataNode node ) [virtual]

Invoked from a DataStorage selection

Reimplemented from QmitkFunctionality.

Definition at line 790 of file QmitkMeasurement.cpp.

References PlanarFigureSelectionChanged().

Referenced by CreateQtPartControl(), and ~QmitkMeasurement().

void QmitkMeasurement::NodeRemoved ( const mitk::DataNode node ) [virtual]

Called when a DataStorage Remove event was thrown. May be reimplemented by deriving classes.

Reimplemented from QmitkFunctionality.

Definition at line 795 of file QmitkMeasurement.cpp.

References PlanarFigureSelectionChanged().

Referenced by CreateQtPartControl(), and ~QmitkMeasurement().

void QmitkMeasurement::OnRenderWindowDelete ( QObject *  obj = 0 ) [slot]

Called when the renderwindow gets deleted

Definition at line 905 of file QmitkMeasurement.cpp.

References m_LastRenderWindow.

Referenced by SetMeasurementInfoToRenderWindow().

void QmitkMeasurement::OnSelectionChanged ( std::vector< mitk::DataNode * >  nodes ) [virtual]

Invoked when the DataManager selection changed. If an image is in the selection it will be set as the selected one for measurement, If a planarfigure is in the selection its parent image will be set as the selected one for measurement. All selected planarfigures will be added to m_SelectedPlanarFigures. Then PlanarFigureSelectionChanged is called

Reimplemented from QmitkFunctionality.

Definition at line 235 of file QmitkMeasurement.cpp.

References mitk::DataNode::GetData(), QmitkFunctionality::GetDefaultDataStorage(), m_SelectedImageNode, m_SelectedPlanarFigures, and PlanarFigureSelectionChanged().

{
  if ( nodes.empty() ) return;

  m_SelectedImageNode->RemoveAllNodes();

  mitk::DataNode* _DataNode = 0;
  mitk::BaseData* _BaseData;
  mitk::PlanarFigure* _PlanarFigure;
  mitk::Image* selectedImage;
  m_SelectedPlanarFigures->RemoveAllNodes();

  for (std::vector<mitk::DataNode*>::iterator it = nodes.begin();
      it != nodes.end();
      ++it)
  {
    _PlanarFigure = 0;

    _DataNode = *it;

    if (!_DataNode)
      continue;

    _BaseData = _DataNode->GetData();

    if (!_BaseData)
      continue;

    // planar figure selected
    if ((_PlanarFigure = dynamic_cast<mitk::PlanarFigure *> (_BaseData)))
    {
      // add to the selected planar figures
      m_SelectedPlanarFigures->AddNode(_DataNode);
      // take parent image as the selected image
      mitk::DataStorage::SetOfObjects::ConstPointer parents =
          this->GetDefaultDataStorage()->GetSources(_DataNode);
      if (parents->size() > 0)
      {
        mitk::DataNode::Pointer parent = parents->front();
        if ((selectedImage = dynamic_cast<mitk::Image *> (parent->GetData())))
        {
          *m_SelectedImageNode = parent;
        }
      }

    }
    else if ((selectedImage = dynamic_cast<mitk::Image *> (_BaseData)))
    {
      *m_SelectedImageNode = _DataNode;
      /*mitk::RenderingManager::GetInstance()->InitializeViews(
        selectedImage->GetTimeSlicedGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true );*/
    }
  } // end for

  this->PlanarFigureSelectionChanged();
}
void QmitkMeasurement::PlanarFigureInitialized (  ) [virtual]
void QmitkMeasurement::PlanarFigureSelected ( itk::Object *  object,
const itk::EventObject &  event 
) [virtual]

Definition at line 494 of file QmitkMeasurement.cpp.

References QmitkFunctionality::GetDataManagerSelection(), QmitkFunctionality::GetDefaultDataStorage(), m_CurrentFigureNode, m_SelectedPlanarFigures, mitk::NodePredicateData::New(), PlanarFigureSelectionChanged(), and mitk::DataNode::SetSelected().

Referenced by AddFigureToDataStorage().

{
  // Mark to-be-edited PlanarFigure as selected
  mitk::PlanarFigure* figure = dynamic_cast< mitk::PlanarFigure* >( object );
  if ( figure != NULL )
  {
    // Get node corresponding to PlanarFigure
    mitk::DataNode* figureNode = this->GetDefaultDataStorage()->GetNode( 
      mitk::NodePredicateData::New( figure ) );

    // Select this node (and deselect all others)
    std::vector< mitk::DataNode* > selectedNodes = this->GetDataManagerSelection();
    for ( unsigned int i = 0; i < selectedNodes.size(); i++ )
    {
      selectedNodes[i]->SetSelected( false );
    }
    selectedNodes = m_SelectedPlanarFigures->GetNodes();
    for ( unsigned int i = 0; i < selectedNodes.size(); i++ )
    {
      selectedNodes[i]->SetSelected( false );
    }
    figureNode->SetSelected( true );

    m_CurrentFigureNode = figureNode;

    *m_SelectedPlanarFigures = figureNode;


    // Re-initialize after selecting new PlanarFigure
    this->PlanarFigureSelectionChanged();
  }
}
void QmitkMeasurement::PlanarFigureSelectionChanged (  ) [protected]

Prints all features of the selected PlanarFigures into the TextBrowser. For the last figure in the selection list:

  • Go to the corresponding slice and show figure
  • Draw info text on the bottom right side of the corresponding renderwindow

Definition at line 292 of file QmitkMeasurement.cpp.

References mitk::PlanarFourPointAngle::FEATURE_ID_ANGLE, mitk::PlanarAngle::FEATURE_ID_ANGLE, QmitkFunctionality::GetActiveStdMultiWidget(), mitk::Image::GetDimension(), mitk::PlanarFigure::GetFeatureName(), mitk::PlanarFigure::GetFeatureUnit(), mitk::PlanarFigure::GetGeometry2D(), mitk::RenderingManager::GetInstance(), mitk::PlanarFigure::GetNumberOfFeatures(), mitk::Geometry3D::GetOrigin(), mitk::PlanarFigure::GetQuantity(), mitk::RenderWindowBase::GetRenderer(), QmitkStdMultiWidget::GetRenderWindow1(), QmitkStdMultiWidget::GetRenderWindow2(), QmitkStdMultiWidget::GetRenderWindow3(), QmitkStdMultiWidget::GetRenderWindow4(), mitk::RenderWindowBase::GetSliceNavigationController(), QmitkFunctionality::IsActivated(), mitk::PlanarFigure::IsFeatureActive(), m_DrawActionsToolBar, m_SelectedImage, m_SelectedImageNode, m_SelectedPlanarFigures, m_SelectedPlanarFiguresText, mitk::SliceNavigationController::SelectSliceByPoint(), and SetMeasurementInfoToRenderWindow().

Referenced by NodeChanged(), NodeRemoved(), OnSelectionChanged(), PlanarFigureInitialized(), PlanarFigureSelected(), and PropertyChanged().

{
  if ( !this->IsActivated() ) return;

  if (m_SelectedImageNode->GetNode().IsNotNull())
  {
    mitk::Image* selectedImage = dynamic_cast<mitk::Image*>(m_SelectedImageNode->GetNode()->GetData());
    if(selectedImage && selectedImage->GetDimension() > 3)
    {
      m_SelectedImageNode->RemoveAllNodes();
      m_SelectedImage->setText( "4D images are not supported." );
      m_DrawActionsToolBar->setEnabled(false);
    }
    else
    {
      m_SelectedImage->setText(QString::fromStdString(
          m_SelectedImageNode->GetNode()->GetName()));
      m_DrawActionsToolBar->setEnabled(true);
    }
  }
  else
  {
    m_SelectedImage->setText(
        "None. Please select an image.");

    m_DrawActionsToolBar->setEnabled(false);
  }

  if (m_SelectedPlanarFigures->GetSize() == 0){
    this->SetMeasurementInfoToRenderWindow("", this->GetActiveStdMultiWidget()->GetRenderWindow1());
    this->SetMeasurementInfoToRenderWindow("", this->GetActiveStdMultiWidget()->GetRenderWindow2());
    this->SetMeasurementInfoToRenderWindow("", this->GetActiveStdMultiWidget()->GetRenderWindow3());
    this->SetMeasurementInfoToRenderWindow("", this->GetActiveStdMultiWidget()->GetRenderWindow4());
  }

  unsigned int j = 1;
  mitk::PlanarFigure* _PlanarFigure = 0;
  mitk::PlanarAngle* planarAngle = 0;
  mitk::PlanarFourPointAngle* planarFourPointAngle = 0;
  mitk::DataNode::Pointer node = 0;
  m_SelectedPlanarFiguresText->clear();
  QString infoText;
  QString plainInfoText;
  std::vector<mitk::DataNode*> nodes = m_SelectedPlanarFigures->GetNodes();

  for (std::vector<mitk::DataNode*>::iterator it = nodes.begin(); it
      != nodes.end(); ++it, ++j)
  {
    plainInfoText.clear();
    node = *it;
    if(j>1)
      infoText.append("<br />");

    infoText.append(QString("<b>%1</b><hr />").arg(QString::fromStdString(
        node->GetName())));
    plainInfoText.append(QString("%1").arg(QString::fromStdString(
        node->GetName())));

    _PlanarFigure = dynamic_cast<mitk::PlanarFigure*> (node->GetData());

    planarAngle = dynamic_cast<mitk::PlanarAngle*> (_PlanarFigure);
    if(!planarAngle)
    {
      planarFourPointAngle = dynamic_cast<mitk::PlanarFourPointAngle*> (_PlanarFigure);
    }

    if(!_PlanarFigure)
      continue;

    double featureQuantity = 0.0;
    for (unsigned int i = 0; i < _PlanarFigure->GetNumberOfFeatures(); ++i)
    {
      if ( !_PlanarFigure->IsFeatureActive( i ) ) continue;

      featureQuantity = _PlanarFigure->GetQuantity(i);
      if ((planarAngle && i == planarAngle->FEATURE_ID_ANGLE)
          || (planarFourPointAngle && i == planarFourPointAngle->FEATURE_ID_ANGLE))
        featureQuantity = featureQuantity * 180 / vnl_math::pi;

      infoText.append(
          QString("<i>%1</i>: %2 %3") .arg(QString(
              _PlanarFigure->GetFeatureName(i))) .arg(featureQuantity, 0, 'f',
              2) .arg(QString(_PlanarFigure->GetFeatureUnit(i))));

      plainInfoText.append(
          QString("\n%1: %2 %3") .arg(QString(_PlanarFigure->GetFeatureName(i))) .arg(
              featureQuantity, 0, 'f', 2) .arg(QString(
              _PlanarFigure->GetFeatureUnit(i))));

      if(i+1 != _PlanarFigure->GetNumberOfFeatures())
        infoText.append("<br />");
    }

    if (j != nodes.size())
      infoText.append("<br />");
  }

  m_SelectedPlanarFiguresText->setHtml(infoText);

  // for the last selected planar figure ...
  if (_PlanarFigure)
  {
    const mitk::PlaneGeometry
        * _PlaneGeometry =
            dynamic_cast<const mitk::PlaneGeometry*> (_PlanarFigure->GetGeometry2D());

    QmitkRenderWindow* selectedRenderWindow = 0;
    QmitkRenderWindow* RenderWindow1 =
        this->GetActiveStdMultiWidget()->GetRenderWindow1();
    QmitkRenderWindow* RenderWindow2 =
        this->GetActiveStdMultiWidget()->GetRenderWindow2();
    QmitkRenderWindow* RenderWindow3 =
        this->GetActiveStdMultiWidget()->GetRenderWindow3();
    QmitkRenderWindow* RenderWindow4 =
        this->GetActiveStdMultiWidget()->GetRenderWindow4();
    bool PlanarFigureInitializedWindow = false;

    // find initialized renderwindow
    if (node->GetBoolProperty("PlanarFigureInitializedWindow",
        PlanarFigureInitializedWindow, RenderWindow1->GetRenderer()))
      selectedRenderWindow = RenderWindow1;
    if (!selectedRenderWindow && node->GetBoolProperty(
        "PlanarFigureInitializedWindow", PlanarFigureInitializedWindow,
        RenderWindow2->GetRenderer()))
      selectedRenderWindow = RenderWindow2;
    if (!selectedRenderWindow && node->GetBoolProperty(
        "PlanarFigureInitializedWindow", PlanarFigureInitializedWindow,
        RenderWindow3->GetRenderer()))
      selectedRenderWindow = RenderWindow3;
    if (!selectedRenderWindow && node->GetBoolProperty(
        "PlanarFigureInitializedWindow", PlanarFigureInitializedWindow,
        RenderWindow4->GetRenderer()))
      selectedRenderWindow = RenderWindow4;

    // make node visible
    if (selectedRenderWindow)
    {
      mitk::Point3D centerP = _PlaneGeometry->GetOrigin();
      //selectedRenderWindow->GetSliceNavigationController()->ReorientSlices(
          //centerP, _PlaneGeometry->GetNormal());
      selectedRenderWindow->GetSliceNavigationController()->SelectSliceByPoint(
          centerP);

      // now paint infos also on renderwindow
      this->SetMeasurementInfoToRenderWindow(plainInfoText, selectedRenderWindow);
    }
  }
  // no last planarfigure
  else
    this->SetMeasurementInfoToRenderWindow("", 0);

  mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
void QmitkMeasurement::PropertyChanged ( const mitk::DataNode node,
const mitk::BaseProperty prop 
) [virtual]
void QmitkMeasurement::SetMeasurementInfoToRenderWindow ( const QString &  text,
QmitkRenderWindow _RenderWindow 
) [protected]

Draws a string on the bottom left side of the render window

Definition at line 866 of file QmitkMeasurement.cpp.

References mitk::VtkLayerController::GetInstance(), m_LastRenderWindow, m_MeasurementInfoAnnotation, m_MeasurementInfoRenderer, m_SelectedPlanarFigures, and OnRenderWindowDelete().

Referenced by Deactivated(), and PlanarFigureSelectionChanged().

{
  if(m_LastRenderWindow != _RenderWindow)
  {

    if(m_LastRenderWindow)
    {
      QObject::disconnect( m_LastRenderWindow, SIGNAL( destroyed(QObject*) )
        , this, SLOT( OnRenderWindowDelete(QObject*) ) );
    }
    m_LastRenderWindow = _RenderWindow;
    if(m_LastRenderWindow)
    {
      QObject::connect( m_LastRenderWindow, SIGNAL( destroyed(QObject*) )
        , this, SLOT( OnRenderWindowDelete(QObject*) ) );
    }
  }

  if(m_LastRenderWindow)
  {
    if (!text.isEmpty() && m_SelectedPlanarFigures->GetNode()->IsSelected())
    {
      m_MeasurementInfoAnnotation->SetText(1, text.toLatin1().data());
      mitk::VtkLayerController::GetInstance(m_LastRenderWindow->GetRenderWindow())->InsertForegroundRenderer(
        m_MeasurementInfoRenderer, true);
    }
    else
    {
      if (mitk::VtkLayerController::GetInstance(
        m_LastRenderWindow->GetRenderWindow()) ->IsRendererInserted(
        m_MeasurementInfoRenderer))
        mitk::VtkLayerController::GetInstance(m_LastRenderWindow->GetRenderWindow())->RemoveRenderer(
        m_MeasurementInfoRenderer);
    }
  }
}

Friends And Related Function Documentation

berry::SelectionChangedAdapter<QmitkPropertyListView> must be a friend to call

Definition at line 168 of file QmitkMeasurement.h.


Member Data Documentation

unsigned int QmitkMeasurement::m_AngleCounter [protected]

Definition at line 181 of file QmitkMeasurement.h.

Referenced by ActionDrawAngleTriggered().

QPushButton* QmitkMeasurement::m_CopyToClipboard [protected]

Definition at line 162 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl().

QActionGroup* QmitkMeasurement::m_DrawActionsGroup [protected]

Definition at line 160 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl().

Definition at line 159 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureSelectionChanged().

QAction* QmitkMeasurement::m_DrawAngle [protected]

Definition at line 154 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureInitialized().

QAction* QmitkMeasurement::m_DrawEllipse [protected]

Definition at line 156 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureInitialized().

Definition at line 155 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureInitialized().

QAction* QmitkMeasurement::m_DrawLine [protected]
QAction* QmitkMeasurement::m_DrawPath [protected]

Definition at line 153 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureInitialized().

QAction* QmitkMeasurement::m_DrawPolygon [protected]

Definition at line 158 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureInitialized().

QAction* QmitkMeasurement::m_DrawRectangle [protected]

Definition at line 157 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureInitialized().

unsigned int QmitkMeasurement::m_EllipseCounter [protected]

Definition at line 183 of file QmitkMeasurement.h.

Referenced by ActionDrawEllipseTriggered().

Definition at line 186 of file QmitkMeasurement.h.

Referenced by AddFigureToDataStorage().

Definition at line 182 of file QmitkMeasurement.h.

Referenced by ActionDrawFourPointAngleTriggered().

Saves the last renderwindow any info data was inserted

Definition at line 194 of file QmitkMeasurement.h.

Referenced by OnRenderWindowDelete(), and SetMeasurementInfoToRenderWindow().

QGridLayout* QmitkMeasurement::m_Layout [protected]

Definition at line 150 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl().

unsigned int QmitkMeasurement::m_LineCounter [protected]

Counter variables to give a newly created Figure a unique name.

Definition at line 179 of file QmitkMeasurement.h.

Referenced by ActionDrawLineTriggered().

vtkCornerAnnotation* QmitkMeasurement::m_MeasurementInfoAnnotation [protected]

Definition at line 164 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and SetMeasurementInfoToRenderWindow().

unsigned int QmitkMeasurement::m_PathCounter [protected]

Definition at line 180 of file QmitkMeasurement.h.

Referenced by ActionDrawPathTriggered().

unsigned int QmitkMeasurement::m_PolygonCounter [protected]

Definition at line 185 of file QmitkMeasurement.h.

Referenced by ActionDrawPolygonTriggered().

unsigned int QmitkMeasurement::m_RectangleCounter [protected]

Definition at line 184 of file QmitkMeasurement.h.

Referenced by ActionDrawRectangleTriggered().

QLabel* QmitkMeasurement::m_SelectedImage [protected]

Definition at line 151 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureSelectionChanged().

Selected image on which measurements will be performed

Definition at line 174 of file QmitkMeasurement.h.

Referenced by AssertDrawingIsPossible(), CreateQtPartControl(), OnSelectionChanged(), PlanarFigureSelectionChanged(), and ~QmitkMeasurement().

Definition at line 161 of file QmitkMeasurement.h.

Referenced by CreateQtPartControl(), and PlanarFigureSelectionChanged().

Definition at line 169 of file QmitkMeasurement.h.

unsigned int QmitkMeasurement::m_SelectObserverTag [protected]

Definition at line 187 of file QmitkMeasurement.h.

Referenced by AddFigureToDataStorage().

bool QmitkMeasurement::m_Visible [protected]

Saves if this view is visible

Reimplemented from QmitkFunctionality.

Definition at line 188 of file QmitkMeasurement.h.

Referenced by Activated(), Deactivated(), and NodeAddedInDataStorage().


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