Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

mitk::SlicesCoordinator Class Reference

Coordinates a list of SliceNavigationControllers. More...

#include <mitkSlicesCoordinator.h>

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

List of all members.

Public Types

typedef std::vector
< SliceNavigationController * > 
SNCVector

Public Member Functions

 mitkClassMacro (SlicesCoordinator, StateMachine)
 mitkNewMacro1Param (Self, const char *)
void AddSliceController (SliceNavigationController *snc)
void RemoveSliceController (SliceNavigationController *snc)
virtual void SetLinkPlanes (bool _arg)
virtual bool GetLinkPlanes ()
virtual void LinkPlanesOn ()
virtual void LinkPlanesOff ()
void ResetMouseCursor ()
 Resets the mouse cursor (if modified by the SlicesCoordinator) to its original state.

Protected Member Functions

 SlicesCoordinator (const char *machine)
 Default Constructor.
virtual ~SlicesCoordinator ()
void SetMouseCursor (const char *xpm[], int hotspotX, int hotspotY)
 Sets the specified mouse cursor.
virtual void OnSliceControllerAdded (SliceNavigationController *snc)
virtual void OnSliceControllerRemoved (SliceNavigationController *snc)
virtual bool ExecuteAction (Action *action, StateEvent const *stateEvent)

Protected Attributes

SNCVector m_SliceNavigationControllers
bool m_LinkPlanes
bool m_MouseCursorSet

Detailed Description

Coordinates a list of SliceNavigationControllers.

Each SliceNavigationController can select one slice from a TimeSlicedGeometry. This class (SlicesCoordinator) coordinates several SliceNavigationControllers to facilitate e.g. rotation of slices. A new class is needed, because for rotation one has to know an axis of rotation. Such an axis is most easily determined from the "other slices", which are not known by a SliceNavigationController.

This class registers itself as a listener to GlobalInteraction and holds a list of SliceNavigationControllers. Any functionality, such as slice rotation, is done in subclasses. This separation is done for the case that some other multi-slice coordination should be implemented.

Definition at line 48 of file mitkSlicesCoordinator.h.


Member Typedef Documentation

Definition at line 52 of file mitkSlicesCoordinator.h.


Constructor & Destructor Documentation

mitk::SlicesCoordinator::SlicesCoordinator ( const char *  machine ) [protected]

Default Constructor.

Definition at line 26 of file mitkSlicesCoordinator.cpp.

: StateMachine(machine),
  m_LinkPlanes( true ),
  m_MouseCursorSet( false )
{
}
mitk::SlicesCoordinator::~SlicesCoordinator (  ) [protected, virtual]

clear list of controllers

Definition at line 33 of file mitkSlicesCoordinator.cpp.

{
}

Member Function Documentation

void mitk::SlicesCoordinator::AddSliceController ( SliceNavigationController snc )

Add to list of managed slices. Check if CreatedWorldGeometry of SNC is managable (i.e. there is basically only one planegeometry)

Definition at line 37 of file mitkSlicesCoordinator.cpp.

References m_SliceNavigationControllers, and OnSliceControllerAdded().

{
  if (!snc) return;
    
  m_SliceNavigationControllers.push_back(snc);

  OnSliceControllerAdded(snc); // notify
}
bool mitk::SlicesCoordinator::ExecuteAction ( Action action,
StateEvent const *  stateEvent 
) [protected, virtual]

for implementation in subclasses

Reimplemented from mitk::StateMachine.

Reimplemented in mitk::SlicesRotator, and mitk::SlicesSwiveller.

Definition at line 96 of file mitkSlicesCoordinator.cpp.

