Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

mitk::CoordinateSupplier Class Reference
[Interaction Classes]

Interactor. More...

#include <mitkCoordinateSupplier.h>

Inheritance diagram for mitk::CoordinateSupplier:
Inheritance graph
[legend]
Collaboration diagram for mitk::CoordinateSupplier:
Collaboration graph
[legend]

List of all members.

Public Types

typedef CoordinateSupplier Self
typedef StateMachine Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual const Point3D & GetCurrentPoint ()

Static Public Member Functions

static Pointer New (const char *_arga, OperationActor *_argb)

Protected Member Functions

 CoordinateSupplier (const char *type, OperationActor *operationActor)
 Constructor with needed arguments.
 ~CoordinateSupplier ()
virtual bool ExecuteAction (Action *action, mitk::StateEvent const *stateEvent)
 executes the actions that are sent to this statemachine derived from StateMachine

Detailed Description

Interactor.

sends a Point, that can be processed in its own OperationActor

Definition at line 36 of file mitkCoordinateSupplier.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::CoordinateSupplier::ConstPointer

Reimplemented from mitk::StateMachine.

Definition at line 39 of file mitkCoordinateSupplier.h.

typedef itk::SmartPointer<Self> mitk::CoordinateSupplier::Pointer

Reimplemented from mitk::StateMachine.

Definition at line 39 of file mitkCoordinateSupplier.h.

Reimplemented from mitk::StateMachine.

Definition at line 39 of file mitkCoordinateSupplier.h.

Reimplemented from mitk::StateMachine.

Definition at line 39 of file mitkCoordinateSupplier.h.


Constructor & Destructor Documentation

mitk::CoordinateSupplier::CoordinateSupplier ( const char *  type,
mitk::OperationActor operationActor 
) [protected]

Constructor with needed arguments.

Parameters:
type,:string, that describes the StateMachine-Scheme to take from all SM (see XML-File)
operationActor,:the Data, operations (+ points) are send to

Definition at line 34 of file mitkCoordinateSupplier.cpp.

: mitk::StateMachine(type), m_Destination(operationActor)
{
  m_CurrentPoint.Fill(0);
}
mitk::CoordinateSupplier::~CoordinateSupplier (  ) [protected]

Definition at line 40 of file mitkCoordinateSupplier.cpp.

{

}

Member Function Documentation

bool mitk::CoordinateSupplier::ExecuteAction ( Action action,
mitk::StateEvent const *  stateEvent 
) [protected, virtual]

executes the actions that are sent to this statemachine derived from StateMachine

Reimplemented from mitk::StateMachine.

Definition at line 45 of file mitkCoordinateSupplier.cpp.

References mitk::AcFINISHMOVEMENT, mitk::AcINITMOVEMENT, mitk::AcMOVE, mitk::AcMOVEPOINT, mitk::AcNEWPOINT, mitk::Action::GetActionId(), mitk::BaseRenderer::GetCurrentWorldGeometry2D(), mitk::StateEvent::GetEvent(), mitk::OperationEvent::GetOperation(), mitk::PointOperation::GetPoint(), mitk::Event::GetSender(), mitk::Geometry3D::GetTimeBounds(), mitk::DisplayPositionEvent::GetWorldPosition(), mitk::OpADD, mitk::OpDELETE, mitk::OpMOVE, and mitk::OpTERMINATE.

