ImagingTools Core SDK
CDepthBitmap.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <iimg/CReflectedBitmapBase.h>
7#include <idoc/CStandardDocumentMetaInfo.h>
8
9// ImtCore includes
10#include <imt3d/IDepthBitmap.h>
11#include <imt3d/CImage3dCalibration.h>
12
13
14namespace imt3d
15{
16
17
22 virtual public imt3d::IDepthBitmap,
23 public iimg::CReflectedBitmapBase,
24 public idoc::CStandardDocumentMetaInfo
25{
26public:
31 {
36
41 };
42
43 enum
44 {
45 MIT_CALIBRATION = MIT_LAST + 1,
46 MIT_CALIBRATION_TYPE_ID,
47 MIT_CALIBRATION_3D,
48 MIT_REFERENCE_BITMAP,
49 MIT_ROBOT_TRAJECTORY
50 };
51
52 typedef iimg::CReflectedBitmapBase BaseClass;
53 typedef idoc::CStandardDocumentMetaInfo BaseClass2;
54
55 CDepthBitmap();
56
57 void SetDepthRange(const istd::CRange& depthRange);
58 void SetColorMap(ColorMapType colorMapType);
59 void SetCalibration3d(const CImage3dCalibration& calibration3d);
60 void SetReferenceBitmap(const iimg::CGeneralBitmap& referenceBitmap);
61 void ResetReferenceBitmap();
62 void SetRobotTrajectory(const IDepthBitmap::RobotTrajectory& robotPositions);
63 void SetBaseCorrection(const IDepthBitmap::BaseCorrection& baseCorrection);
64
65 bool ComputeDepthRange(const i2d::IObject2d* aoi, istd::CRange& depthRange) const;
66
67 // reimplemented (IDepthBitmap)
68 virtual istd::CRange GetDepthRange() const override;
69 virtual bool CreateDepthBitmap(const istd::CRange & depthRange, const istd::CIndex2d & size) override;
70 virtual const IImage3dCalibration* GetCalibration3d() const override;
71 virtual const iimg::IBitmap* GetReferenceBitmap() const override;
72 virtual RobotTrajectory GetRobotTrajectory() const override;
73 virtual BaseCorrection GetBaseCorrection() const override;
74 istd::CIndex2d GetSize() const { return GetImageSize(); }
75
76 // reimplemented (iimg::IRasterImage)
77 virtual void ResetImage() override;
78 virtual void ClearImage() override;
79
80 // reimplemented (i2d::CObject2dBase)
81 virtual void SetCalibration(const i2d::ICalibration2d* calibrationPtr, bool releaseFlag) override;
82
83 // reimplemented (iser::ISerializable)
84 virtual bool Serialize(iser::IArchive& archive) override;
85
86 // reimplemented (istd::IChangeable)
87 virtual int GetSupportedOperations() const override;
88 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
89 virtual bool IsEqual(const IChangeable& object) const override;
90 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
91 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
92
93protected:
94 // reimplemented (iimg::CReflectedBitmapBase)
95 virtual bool ConvertFromQImage(const QImage& image) override;
96 virtual bool ConvertToQImage(QImage& result) const override;
97
98private:
99 static QByteArray SerializeRobotTrajectory(const RobotTrajectory& robotTrajectory);
100 static RobotTrajectory DeserealizeRobotTrajectory(const QByteArray& robotTrajectoryArchive);
101 void EnsureMetaInfoCreated();
102
103private:
104 istd::CRange m_depthRange;
105 ColorMapType m_colorMapType;
106 CImage3dCalibration m_calibration3d;
107 iimg::CGeneralBitmap m_referenceBitmap;
108 RobotTrajectory m_robotTrajectory;
109 BaseCorrection m_baseCorrection;
110};
111
112
113} // namespace imt3d
114