Medical Imaging Interaction Toolkit  2025.12.02
Medical Imaging Interaction Toolkit
mitkPlanarCross.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 mitkPlanarCross_h
14 #define mitkPlanarCross_h
15 
16 #include "mitkPlanarFigure.h"
18 
19 namespace mitk
20 {
21  class PlaneGeometry;
22 
51  {
52  public:
54 
55  itkFactorylessNewMacro(Self);
56 
57  itkCloneMacro(Self);
58 
61  void SetSingleLineMode(bool singleLineMode);
62 
65  bool GetSingleLineMode() const;
66 
69  itkBooleanMacro(SingleLineMode); // No need to reimplement; calls SetSingleLineMode()
70 
72  unsigned int GetMinimumNumberOfControlPoints() const override { return this->GetSingleLineMode() ? 2 : 4; }
74  unsigned int GetMaximumNumberOfControlPoints() const override { return this->GetSingleLineMode() ? 2 : 4; }
76  bool ResetOnPointSelect() override;
77 
78  bool ResetOnPointSelectNeeded() const override;
79 
81  unsigned int GetNumberOfFeatures() const override;
82 
83  bool Equals(const mitk::PlanarFigure &other) const override;
84 
85  protected:
88 
90  Point2D ApplyControlPointConstraints(unsigned int index, const Point2D &point) override;
91 
93  void GeneratePolyLine() override;
94 
96  void GenerateHelperPolyLine(double mmPerDisplayUnit, unsigned int displayHeight) override;
97 
99  void EvaluateFeaturesInternal() override;
100 
101  void PrintSelf(std::ostream &os, itk::Indent indent) const override;
102 
103  // Feature identifiers
104  const unsigned int FEATURE_ID_LONGESTDIAMETER;
105  const unsigned int FEATURE_ID_SHORTAXISDIAMETER;
106 
107  private:
109  virtual Point2D InternalApplyControlPointConstraints(unsigned int index, const Point2D &point);
110  };
111 
112 } // namespace mitk
113 
114 #endif
#define MITKPLANARFIGURE_EXPORT
Implementation of PlanarFigure modeling a cross with two orthogonal lines on a plane.
void PrintSelf(std::ostream &os, itk::Indent indent) const override
void SetSingleLineMode(bool singleLineMode)
Indicates whether the PlanarFigure shall represent only a single line instead of an orthogonal cross.
Point2D ApplyControlPointConstraints(unsigned int index, const Point2D &point) override
Spatially constrain control points of second (orthogonal) line.
bool GetSingleLineMode() const
Indicates whether the PlanarFigure shall represent only a single line instead of an orthogonal cross.
void GenerateHelperPolyLine(double mmPerDisplayUnit, unsigned int displayHeight) override
Generates the poly-lines that should be drawn the same size regardless of zoom.
const unsigned int FEATURE_ID_SHORTAXISDIAMETER
const unsigned int FEATURE_ID_LONGESTDIAMETER
unsigned int GetNumberOfFeatures() const override
Returns the number of features available for this PlanarCross (1 or 2).
unsigned int GetMinimumNumberOfControlPoints() const override
PlanarCross has either two or four control points, depending on the operation mode.
void GeneratePolyLine() override
Generates the poly-line representation of the planar figure.
mitkClassMacro(PlanarCross, PlanarFigure)
bool ResetOnPointSelectNeeded() const override
unsigned int GetMaximumNumberOfControlPoints() const override
PlanarCross has either two or four control points, depending on the operation mode.
void EvaluateFeaturesInternal() override
Calculates feature quantities of the planar figure.
bool ResetOnPointSelect() override
The cross shall be reset to a single line when a control point is selected.
bool Equals(const mitk::PlanarFigure &other) const override
Compare two PlanarFigure objects Note: all subclasses have to implement the method on their own.
Base-class for geometric planar (2D) figures, such as lines, circles, rectangles, polygons,...
Find image slices visible on a given plane.