IOLink  IOL_v1.2.0_release
SpatialCalibrationProperty.h
1 #pragma once
2 
3 #include <cstdint>
4 #include <memory>
5 #include <string>
6 
7 #include <iolink/IOLinkAPI.h>
8 #include <iolink/Vector.h>
9 #include <iolink/property/SpatialDirections.h>
10 
11 namespace iolink
12 {
13 
35 class IOLINK_API SpatialCalibrationProperty final
36 {
37 public:
47 
53  explicit SpatialCalibrationProperty(const Vector3d& origin);
54 
61  SpatialCalibrationProperty(const Vector3d& origin, const Vector3d& spacing);
62 
70  SpatialCalibrationProperty(const Vector3d& origin, const Vector3d& spacing, const SpatialDirections& direction);
71 
81  const Vector3d& spacing,
82  const SpatialDirections& direction,
83  const std::string& unit);
84 
91 
98 
105 
111  SpatialCalibrationProperty& operator=(SpatialCalibrationProperty&& other) noexcept;
112 
117 
121  const Vector3d& origin() const;
122 
126  const Vector3d& spacing() const;
127 
131  const SpatialDirections& directions() const;
132 
136  const std::string& unit() const;
137 
141  void setOrigin(const Vector3d& origin);
142 
146  void setSpacing(const Vector3d& spacing);
147 
151  void setDirections(const SpatialDirections& directions);
152 
156  void setUnit(const std::string& unit);
157 
163  bool operator==(const SpatialCalibrationProperty& other) const;
164 
170  bool operator!=(const SpatialCalibrationProperty& other) const;
171 
175  std::string toString() const;
176 
177 private:
178  class Private;
179  Private* m_private;
180 };
181 
182 } // end namespace iolink