Medical Imaging Interaction Toolkit  2021.10.99-fd647480
Medical Imaging Interaction Toolkit
mitkInteractionSchemeSwitcher.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef MITKINTERACTIONSCHEMESWITCHER_H
14 #define MITKINTERACTIONSCHEMESWITCHER_H
15 
16 #include "MitkCoreExports.h"
17 
19 
20 #include <itkObject.h>
21 
22 namespace mitk
23 {
24  /***********************************************************************
25  *
26  * \brief Class that offers a convenient way to switch between different
27  * interaction schemes.
28  *
29  * This class offers the possibility to switch between the different
30  * interaction schemes that are available:
31  *
32  * - MITKStandard : The original MITK interaction scheme
33  * - MITKRotationUncoupled : A modified MITK interaction scheme with rotation
34  * - MITKRotationCoupled : A modified MTIK interaction scheme with coupled rotation
35  * - MITKSwivel : A modified MITK interaction scheme with plane swiveling
36  *
37  * - PACS : An alternative interaction scheme that behaves more like a
38  * PACS workstation
39  * - left mouse button : behavior depends on current PACS scheme
40  * Always enabled:
41  * - middle mouse button : fast scrolling
42  * - right mouse button : level-window
43  * - ctrl + right button : zooming
44  * - shift+ right button : panning
45  *
46  * There are 6 different PACS schemes.
47  * Each scheme defines the interaction that is performed on a left
48  * mouse button click:
49  * - PACSBase : No interaction on a left mouse button click
50  - This scheme serves as a base for other PACS schemes and defines the right
51  and middle mouse button clicks, which are available in every PACS scheme.
52  * - PACSStandard : Sets the cross position for the MPR
53  * - PACSLevelWindow : Sets the level window
54  * - PACSPan : Moves the slice
55  * - PACSScroll : Scrolls through the slices stepwise
56  * - PACSZoom : Zooms into / out of the slice
57  *
58  * When the interaction scheme is changed, this class sets the corresponding
59  * interaction .xml-files for a given interaction event handler.
60  *
61  ***********************************************************************/
62 
63  class MITKCORE_EXPORT InteractionSchemeSwitcher : public itk::Object
64  {
65  public:
66 #pragma GCC visibility push(default)
67 
70  itkEventMacro(InteractionSchemeChangedEvent, itk::AnyEvent);
71 #pragma GCC visibility pop
72 
74  itkFactorylessNewMacro(Self);
75 
76  // enum of the different interaction schemes that are available
78  {
79  MITKStandard = 0,
88  PACSZoom
89  };
90 
106  void SetInteractionScheme(mitk::InteractionEventHandler* interactionEventHandler, InteractionScheme interactionScheme);
107 
108  protected:
109 
111  ~InteractionSchemeSwitcher() override;
112 
113  };
114 } // namespace mitk
115 
116 #endif // MITKINTERACTIONSCHEMESWITCHER_H
#define MITKCORE_EXPORT
itkEventMacro(BoundingShapeInteractionEvent, itk::AnyEvent)
DataCollection - Class to facilitate loading/accessing structured data.
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:45