Medical Imaging Interaction Toolkit  2024.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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)