Medical Imaging Interaction Toolkit  2023.12.99-ed252ae7
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 #pragma GCC visibility push(default)
25 
28  itkEventMacroDeclaration(InteractionSchemeChangedEvent, itk::AnyEvent);
29 #pragma GCC visibility pop
30 
31  /***********************************************************************
32  *
33  * \brief Class that offers a convenient way to switch between different
34  * interaction schemes.
35  *
36  * This class offers the possibility to switch between the different
37  * interaction schemes that are available:
38  *
39  * - MITKStandard : The original MITK interaction scheme
40  * - MITKRotationUncoupled : A modified MITK interaction scheme with rotation
41  * - MITKRotationCoupled : A modified MTIK interaction scheme with coupled rotation
42  * - MITKSwivel : A modified MITK interaction scheme with plane swiveling
43  *
44  * - PACS : An alternative interaction scheme that behaves more like a
45  * PACS workstation
46  * - left mouse button : behavior depends on current PACS scheme
47  * Always enabled:
48  * - middle mouse button : fast scrolling
49  * - right mouse button : level-window
50  * - ctrl + right button : zooming
51  * - shift+ right button : panning
52  *
53  * There are 6 different PACS schemes.
54  * Each scheme defines the interaction that is performed on a left
55  * mouse button click:
56  * - PACSBase : No interaction on a left mouse button click
57  - This scheme serves as a base for other PACS schemes and defines the right
58  and middle mouse button clicks, which are available in every PACS scheme.
59  * - PACSStandard : Sets the cross position for the MPR
60  * - PACSLevelWindow : Sets the level window
61  * - PACSPan : Moves the slice
62  * - PACSScroll : Scrolls through the slices stepwise
63  * - PACSZoom : Zooms into / out of the slice
64  *
65  * When the interaction scheme is changed, this class sets the corresponding
66  * interaction .xml-files for a given interaction event handler.
67  *
68  ***********************************************************************/
69 
70  class MITKCORE_EXPORT InteractionSchemeSwitcher : public itk::Object
71  {
72  public:
74  itkFactorylessNewMacro(Self);
75 
76  // enum of the different interaction schemes that are available
78  {
79  MITKStandard = 0,
80  MITKRotationUncoupled,
81  MITKRotationCoupled,
82  MITKSwivel,
83  PACSBase,
84  PACSStandard,
85  PACSLevelWindow,
86  PACSPan,
87  PACSScroll,
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
mitk::InteractionEventHandler
Definition: mitkInteractionEventHandler.h:40
mitk::InteractionSchemeSwitcher::InteractionScheme
InteractionScheme
Definition: mitkInteractionSchemeSwitcher.h:114
mitk::InteractionSchemeSwitcher
Definition: mitkInteractionSchemeSwitcher.h:70
mitkClassMacroItkParent
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:45
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitkInteractionEventHandler.h
MitkCoreExports.h
MITKCORE_EXPORT
#define MITKCORE_EXPORT
Definition: MitkCoreExports.h:15
mitk::itkEventMacroDeclaration
itkEventMacroDeclaration(BoundingShapeInteractionEvent, itk::AnyEvent)