ImagingTools Core SDK
CPosition3d.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 <i3d/CVector3d.h>
7
8// ImtCore includes
9#include <imt3d/IObject3d.h>
10
11
12namespace imt3d
13{
14
15
19class CPosition3d: virtual public IObject3d
20{
21public:
22 static QByteArray GetTypeName();
23
25 CPosition3d(const i3d::CVector3d& position);
26
27 const i3d::CVector3d& GetPosition() const;
28 void SetPosition(const i3d::CVector3d& position);
29 void Translate(const i3d::CVector3d& vector);
30 CPosition3d GetTranslated(const i3d::CVector3d& vector) const;
31
32 // reimplemented (imt3d::IObject3d)
33 virtual bool IsEmpty() const override;
34 virtual i3d::CVector3d GetCenter() const override;
35 virtual void MoveCenterTo(const i3d::CVector3d& position) override;
36 virtual CCuboid GetBoundingCuboid() const override;
37
38 // reimplemented (iser::IObject)
39 virtual QByteArray GetFactoryId() const override;
40
41 // reimplemented (iser::ISerializable)
42 virtual bool Serialize(iser::IArchive& archive) override;
43
44 // reimplemented (istd::IChangeable)
45 virtual int GetSupportedOperations() const override;
46 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
47 virtual bool IsEqual(const IChangeable& object) const override;
48 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
49 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
50
51protected:
52 i3d::CVector3d m_position;
53};
54
55
56// inline methods
57
58inline const i3d::CVector3d& CPosition3d::GetPosition() const
59{
60 return m_position;
61}
62
63
64inline void CPosition3d::Translate(const i3d::CVector3d& vector)
65{
66 m_position += vector;
67}
68
69
70inline CPosition3d CPosition3d::GetTranslated(const i3d::CVector3d& vector) const
71{
72 CPosition3d translatedPosition = *this;
73
74 translatedPosition.Translate(vector);
75
76 return translatedPosition;
77}
78
79
80} // namespace imt3d
81
82