Medical Imaging Interaction Toolkit  2025.12.02
Medical Imaging Interaction Toolkit
mitkEditableContourTool.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 mitkEditableContourTool_h
14 #define mitkEditableContourTool_h
15 
17 
18 namespace mitk
19 {
28  {
29  public:
31 
33  virtual void ConfirmSegmentation(bool resetStatMachine = true);
34 
36  virtual void ClearContour();
37 
38  itkBooleanMacro(AutoConfirm);
39  itkSetMacro(AutoConfirm, bool);
40  itkGetMacro(AutoConfirm, bool);
41 
42  itkBooleanMacro(AddMode);
43  itkSetMacro(AddMode, bool);
44  itkGetMacro(AddMode, bool);
45 
46  /* Indicated if a contour is drawn, but not confirmed yet. This tool is in interactor mode
47  to allow users to edit the contour. This state can be reached if AutoConfirm is false, after the finalizing double
48  click before the contour is confirmed.*/
49  bool IsEditingContour() const;
50  /* Indicate if a contour is currently drawn by the user (state between the initializing double click and
51  the finalizing double click).*/
52  bool IsDrawingContour() const;
53 
54  protected:
57 
58  void ConnectActionsAndFunctions() override;
59 
60  void Activated() override;
61  void Deactivated() override;
62 
63  virtual Point3D PrepareInitContour(const Point3D& clickedPoint);
64  virtual void FinalizePreviewContour(const Point3D& clickedPoint);
65  virtual void InitializePreviewContour(const Point3D& clickedPoint);
66  virtual void UpdatePreviewContour(const Point3D& clickedPoint);
67 
69  virtual void OnInitContour(StateMachineAction *, InteractionEvent *interactionEvent);
70 
72  virtual void OnAddPoint(StateMachineAction *, InteractionEvent *interactionEvent);
73 
75  virtual void OnDrawing(StateMachineAction *, InteractionEvent *interactionEvent);
76 
77  virtual void OnEndDrawing(StateMachineAction *, InteractionEvent *interactionEvent);
78 
80  virtual void OnMouseMoved(StateMachineAction *, InteractionEvent *interactionEvent);
81 
83  virtual void OnFinish(StateMachineAction *, InteractionEvent *interactionEvent);
84 
86  virtual bool OnCheckPlane(const InteractionEvent* interactionEvent);
87 
89  virtual bool OnCheckDistanceToControlPoint(const InteractionEvent* interactionEvent);
90 
92  virtual void FinishTool() = 0;
93 
94  void EnableContourInteraction(bool on);
95 
97 
98  virtual void ReleaseHelperObjects(bool includeWorkingContour = true);
99 
100  virtual void RemoveHelperObjectsFromDataStorage(bool includeWorkingContour = true);
101 
102  ContourModel::Pointer CreateNewContour() const;
103 
104  virtual void UpdateClosureContour(mitk::Point3D endpoint);
105 
108  mitk::DataNode::Pointer m_ContourNode;
109 
110  mitk::ContourModel::Pointer m_PreviewContour;
111  mitk::DataNode::Pointer m_PreviewContourNode;
112 
113  mitk::ContourModel::Pointer m_ClosureContour;
114  mitk::DataNode::Pointer m_ClosureContourNode;
115 
116  mitk::ContourModel::Pointer m_CurrentRestrictedArea;
117 
121 
122  PlaneGeometry::ConstPointer m_PlaneGeometry;
123 
125 
127  bool m_AddMode;
128  };
129 }
130 
131 #endif
#define MITKSEGMENTATION_EXPORT
ContourModel is a structure of linked vertices defining a contour in 3D space. The vertices are store...
ContourModel::Pointer CreateNewContour() const
virtual void OnAddPoint(StateMachineAction *, InteractionEvent *interactionEvent)
Add a control point and finish current segment.
virtual void InitializePreviewContour(const Point3D &clickedPoint)
virtual Point3D PrepareInitContour(const Point3D &clickedPoint)
virtual void UpdatePreviewContour(const Point3D &clickedPoint)
virtual void RemoveHelperObjectsFromDataStorage(bool includeWorkingContour=true)
virtual void OnInitContour(StateMachineAction *, InteractionEvent *interactionEvent)
Initialize tool.
mitk::DataNode::Pointer m_PreviewContourNode
virtual void ClearContour()
Delete all current contours.
virtual void FinishTool()=0
Finish contour interaction.
const mitk::ContourModel * GetContour() const
mitk::DataInteractor::Pointer m_ContourInteractor
mitk::ContourModel::Pointer m_CurrentRestrictedArea
PlaneGeometry::ConstPointer m_PlaneGeometry
virtual void OnDrawing(StateMachineAction *, InteractionEvent *interactionEvent)
Draw a contour according to the mouse movement when mouse button is pressed and mouse is moved.
mitk::ContourModel::Pointer m_ClosureContour
virtual void OnFinish(StateMachineAction *, InteractionEvent *interactionEvent)
Finish EditableContour tool.
void Deactivated() override
Called when the tool gets deactivated.
mitk::DataNode::Pointer m_ContourNode
virtual void UpdateClosureContour(mitk::Point3D endpoint)
bool IsDrawingContour() const
mitk::ContourModel::Pointer m_PreviewContour
virtual void OnEndDrawing(StateMachineAction *, InteractionEvent *interactionEvent)
bool IsEditingContour() const
virtual void OnMouseMoved(StateMachineAction *, InteractionEvent *interactionEvent)
Computation of the preview contour.
mitkClassMacro(EditableContourTool, FeedbackContourTool)
virtual void ReleaseHelperObjects(bool includeWorkingContour=true)
mitk::ContourModel * GetContour()
mitk::DataNode::Pointer m_ClosureContourNode
virtual bool OnCheckPlane(const InteractionEvent *interactionEvent)
Check if the event happened on the current plane.
virtual bool OnCheckDistanceToControlPoint(const InteractionEvent *interactionEvent)
Checks if the event happened with enough distances to the last control points (to avoid unintended/ac...
virtual void FinalizePreviewContour(const Point3D &clickedPoint)
mitk::Image::Pointer m_ReferenceDataSlice
void Activated() override
Called when the tool gets activated.
void EnableContourInteraction(bool on)
void ConnectActionsAndFunctions() override
virtual void ConfirmSegmentation(bool resetStatMachine=true)
Convert current contour to binary segmentations.
Base class for tools that use a contour for feedback.
Represents an action, that is executed after a certain event (in statemachine-mechanism) TODO: implem...
Find image slices visible on a given plane.