{
  // implement in subclasses
  return false;
}
virtual bool mitk::SlicesCoordinator::GetLinkPlanes (  ) [virtual]
virtual void mitk::SlicesCoordinator::LinkPlanesOff (  ) [virtual]
virtual void mitk::SlicesCoordinator::LinkPlanesOn (  ) [virtual]
mitk::SlicesCoordinator::mitkClassMacro ( SlicesCoordinator  ,
StateMachine   
)
mitk::SlicesCoordinator::mitkNewMacro1Param ( Self  ,
const char *   
)
void mitk::SlicesCoordinator::OnSliceControllerAdded ( SliceNavigationController snc ) [protected, virtual]

for implementation in subclasses

Reimplemented in mitk::SlicesRotator, and mitk::SlicesSwiveller.

Definition at line 86 of file mitkSlicesCoordinator.cpp.

Referenced by AddSliceController().

{
  // implement in subclasses
}
void mitk::SlicesCoordinator::OnSliceControllerRemoved ( SliceNavigationController snc ) [protected, virtual]

for implementation in subclasses

Reimplemented in mitk::SlicesRotator, and mitk::SlicesSwiveller.

Definition at line 91 of file mitkSlicesCoordinator.cpp.

Referenced by RemoveSliceController().

{
  // implement in subclasses
}
void mitk::SlicesCoordinator::RemoveSliceController ( SliceNavigationController snc )

Remove one controller, which is then added as listener to GlobalInteraction

Definition at line 46 of file mitkSlicesCoordinator.cpp.

References m_SliceNavigationControllers, and OnSliceControllerRemoved().

{
  if (!snc) return;

  // see, whether snc is in our list
  SNCVector::iterator iter;
  for (iter = m_SliceNavigationControllers.begin(); iter != m_SliceNavigationControllers.end(); ++iter)
    if (*iter == snc) break;

  // if found, remove from list
  if ( iter != m_SliceNavigationControllers.end() )
  {
    m_SliceNavigationControllers.erase( iter );

    OnSliceControllerRemoved(snc);
  }
}
void mitk::SlicesCoordinator::ResetMouseCursor (  )

Resets the mouse cursor (if modified by the SlicesCoordinator) to its original state.

Should be used by subclasses and from external application instead of using QmitkApplicationCursor directly to avoid conflicts.

Definition at line 64 of file mitkSlicesCoordinator.cpp.

References mitk::ApplicationCursor::GetInstance(), m_MouseCursorSet, and mitk::ApplicationCursor::PopCursor().

Referenced by mitk::SlicesRotator::ExecuteAction().

{
  if ( m_MouseCursorSet )
  {
    ApplicationCursor::GetInstance()->PopCursor();
    m_MouseCursorSet = false;
  }
}
virtual void mitk::SlicesCoordinator::SetLinkPlanes ( bool  _arg ) [virtual]

Set/Get whether planes should stay linked to each other (by fixing their relative angle)

void mitk::SlicesCoordinator::SetMouseCursor ( const char *  xpm[],
int  hotspotX,
int  hotspotY 
) [protected]

Sets the specified mouse cursor.

Use this in subclasses instead of using QmitkApplicationCursor directly.

Definition at line 73 of file mitkSlicesCoordinator.cpp.

References mitk::ApplicationCursor::GetInstance(), m_MouseCursorSet, mitk::ApplicationCursor::PopCursor(), and mitk::ApplicationCursor::PushCursor().

Referenced by mitk::SlicesRotator::ExecuteAction().

{
  // Remove previously set mouse cursor
  if ( m_MouseCursorSet )
  {
    ApplicationCursor::GetInstance()->PopCursor();
  }

  ApplicationCursor::GetInstance()->PushCursor( xpm, hotspotX, hotspotY );
  m_MouseCursorSet = true;
}

Member Data Documentation

Definition at line 107 of file mitkSlicesCoordinator.h.

Referenced by mitk::SlicesRotator::ExecuteAction().

Definition at line 109 of file mitkSlicesCoordinator.h.

Referenced by ResetMouseCursor(), and SetMouseCursor().

Definition at line 105 of file mitkSlicesCoordinator.h.

Referenced by AddSliceController(), and RemoveSliceController().


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