IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Transform2dHdrMacros.h
Go to the documentation of this file.
1 // Transform2dHdrMacros.h:
3 // -----------------------
4 //
15 
16 #ifndef __IPSDKMATH_TRANSFORM2DHDRMACROS_H__
17 #define __IPSDKMATH_TRANSFORM2DHDRMACROS_H__
18 
19 #include <IPSDKMath/Geometry/2d/Transform/Transform2dFactory.h>
20 #include <boost/make_shared.hpp>
21 
24 
25 namespace ipsdk {
26 namespace math {
27 namespace transform {
28 
30  template <typename T>
31  struct TransformRegistrator2d
32  {
33  TransformRegistrator2d()
34  {
35  Transform2dFactory& factory = Transform2dFactory::getInstance();
36  factory.registerTransform(T::g_geometricTransform2dType,
37  T::g_paramsSize,
38  &createShared);
39  }
40  static GeometricTransform2dPtr createShared()
41  {
42  return boost::make_shared<T>();
43  }
44  };
45 
46 } // end of namespace transform
47 } // end of namespace math
48 } // end of namespace ipsdk
49 
52 
55 #define IPSDK_DECLARE_TRANSFORM2D(className) \
56 public: \
57  static const ipsdk::math::transform::eGeometricTransform2dType::domain g_geometricTransform2dType = \
58  ipsdk::math::transform::Transform2d2Enum<className>::g_geometricTransform2dType; \
59  static const ipsdk::ipUInt32 g_paramsSize = static_cast<ipsdk::ipUInt32>(eTransformParams::size); \
60  ipsdk::math::transform::eGeometricTransform2dType getGeometricTransform2dType() const \
61  { \
62  return g_geometricTransform2dType; \
63  } \
64  ipsdk::ipUInt32 getNbParams() const \
65  { \
66  return g_paramsSize; \
67  } \
68 private: \
69  static ipsdk::math::transform::TransformRegistrator2d<className> g_registrator;
70 
73 
74 #endif // __IPSDKMATH_TRANSFORM2DHDRMACROS_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
static Transform2dFactory & getInstance()
method allowing to retrieve factory singletion instance
boost::shared_ptr< ipsdk::math::transform::BaseGeometricTransform2d > GeometricTransform2dPtr
shared pointer to ipsdk::math::transform::BaseGeometricTransform2d
Definition: GeometricTransform2dTypes.h:96