Medical Imaging Interaction Toolkit  2026.06.00
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 {
30  {
31  public:
33 
35  virtual void ConfirmSegmentation(bool resetStatMachine = true);
36 
38  virtual void ClearContour();
39 
40  itkBooleanMacro(AutoConfirm);
41  itkSetMacro(AutoConfirm, bool);
42  itkGetMacro(AutoConfirm, bool);
43 
44  itkBooleanMacro(AddMode);
45  itkSetMacro(AddMode, bool);
46  itkGetMacro(AddMode, bool);
47 
48  /* Indicated if a contour is drawn, but not confirmed yet. This tool is in interactor mode
49  to allow users to edit the contour. This state can be reached if AutoConfirm is false, after the finalizing double
50  click before the contour is confirmed.*/
51  bool IsEditingContour() const;
52  /* Indicate if a contour is currently drawn by the user (state between the initializing double click and
53  the finalizing double click).*/
54  bool IsDrawingContour() const;
55 
56  protected:
59 
60  void ConnectActionsAndFunctions() override;
61 
62  void Activated() override;
63  void Deactivated() override;
64 
65  virtual Point3D PrepareInitContour(const Point3D& clickedPoint);
66  virtual void FinalizePreviewContour(const Point3D& clickedPoint);
67  virtual void InitializePreviewContour(const Point3D& clickedPoint);
68  virtual void UpdatePreviewContour(const Point3D& clickedPoint);
69 
71  virtual void OnInitContour(StateMachineAction *, InteractionEvent *interactionEvent);
72 
74  virtual void OnAddPoint(StateMachineAction *, InteractionEvent *interactionEvent);
75 
77  virtual void OnDrawing(StateMachineAction *, InteractionEvent *interactionEvent);
78 
79  virtual void OnEndDrawing(StateMachineAction *, InteractionEvent *interactionEvent);
80 
82  virtual void OnMouseMoved(StateMachineAction *, InteractionEvent *interactionEvent);
83 
85  virtual void OnFinish(StateMachineAction *, InteractionEvent *interactionEvent);
86 
88  virtual bool OnCheckPlane(const InteractionEvent* interactionEvent);
89 
91  virtual bool OnCheckDistanceToControlPoint(const InteractionEvent* interactionEvent);
92 
94  virtual void FinishTool() = 0;
95 
96  void EnableContourInteraction(bool on);
97 
99 
100  virtual void ReleaseHelperObjects(bool includeWorkingContour = true);
101 
102  virtual void RemoveHelperObjectsFromDataStorage(bool includeWorkingContour = true);
103 
104  ContourModel::Pointer CreateNewContour() const;
105 
106  virtual void UpdateClosureContour(mitk::Point3D endpoint);
107 
110  mitk::DataNode::Pointer m_ContourNode;
111 
112  mitk::ContourModel::Pointer m_PreviewContour;
113  mitk::DataNode::Pointer m_PreviewContourNode;
114 
115  mitk::ContourModel::Pointer m_ClosureContour;
116  mitk::DataNode::Pointer m_ClosureContourNode;
117 
118  mitk::ContourModel::Pointer m_CurrentRestrictedArea;
119 
122  mitk::Image::Pointer m_ReferenceDataSlice;
123 
124  PlaneGeometry::ConstPointer m_PlaneGeometry;
125 
126  mitk::DataInteractor::Pointer m_ContourInteractor;
127 
129  bool m_AddMode;
130  };
131 }
132 
133 #endif
#define MITKSEGMENTATION_EXPORT
A time-resolved contour representation consisting of linked vertices in 3D space.
Base class for lasso-like tools that draw closed contours with multiple anchor points.
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.
Base class for all interaction events in MITK.
Represents an action that is executed after a certain event in the state machine mechanism.
Find image slices visible on a given plane.