Coordinates a list of SliceNavigationControllers. More...
#include <mitkSlicesCoordinator.h>
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 |
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.
typedef std::vector<SliceNavigationController*> mitk::SlicesCoordinator::SNCVector |
Definition at line 52 of file mitkSlicesCoordinator.h.
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] |
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 * | |||
) |
Reimplemented in mitk::SlicesRotator, and mitk::SlicesSwiveller.
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; }
bool mitk::SlicesCoordinator::m_LinkPlanes [protected] |
Definition at line 107 of file mitkSlicesCoordinator.h.
Referenced by mitk::SlicesRotator::ExecuteAction().
bool mitk::SlicesCoordinator::m_MouseCursorSet [protected] |
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().