IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
PerimeterMsr2d.h
1 // PerimeterMsr2d.h:
3 // -----------------
4 //
19 
21 
22 #ifndef __IPSDKGEOMETRY_PERIMETERMSR2D_H__
23 #define __IPSDKGEOMETRY_PERIMETERMSR2D_H__
24 
25 #include <IPSDKGeometry/Measure/2d/BaseTypedGeometryMeasure2d.h>
26 
27 namespace ipsdk {
28 namespace geom {
29 
32 
34 {
35  // declare geometry measure 2d
37 
38 // predefined public types
39 public:
42 
44  static const eMeasure2dType::domain g_measure2dType = eMeasure2dType::eM2DT_Perimeter;
45 
46 public:
50  ~PerimeterMsr2d();
52 
53 // methods
54 public:
56  eMeasure2dType getMeasure2dType() const;
57 
58 protected:
61  template <typename T>
62  bool process(const Point2d<T>& entity, ipReal64& result) const;
63  bool process(const Vector2d& entity, ipReal64& result) const;
64  template <typename T>
65  bool process(const BoundingBox2d<T>& entity, ipReal64& result) const;
66  template <typename T>
67  bool process(const Polygon2d<T>& entity, ipReal64& result) const;
68  template <typename T>
69  bool process(const PolygonWithHoles2d<T>& entity, ipReal64& result) const;
70  bool process(const Shape2d& entity, ipReal64& result) const;
71  template <typename T>
72  bool process(const Circle2d<T>& entity, ipReal64& result) const;
73  template <typename T>
74  bool process(const Ellipse2d<T>& entity, ipReal64& result) const;
75  template <typename T>
76  bool process(const Square2d<T>& entity, ipReal64& result) const;
77  template <typename T>
78  bool process(const Rectangle2d<T>& entity, ipReal64& result) const;
80 
81 // attributes
82 protected:
83 
84 };
85 
88 
89 inline eMeasure2dType
91 {
92  return g_measure2dType;
93 }
94 
97 
98 } // end of namespace geom
99 } // end of namespace ipsdk
100 
101 #endif // __IPSDKGEOMETRY_PERIMETERMSR2D_H__
2d ellipse class associated to cartesian 2d coordinates. For a non rotated ellipse, the major axis follows the x axis and the minor axis follows the y axis.
Definition: Ellipse2d.h:40
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Point class associated to cartesian 2d coordinates.
Definition: GeometryEntity2dTypes.h:28
Perimeter.
Definition: GeometryMeasure2dTypes.h:35
static const eMeasure2dType::domain g_measure2dType
geometry entity measurement type
Definition: PerimeterMsr2d.h:44
#define IPSDK_DECLARE_GEOMETRY_MEASURE_2D(libraryName, className)
Macro allowing to declare a geometry measure 2d.
Definition: GeometryMeasure2dHdrMacros.h:26
eMeasure2dType
Enumerate describing geometry 2d measure type.
Definition: GeometryMeasure2dTypes.h:33
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
Closed polygon potentially associated to interior polygonal holes.
Definition: PolygonWithHoles2d.h:40
Base class for typed geometry measures 2d.
Definition: BaseTypedGeometryMeasure2d.h:27
eMeasure2dType getMeasure2dType() const
method allowing to retrieve entity 2d measure type
Definition: PerimeterMsr2d.h:90
#define IPSDKGEOMETRY_API
Import/Export macro for library IPSDKGeometry.
Definition: IPSDKGeometryExports.h:25
Perimeter measurement algorithm applied to a 2d geometry entity.
Definition: PerimeterMsr2d.h:33
BaseTypedGeometryMeasure2d< ipReal64 >::DataType DataType
Output data type associated to measure.
Definition: PerimeterMsr2d.h:41
Closed polygon associated to an ordered collection of 2d points.
Definition: Polygon2d.h:38
Vector class associated to polar 2d coordinates.
Definition: Vector2d.h:32
2d rectangle class associated to cartesian 2d coordinates
Definition: Rectangle2d.h:35
2d circle associated to cartesian 2d coordinates
Definition: Circle2d.h:36
2d square class associated to cartesian 2d coordinates
Definition: Square2d.h:35
Shape 2d associated to one or more closed polygon 2d.
Definition: Shape2d.h:35
Rectangular 2d bounding box class associated to cartesian 2d coordinates.
Definition: BoundingBox2d.h:37