Medical Imaging Interaction Toolkit  2025.08.99-f7084adb
Medical Imaging Interaction Toolkit
mitkPointSet.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 mitkPointSet_h
14 #define mitkPointSet_h
15 
16 #include "mitkBaseData.h"
17 
18 #include <itkDefaultDynamicMeshTraits.h>
19 #include <itkMesh.h>
20 
21 namespace mitk
22 {
72  {
73  public:
75 
76  itkFactorylessNewMacro(Self);
77 
78  itkCloneMacro(Self);
79 
82 
83  static const unsigned int PointDimension = 3;
84  static const unsigned int MaxTopologicalDimension = 3;
85 
90  {
91  unsigned int id; // to give the point a special ID
92  bool selected; // information about if the point is selected
93  mitk::PointSpecificationType pointSpec; // specifies the type of the point
94 
95  bool operator==(const PointDataType &other) const;
96  };
97 
104  typedef std::vector<unsigned int> SelectedLinesType;
105  typedef SelectedLinesType::iterator SelectedLinesIter;
107  {
108  // used to set the whole cell on selected
109  bool selected;
110 
111  // indexes of selected lines. 0 is between pointId 0 and 1
113 
114  // is the polygon already finished and closed
115  bool closed;
116  };
117 
118  typedef itk::DefaultDynamicMeshTraits<PointDataType,
119  PointDimension,
120  MaxTopologicalDimension,
123  CellDataType>
125  typedef itk::Mesh<PointDataType, PointDimension, MeshTraits> MeshType;
126 
129  typedef DataType::PointIdentifier PointIdentifier;
130  typedef DataType::PointsContainer PointsContainer;
131  typedef DataType::PointsContainerIterator PointsIterator;
132  typedef DataType::PointsContainer::ConstIterator PointsConstIterator;
133  typedef DataType::PointDataContainer PointDataContainer;
134  typedef DataType::PointDataContainerIterator PointDataIterator;
135  typedef DataType::PointDataContainerIterator PointDataConstIterator;
136 
137  void Expand(unsigned int timeSteps) override;
138 
140  void ExecuteOperation(Operation *operation) override;
141 
143  virtual int GetSize(unsigned int t = 0) const;
144 
145  virtual unsigned int GetPointSetSeriesSize() const;
146 
148  virtual DataType::Pointer GetPointSet(int t = 0) const;
149 
150  PointsIterator Begin(int t = 0);
151 
152  PointsConstIterator Begin(int t = 0) const;
153 
154  PointsIterator End(int t = 0);
155 
156  PointsConstIterator End(int t = 0) const;
157 
161  PointsIterator GetMaxId(int t = 0);
162 
168  PointType GetPoint(PointIdentifier id, int t = 0) const;
169 
176  bool GetPointIfExists(PointIdentifier id, PointType *point, int t = 0) const;
177 
181  void SetPoint(PointIdentifier id, PointType point, int t = 0);
182 
186  void SetPoint(PointIdentifier id, PointType point, PointSpecificationType spec, int t = 0);
187 
191  void InsertPoint(PointIdentifier id, PointType point, int t = 0);
192 
196  void InsertPoint(PointIdentifier id, PointType point, PointSpecificationType spec, int t);
197 
201  PointIdentifier InsertPoint(PointType point, int t = 0);
202 
206  bool RemovePointIfExists(PointIdentifier id, int t = 0);
207 
211  PointsIterator RemovePointAtEnd(int t = 0);
212 
218  bool SwapPointPosition(PointIdentifier id, bool moveUpwards, int t = 0);
219 
224  virtual int SearchSelectedPoint(int t = 0) const;
225 
229  virtual void ClearSelection();
230 
232  virtual bool IndexExists(int position, int t = 0) const;
233 
237  virtual bool GetSelectInfo(int position, int t = 0) const;
238 
239  virtual void SetSelectInfo(int position, bool selected, int t = 0);
240 
242  virtual PointSpecificationType GetSpecificationTypeInfo(int position, int t) const;
243 
245  virtual int GetNumberOfSelected(int t = 0) const;
246 
256  int SearchPoint(Point3D point, ScalarType distance, int t = 0) const;
257 
258  bool IsEmptyTimeStep(unsigned int t) const override;
259 
260  // virtual methods, that need to be implemented
261  void UpdateOutputInformation() override;
262  void SetRequestedRegionToLargestPossibleRegion() override;
263  bool RequestedRegionIsOutsideOfTheBufferedRegion() override;
264  bool VerifyRequestedRegion() override;
265  void SetRequestedRegion(const itk::DataObject *data) override;
266 
267  // Method for subclasses
268  virtual void OnPointSetChange(){};
269 
270  protected:
272 
273  PointSet();
274  PointSet(const PointSet &other);
275  ~PointSet() override;
276 
277  void PrintSelf(std::ostream &os, itk::Indent indent) const override;
278 
279  void ClearData() override;
280 
281  void InitializeEmpty() override;
282 
284  bool SwapPointContents(PointIdentifier id1, PointIdentifier id2, int t = 0);
285 
286  typedef std::vector<DataType::Pointer> PointSetSeries;
287 
289 
290  DataType::PointsContainer::Pointer m_EmptyPointsContainer;
291 
296  };
297 
316  DEPRECATED(MITKCORE_EXPORT bool Equal(const mitk::PointSet *leftHandSide,
317  const mitk::PointSet *rightHandSide,
319  bool verbose,
320  bool checkGeometry = true));
321 
338  MITKCORE_EXPORT bool Equal(const mitk::PointSet &leftHandSide,
339  const mitk::PointSet &rightHandSide,
341  bool verbose,
342  bool checkGeometry = true);
343 
344  itkEventMacroDeclaration(PointSetEvent, itk::AnyEvent);
345  itkEventMacroDeclaration(PointSetMoveEvent, PointSetEvent);
346  itkEventMacroDeclaration(PointSetSizeChangeEvent, PointSetEvent);
347  itkEventMacroDeclaration(PointSetAddEvent, PointSetSizeChangeEvent);
348  itkEventMacroDeclaration(PointSetRemoveEvent, PointSetSizeChangeEvent);
349  itkEventMacroDeclaration(PointSetExtendTimeRangeEvent, PointSetEvent);
350 
351 } // namespace mitk
352 
353 #endif
mitk::PointSet::CellDataType::selectedLines
SelectedLinesType selectedLines
Definition: mitkPointSet.h:112
mitk::eps
const MITKCORE_EXPORT ScalarType eps
mitk::PointSet::PointDataType
struct for data of a point
Definition: mitkPointSet.h:89
mitk::PointSet::PointIdentifier
DataType::PointIdentifier PointIdentifier
Definition: mitkPointSet.h:129
mitk::PointSet::SelectedLinesType
std::vector< unsigned int > SelectedLinesType
cellDataType, that stores all indexes of the lines, that are selected e.g.: points A,...
Definition: mitkPointSet.h:104
mitk::PointSet::PointsConstIterator
DataType::PointsContainer::ConstIterator PointsConstIterator
Definition: mitkPointSet.h:132
mitk::PointSet::PointDataType::selected
bool selected
Definition: mitkPointSet.h:92
mitk::Operation
Base class of all Operation-classes.
Definition: mitkOperation.h:29
mitk::PointSet::DataType
MeshType DataType
Definition: mitkPointSet.h:127
mitk::PointSet::CellDataType
Definition: mitkPointSet.h:106
DEPRECATED
#define DEPRECATED(func)
Definition: mitkCommon.h:175
mitk::Equal
MITKNEWMODULE_EXPORT bool Equal(mitk::ExampleDataStructure *leftHandSide, mitk::ExampleDataStructure *rightHandSide, mitk::ScalarType eps, bool verbose)
Returns true if the example data structures are considered equal.
mitk::PointSet::m_PointSetSeries
PointSetSeries m_PointSetSeries
Definition: mitkPointSet.h:288
mitk::PointSet::MeshType
itk::Mesh< PointDataType, PointDimension, MeshTraits > MeshType
Definition: mitkPointSet.h:125
mitk::PointSet::PointType
Point3D PointType
Definition: mitkPointSet.h:128
mitk::PointSet::CellDataType::selected
bool selected
Definition: mitkPointSet.h:109
mitk::PointSet::PointsIterator
DataType::PointsContainerIterator PointsIterator
Definition: mitkPointSet.h:131
mitk::PointSet::m_EmptyPointsContainer
DataType::PointsContainer::Pointer m_EmptyPointsContainer
Definition: mitkPointSet.h:290
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitk::PointSet::PointDataType::pointSpec
mitk::PointSpecificationType pointSpec
Definition: mitkPointSet.h:93
mitk::PointSet::CellDataType::closed
bool closed
Definition: mitkPointSet.h:115
mitk::operator==
MITKCORE_EXPORT bool operator==(const InteractionEvent &a, const InteractionEvent &b)
mitk::Point
Definition: mitkPoint.h:38
mitk::PointSet::SelectedLinesIter
SelectedLinesType::iterator SelectedLinesIter
Definition: mitkPointSet.h:105
mitk::PointSet::PointDataConstIterator
DataType::PointDataContainerIterator PointDataConstIterator
Definition: mitkPointSet.h:135
mitk::PointSet::PointDataType::id
unsigned int id
Definition: mitkPointSet.h:91
mitk::BaseData
Base of all data objects.
Definition: mitkBaseData.h:42
mitk::PointSet::PointDataIterator
DataType::PointDataContainerIterator PointDataIterator
Definition: mitkPointSet.h:134
mitk::PointSet::InterpolationWeightType
mitk::ScalarType InterpolationWeightType
Definition: mitkPointSet.h:81
mitk::PointSet::PointsContainer
DataType::PointsContainer PointsContainer
Definition: mitkPointSet.h:130
mitk::PointSet::m_CalculateBoundingBox
bool m_CalculateBoundingBox
flag to indicate the right time to call SetBounds
Definition: mitkPointSet.h:295
mitkCloneMacro
#define mitkCloneMacro(classname)
Definition: mitkCommon.h:154
mitk::PointSet::PointDataContainer
DataType::PointDataContainer PointDataContainer
Definition: mitkPointSet.h:133
mitkBaseData.h
mitk::PointSet::PointSetSeries
std::vector< DataType::Pointer > PointSetSeries
Definition: mitkPointSet.h:286
mitk::PointSpecificationType
PointSpecificationType
enumeration of the type a point can be
Definition: mitkPoint.h:28
mitkClassMacro
#define mitkClassMacro(className, SuperClassName)
Definition: mitkCommon.h:36
mitk::PointSet::CoordinateType
mitk::ScalarType CoordinateType
Definition: mitkPointSet.h:78
mitk::PointSet
Data structure which stores a set of points.
Definition: mitkPointSet.h:71
MITKCORE_EXPORT
#define MITKCORE_EXPORT
Definition: MitkCoreExports.h:15
mitk::PointSet::MeshTraits
itk::DefaultDynamicMeshTraits< PointDataType, PointDimension, MaxTopologicalDimension, CoordinateType, InterpolationWeightType, CellDataType > MeshTraits
Definition: mitkPointSet.h:124
mitk::itkEventMacroDeclaration
itkEventMacroDeclaration(BoundingShapeInteractionEvent, itk::AnyEvent)
mitk::ScalarType
double ScalarType
Definition: mitkNumericConstants.h:20
mitk::PointSet::OnPointSetChange
virtual void OnPointSetChange()
Definition: mitkPointSet.h:268