IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
StructuringElementXYZInfo.h
1 // StructuringElementXYZInfo.h:
3 // ----------------------------
4 //
16 
17 #ifndef __IPSDKBASEDATA_STRUCTURINGELEMENTXYZINFO_H__
18 #define __IPSDKBASEDATA_STRUCTURINGELEMENTXYZINFO_H__
19 
20 // suppression warnings
21 // warning C4251: 'ipsdk::StructuringElementXYZInfo::_seXYZSubType' : class 'ipsdk::eSEXYZSubType' needs to have dll-interface to be used by clients of class 'ipsdk::StructuringElementXYZInfo'
22 #pragma warning (push)
23 #pragma warning (disable : 4251)
24 
25 #include <IPSDKBaseData/Pattern/StructuringElement/BaseStructuringElementInfo.h>
26 #include <set>
27 
28 namespace ipsdk {
29 
30 class OffsetXYZ;
31 
34 
36 {
37  // declare serial class
39 
40 public:
46 
47 // methods
48 public:
50  eStructuringElementType getStructuringElementType() const;
51 
54  void init(const StructuringElementXYZ& seXYZ);
55 
57  void initEmpty();
58 
63  void initSpherical(const ipReal64 radius);
64 
67  void initCubic(const ipUInt32 halfSize);
68 
71  void initRectangular(const ipUInt32 halfSizeX,
72  const ipUInt32 halfSizeY,
73  const ipUInt32 halfSizeZ);
74 
82  void initHalfLinear(const ipReal64 theta,
83  const ipReal64 phi,
84  const ipReal64 radius);
85 
95  void initLinear(const ipReal64 theta,
96  const ipReal64 phi,
97  const ipReal64 radius);
98 
102  const eSEXYZSubType& getSEXYZSubType() const;
103 
107  StructuringElementXYZConstPtr getStructuringElement() const;
108 
114  ipReal64 getRadius() const;
115 
119  ipUInt32 getHalfSize() const;
120 
125  ipUInt32 getHalfSizeX() const;
126  ipUInt32 getHalfSizeY() const;
127  ipUInt32 getHalfSizeZ() const;
129 
135  ipReal64 getTheta() const;
136  ipReal64 getPhi() const;
138 
142  const XYZOffsetColl& getDataColl() const;
143 
150  bool insert(const ipInt32 offsetX, const ipInt32 offsetY, const ipInt32 offsetZ);
151  bool insert(const OffsetXYZ& offset);
153 
161  bool remove(const ipInt32 offsetX, const ipInt32 offsetY, const ipInt32 offsetZ);
162  bool remove(const OffsetXYZ& offset);
164 
165 protected:
167  void clearDerived();
168 
169 // attributes
170 protected:
173 
181 
187 
197 
207 
210 };
211 
214 
217 {
219 }
220 
223 
224 } // end of namespace ipsdk
225 
226 #pragma warning (pop)
227 
228 #endif // __IPSDKBASEDATA_STRUCTURINGELEMENTXYZINFO_H__
#define IPSDK_DECLARE_SERIAL_WITH_COPY(libraryName, className)
macro enabling serialization on class
Definition: SerializationHdrMacro.h:73
ipUInt32 _halfSizeY
rectangular size of structuring element 3d
Definition: StructuringElementXYZInfo.h:194
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipReal64 _radius
radius associated to structuring element 3d
Definition: StructuringElementXYZInfo.h:180
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
int32_t ipInt32
Base types definition.
Definition: BaseTypes.h:52
eSEXYZSubType _seXYZSubType
binary structuring element 3d sub type associated to object
Definition: StructuringElementXYZInfo.h:172
eSEXYZSubType
Enumerate describing binary structuring element 3d sub type.
Definition: StructuringElementInfoTypes.h:54
boost::shared_ptr< const StructuringElementXYZ > StructuringElementXYZConstPtr
shared pointer to StructuringElementXYZ
Definition: StructuringElementTypes.h:70
ipUInt32 _halfSizeZ
rectangular size of structuring element 3d
Definition: StructuringElementXYZInfo.h:195
ipReal64 _phi
orientation associated to structuring element 3d
Definition: StructuringElementXYZInfo.h:205
ipUInt32 _halfSize
cubic size of structuring element 3d
Definition: StructuringElementXYZInfo.h:186
Concrete class for objects encapsulating informations about 3d binary structuring element objects...
Definition: StructuringElementXYZInfo.h:35
3d binary structuring element type spanning x, y and z direction
Definition: StructuringElementTypes.h:41
Class encapsulating a 3d offset along x, y and z axis.
Definition: OffsetXYZ.h:26
ipUInt32 _halfSizeX
rectangular size of structuring element 3d
Definition: StructuringElementXYZInfo.h:193
boost::shared_ptr< StructuringElementXYZ > StructuringElementXYZPtr
shared pointer to StructuringElementXYZ
Definition: StructuringElementTypes.h:69
Class encapsulating a 3d structuring element spanning along x, y and z axis.
Definition: StructuringElementXYZ.h:35
std::set< OffsetXYZ > XYZOffsetColl
collection of xyz 3d offsets
Definition: StructuringElementTypes.h:54
Base class for objects encapsulating informations about binary structuring element objects...
Definition: BaseStructuringElementInfo.h:29
eStructuringElementType getStructuringElementType() const
retrieve structuring element type associated to object
Definition: StructuringElementXYZInfo.h:216
eStructuringElementType
Enumerate describing binary structuring element type.
Definition: StructuringElementTypes.h:37
ipReal64 _theta
orientation associated to structuring element 3d
Definition: StructuringElementXYZInfo.h:204
#define IPSDKBASEDATA_API
Import/Export macro for library IPSDKUtil.
Definition: IPSDKBaseDataExports.h:27
StructuringElementXYZPtr _pSEXYZ
underlying structuring element associated to object
Definition: StructuringElementXYZInfo.h:209
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53