IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseGeometryTransform3d.h
1 // BaseGeometryTransform3d.h:
3 // --------------------------
4 //
14 
15 #ifndef __IPSDKGEOMETRY_BASEGEOMETRYTRANSFORM3D_H__
16 #define __IPSDKGEOMETRY_BASEGEOMETRYTRANSFORM3D_H__
17 
18 #include <IPSDKGeometry/Transform/BaseGeometryTransform.h>
21 
22 namespace ipsdk {
23 namespace geom {
24 
25 // enumeration of available geometry entity 3d types
27 
30 
32 {
33  // declare serial class
35 
36 // predefined public types
37 public:
39  static const eCoordinateDimension::domain g_coordinateDimension = eCoordinateDimension::eCD_3d;
40 
41 public:
45  virtual ~BaseGeometryTransform3d() = 0;
47 
48 // methods
49 public:
51  eCoordinateDimension getCoordinateDimension() const;
52 
54  virtual eTransform3dType getTransform3dType() const = 0;
55 
58  virtual bool applyInSitu(BaseGeometryEntity3d& entity) const = 0;
59 
62  bool applyInSitu(const GeometryEntity3dPtr& pEntity) const;
63 
66  virtual GeometryEntity3dPtr apply(const BaseGeometryEntity3d& entity) const = 0;
67 
71 
72 // attributes
73 protected:
74 
75 };
76 
79 
82 {
83  return g_coordinateDimension;
84 }
85 
88 
89 } // end of namespace geom
90 } // end of namespace ipsdk
91 
92 #endif // __IPSDKGEOMETRY_BASEGEOMETRYTRANSFORM3D_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Header part of macros for geometry transform 3d management.
boost::shared_ptr< const BaseGeometryEntity3d > GeometryEntity3dConstPtr
shared pointer to const BaseGeometryEntity3d
Definition: GeometryEntity3dTypes.h:123
eTransform3dType
Enumerate describing geometry 3d transform type.
Definition: GeometryTransform3dTypes.h:33
eCoordinateDimension
Enumerate describing coordinates dimension.
Definition: GeometryEntityTypes.h:38
IPSDKGEOMETRY_API bool apply(const BaseGeometryTransform2d &transform, BaseGeometryEntity2d &entity)
function allowing to apply in situ a given transformation on an entity
eCoordinateDimension getCoordinateDimension() const
method allowing to retrieve entity underlying coordinates dimension
Definition: BaseGeometryTransform3d.h:81
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITH_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:91
#define IPSDK_ENUMERATE_GEOMETRY_ENTITY_3D_TYPES()
macro allowing to enumerate geometry entity 3d types
Definition: GeometryEntity3dListMacros.h:28
Predefined types for geometry 3d transform management.
static const eCoordinateDimension::domain g_coordinateDimension
entity underlying coordinates dimension
Definition: BaseGeometryTransform3d.h:39
#define IPSDKGEOMETRY_API
Import/Export macro for library IPSDKGeometry.
Definition: IPSDKGeometryExports.h:25
Base class for geometry 3d transformations.
Definition: BaseGeometryTransform3d.h:31
boost::shared_ptr< BaseGeometryEntity3d > GeometryEntity3dPtr
shared pointer to BaseGeometryEntity3d
Definition: GeometryEntity3dTypes.h:120
Base class for 3d geometry entities.
Definition: BaseGeometryEntity3d.h:34
Base class for geometry transformations.
Definition: BaseGeometryTransform.h:28