{
    bool ok = false;
  
    const PositionEvent* posEvent = dynamic_cast<const PositionEvent*>(stateEvent->GetEvent());
    
    PointOperation* doOp=NULL;
    if(posEvent!=NULL)
    {
      ScalarType timeInMS = 0;
      if(stateEvent->GetEvent()->GetSender()!=NULL)
      {
        const Geometry2D* worldGeometry = stateEvent->GetEvent()->GetSender()->GetCurrentWorldGeometry2D();
        assert( worldGeometry != NULL );
        timeInMS = worldGeometry->GetTimeBounds()[ 0 ];
      }
      else
      {
        itkWarningMacro(<<"StateEvent::GetSender()==NULL - setting timeInMS to 0");
      }

      switch (action->GetActionId())
      {
        case AcNEWPOINT:
        {
          if (m_Destination == NULL)
            return false;
          m_OldPoint = posEvent->GetWorldPosition();

          doOp = new mitk::PointOperation(OpADD, timeInMS, m_OldPoint, 0);
          //Undo
          if (m_UndoEnabled)
          {
            PointOperation* undoOp = new PointOperation(OpDELETE, m_OldPoint, 0);
            OperationEvent *operationEvent = new OperationEvent( m_Destination, doOp, undoOp );
            m_UndoController->SetOperationEvent(operationEvent);
          }
          //execute the Operation
          m_Destination->ExecuteOperation(doOp);
          ok = true;
          break;
        }
        case AcINITMOVEMENT:
        {
          if (m_Destination == NULL)
            return false;
          //move the point to the coordinate //not used, cause same to MovePoint... check xml-file
          mitk::Point3D movePoint = posEvent->GetWorldPosition();

          doOp = new mitk::PointOperation(OpMOVE, timeInMS, movePoint, 0);
          //execute the Operation
          m_Destination->ExecuteOperation(doOp);
          ok = true;
          break;
        }
        case AcMOVEPOINT:
        case AcMOVE:
        {
          mitk::Point3D movePoint = posEvent->GetWorldPosition();
          m_CurrentPoint = movePoint;
          if (m_Destination == NULL)
            return false;
          doOp = new mitk::PointOperation(OpMOVE, timeInMS, movePoint, 0);
          //execute the Operation
          m_Destination->ExecuteOperation(doOp);
          ok = true;
          break;
        }
        case AcFINISHMOVEMENT:
        {
          if (m_Destination == NULL)
            return false;
          /*finishes a Movement from the coordinate supplier: 
          gets the lastpoint from the undolist and writes an undo-operation so 
          that the movement of the coordinatesupplier is undoable.*/
          mitk::Point3D movePoint = posEvent->GetWorldPosition();
          mitk::Point3D oldMovePoint; oldMovePoint.Fill(0);

          doOp = new mitk::PointOperation(OpMOVE, timeInMS, movePoint, 0);
          PointOperation* finishOp = new mitk::PointOperation(OpTERMINATE, movePoint, 0);
          if (m_UndoEnabled )
          {
            //get the last Position from the UndoList
            OperationEvent *lastOperationEvent = m_UndoController->GetLastOfType(m_Destination, OpMOVE);
            if (lastOperationEvent != NULL)
            {
              PointOperation* lastOp = dynamic_cast<PointOperation *>(lastOperationEvent->GetOperation());
              if (lastOp != NULL)
              {
                oldMovePoint = lastOp->GetPoint();
              }
            }
            PointOperation* undoOp = new PointOperation(OpMOVE, timeInMS, oldMovePoint, 0, "Move slices");
            OperationEvent *operationEvent = new OperationEvent(m_Destination, doOp, undoOp, "Move slices");
            m_UndoController->SetOperationEvent(operationEvent);
          }
          //execute the Operation
          m_Destination->ExecuteOperation(doOp);
          m_Destination->ExecuteOperation(finishOp);
          ok = true;
          delete finishOp;

          break;
        }
        default:
          ok = false;
          break;
      }
      return ok;
    }

    const mitk::DisplayPositionEvent* displPosEvent = dynamic_cast<const mitk::DisplayPositionEvent *>(stateEvent->GetEvent());
    if(displPosEvent!=NULL)
    {
        return true;
    }

  return false;
}
virtual const char* mitk::CoordinateSupplier::GetClassName (  ) const [virtual]

Reimplemented from mitk::StateMachine.

virtual const Point3D& mitk::CoordinateSupplier::GetCurrentPoint (  ) [virtual]
static Pointer mitk::CoordinateSupplier::New ( const char *  _arga,
OperationActor _argb 
) [inline, static]

Definition at line 40 of file mitkCoordinateSupplier.h.

Referenced by QmitkStdMultiWidget::InitializeWidget().

:
    //##Documentation

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