IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
GeometricTransform2dTypes.h
Go to the documentation of this file.
1 // GeometricTransform2dTypes.h:
3 // ----------------------------
4 //
14 
15 #ifndef __IPSDKMATH_GEOMETICTRANSFORM2DTYPES_H__
16 #define __IPSDKMATH_GEOMETICTRANSFORM2DTYPES_H__
17 
20 #include <boost/shared_ptr.hpp>
21 
22 namespace ipsdk {
23 namespace math {
24 namespace transform {
25 
26 class BaseGeometricTransform2d;
27 
30 
33 IPSDK_ENUM(eGeometricTransform2dType,
34 
35  (eGT2DT_Translation)
36  (eGT2DT_Rotation)
37  (eGT2DT_Rigid)
38  (eGT2DT_Scale)
39  (eGT2DT_Similarity)
40  (eGT2DT_AnisotropicScale)
41  (eGT2DT_Affine)
42  (eGT2DT_Homography)
43 )
44 
45 
50 template <eGeometricTransform2dType::value_type enumValue>
52 
55 template <typename T>
56 struct Transform2d2Enum;
57 
60 #define IPSDK_ENUM_TO_TRANSFORM2D(transformType, EnumValue) \
61  class transformType; \
62  template<> struct Enum2Transform2d<ipsdk::math::transform::eGeometricTransform2dType::EnumValue> { \
63  typedef transformType Type; \
64  }; \
65  template<> struct Transform2d2Enum<transformType> { \
66  static const ipsdk::math::transform::eGeometricTransform2dType::domain \
67  g_geometricTransform2dType = eGeometricTransform2dType::EnumValue; \
68  };
69 
72 IPSDK_ENUM_TO_TRANSFORM2D(Translation2d, eGT2DT_Translation);
73 IPSDK_ENUM_TO_TRANSFORM2D(Rotation2d, eGT2DT_Rotation);
74 IPSDK_ENUM_TO_TRANSFORM2D(Rigid2d, eGT2DT_Rigid);
75 IPSDK_ENUM_TO_TRANSFORM2D(Scale2d, eGT2DT_Scale);
76 IPSDK_ENUM_TO_TRANSFORM2D(Similarity2d, eGT2DT_Similarity);
77 IPSDK_ENUM_TO_TRANSFORM2D(AnisotropicScale2d, eGT2DT_AnisotropicScale);
78 IPSDK_ENUM_TO_TRANSFORM2D(Affine2d, eGT2DT_Affine);
79 IPSDK_ENUM_TO_TRANSFORM2D(Homography2d, eGT2DT_Homography);
81 
84 
86 typedef boost::shared_ptr<ipsdk::math::transform::BaseGeometricTransform2d> GeometricTransform2dPtr;
87 
89 typedef boost::shared_ptr<const ipsdk::math::transform::BaseGeometricTransform2d> GeometricTransform2dConstPtr;
90 
93 
94 } // end of namespace transform
95 } // end of namespace math
96 } // end of namespace ipsdk
97 
98 #endif // __IPSDKMATH_GEOMETICTRANSFORM2DTYPES_H__
Transformation class allowing to manage 2d rotations.
Definition: Rotation2d.h:33
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDK_ENUM_TO_TRANSFORM2D(transformType, EnumValue)
Definition: GeometricTransform2dTypes.h:70
Transformation class allowing to manage 2d translations.
Definition: Translation2d.h:32
Predefined types for linear algebra management.
structure used to retrieve enumerate value from transform
Definition: GeometricTransform2dTypes.h:66
Definition: Similarity2d.h:33
Definition: Rigid2d.h:33
structure used to retrieve transform from enumerate value
Definition: GeometricTransform2dTypes.h:61
Definition: Scale2d.h:32
eGeometricTransform2dType
geometric transform 2d type
Definition: GeometricTransform2dTypes.h:35
Transformation class allowing to manage 2d homography transformations.
Definition: Homography2d.h:32
Definition: Affine2d.h:32
boost::shared_ptr< ipsdk::math::transform::BaseGeometricTransform2d > GeometricTransform2dPtr
shared pointer to ipsdk::math::transform::BaseGeometricTransform2d
Definition: GeometricTransform2dTypes.h:96
Definition: AnisotropicScale2d.h:33
boost::shared_ptr< const ipsdk::math::transform::BaseGeometricTransform2d > GeometricTransform2dConstPtr
shared pointer to const ipsdk::math::transform::BaseGeometricTransform2d
Definition: GeometricTransform2dTypes.h:99
Predefined macros for enumerates management.
#define IPSDK_ENUM(enumTypeStr, enumSeq)
macro allowing to declare an enumerate for library
Definition: EnumMacros.h:26