IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
MeasureInfoSet.h
1 // MeasureInfoSet.h:
3 // -----------------
4 //
14 
15 #ifndef __IPSDKBASESHAPEANALYSIS_MEASUREINFOSET_H__
16 #define __IPSDKBASESHAPEANALYSIS_MEASUREINFOSET_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::shape::analysis::MeasureInfoSet::_measureInfoColl' : class 'std::map<_Kty,_Ty>' needs to have dll-interface to be used by clients of class 'ipsdk::shape::analysis::MeasureInfoSet'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
25 #include <IPSDKSerialization/Engine/BaseSerializationObject.h>
26 #include <IPSDKUtil/Tools/ProcessingResult.h>
28 #include <boost/enable_shared_from_this.hpp>
29 #include <boost/smart_ptr/make_shared_object.hpp>
30 
31 namespace ipsdk {
32 namespace shape {
33 namespace analysis {
34 
37 
39  public boost::enable_shared_from_this<MeasureInfoSet>
40 {
41  // declare serial class
42  IPSDK_DECLARE_SERIAL_WITHOUT_COPY(IPSDKBaseShapeAnalysis, MeasureInfoSet)
43 
44  // friend class for protected members access
45  friend MeasureInfoSetPtr boost::make_shared<MeasureInfoSet>();
46 #if !defined( BOOST_NO_CXX11_RVALUE_REFERENCES )
47  template< class T, class... Args >
48  friend typename boost::detail::sp_if_not_array< T >::type boost::make_shared(Args && ...);
49 #else
50  friend MeasureInfoSetPtr boost::make_shared<MeasureInfoSet, bool, ipsdk::GeometricCalibrationConstPtr>(const bool&, const ipsdk::GeometricCalibrationConstPtr&);
51 #endif
52 
53 protected:
55  MeasureInfoSet(const bool b2dMeasureSet = true,
56  const GeometricCalibrationConstPtr& pGlobalGeometricCalibration = GeometricCalibrationConstPtr());
57 
58 public:
60  ~MeasureInfoSet();
61 
62 // methods
63 public:
65  static MeasureInfoSetPtr create2dInstance(const GeometricCalibrationConstPtr& pGlobalGeometricCalibration = GeometricCalibrationConstPtr());
66 
68  static MeasureInfoSetPtr create3dInstance(const GeometricCalibrationConstPtr& pGlobalGeometricCalibration = GeometricCalibrationConstPtr());
69 
73  static MeasureInfoSetPtr createFromExisting(const MeasureInfoSet& inputMeasureInfoSet);
74 
77  bool is2dMeasureSet() const;
78 
81  bool is3dMeasureSet() const;
82 
86  const GeometricCalibrationConstPtr& getGlobalGeometricCalibration() const;
87 
89  const MeasureInfoColl& getMeasureInfoColl() const;
90 
92  void extractNeededInputs(ShapeCollIdSet& shapeCollIdSet,
93  ImageIdSet& imageIdSet) const;
94 
97  bool requiresRowIntersections(const eMsrInputShapeCollId& shapeCollId) const;
98 
101  bool requiresBoundaryApproximation(const eMsrInputShapeCollId& shapeCollId) const;
102 
104  const AliasMap& getAliasMap() const;
105 
107  bool existsMeasureInfo(const std::string& measureName,
108  const eMsrNameType& msrNameType = eMsrNameType::eMNT_User) const;
109 
111  bool existsMeasureInfo(const std::string& measureDefaultName,
112  const MeasureConfigConstPtr& pMeasureConfig,
113  const DataItemConstPtr& pMeasureParams) const;
114 
121  BoolResult createMeasureInfo(const std::string& measureName,
122  const std::string& measureDefaultName,
123  const DataItemConstPtr& pMeasureParams);
124  BoolResult createMeasureInfo(const std::string& measureName,
125  const std::string& measureDefaultName,
126  const MeasureConfigConstPtr& pMeasureConfig = MeasureConfigConstPtr(),
127  const DataItemConstPtr& pMeasureParams = DataItemConstPtr());
129 
136  BoolResult createMeasureInfo(const std::string& measureDefaultName,
137  const DataItemConstPtr& pMeasureParams);
138  BoolResult createMeasureInfo(const std::string& measureDefaultName,
139  const MeasureConfigConstPtr& pMeasureConfig = MeasureConfigConstPtr(),
140  const DataItemConstPtr& pMeasureParams = DataItemConstPtr());
142 
147  MeasureInfoConstPtr getMeasureInfo(const std::string& measureName) const;
148  const MeasureInfoPtr& getMeasureInfo(const std::string& measureName);
150 
153  void getMeasureInfoColl(const std::string& defaultMeasureName,
154  MeasureInfoColl& measureInfoColl) const;
155 
157  void clear();
158 
159 // attributes
160 protected:
163 
166 
169 
172 };
173 
176 
177 inline bool
179 {
180  return _b2dMeasureSet == true;
181 }
182 
183 inline bool
185 {
186  return _b2dMeasureSet == false;
187 }
188 
191 
192 } // end of namespace analysis
193 } // end of namespace shape
194 } // end of namespace ipsdk
195 
196 #pragma warning (pop)
197 
198 #endif // __IPSDKBASESHAPEANALYSIS_MEASUREINFOSET_H__
Predefined types for geometric calibration management.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
std::set< eMsrInputShapeCollId > ShapeCollIdSet
set of input shape collection id required by measures
Definition: MeasureConfigTypes.h:98
boost::shared_ptr< const MeasureConfig > MeasureConfigConstPtr
shared pointer to const MeasureConfig object
Definition: MeasureConfigTypes.h:89
boost::shared_ptr< const BaseMeasureInfo > MeasureInfoConstPtr
shared pointer to const shape measure information object
Definition: MeasureInfoTypes.h:142
boost::shared_ptr< const BaseDataItem > DataItemConstPtr
shared pointer to const DataItem
Definition: DataItemTypes.h:149
boost::shared_ptr< const ipsdk::GeometricCalibration > GeometricCalibrationConstPtr
shared pointer to const ipsdk::GeometricCalibration
Definition: GeometricCalibrationTypes.h:31
AliasMap _aliasMap
collection of alias for measure names
Definition: MeasureInfoSet.h:168
Definition of import/export macro for library.
#define IPSDKBASESHAPEANALYSIS_API
Import/Export macro for library IPSDKBaseShapeAnalysis.
Definition: IPSDKBaseShapeAnalysisExports.h:25
bool _b2dMeasureSet
flag indicating whether measure set is 2d or 3d
Definition: MeasureInfoSet.h:162
bool is2dMeasureSet() const
Definition: MeasureInfoSet.h:178
std::map< std::string, MeasureInfoPtr > MeasureInfoColl
collection of shared pointer to shape measure information object
Definition: MeasureInfoTypes.h:151
eMsrInputShapeCollId
Enumerate allowing to identify shape collection used for processing.
Definition: MeasureConfigTypes.h:38
Object allowing to agregate a collection of measure informations.
Definition: MeasureInfoSet.h:38
#define IPSDK_DECLARE_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on class
Definition: SerializationHdrMacro.h:79
std::map< std::string, std::string > AliasMap
map associating a string to an other (an alias map)
Definition: MeasureInfoTypes.h:166
MeasureInfoColl _measureInfoColl
collection of measure information associated to object
Definition: MeasureInfoSet.h:165
IPSDKBASESHAPEANALYSIS_API void createMeasureInfo(const MeasureInfoSetPtr &pMeasureInfoSet, const std::string &measureName, const std::string &measureDefaultName, const MeasureConfigConstPtr &pMeasureConfig=MeasureConfigConstPtr(), const DataItemConstPtr &pMeasureParams=DataItemConstPtr())
functions allowing to create a new measure information and to insert it into a measure information se...
Predefined types for measures management.
bool is3dMeasureSet() const
Definition: MeasureInfoSet.h:184
boost::shared_ptr< MeasureInfoSet > MeasureInfoSetPtr
shared pointer to shape measure information set
Definition: MeasureInfoTypes.h:157
GeometricCalibrationConstPtr _pGlobalGeometricCalibration
global calibration associated object
Definition: MeasureInfoSet.h:171
measure name attributed by user
Definition: MeasureInfoTypes.h:76
Base class for serializable class.
Definition: BaseSerializationObject.h:33
eMsrNameType
Enumerate describing measure name type.
Definition: MeasureInfoTypes.h:74
std::set< eMsrInputImageId > ImageIdSet
set of input image id required by measures
Definition: MeasureConfigTypes.h:101
boost::shared_ptr< BaseMeasureInfo > MeasureInfoPtr
shared pointer to shape measure information object
Definition: MeasureInfoTypes.h:125