ImagingTools Core SDK
CTrackballCameraComp.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 <icomp/CComponentBase.h>
7
8// ImtCore includes
9#include <imt3dview/IScene3dCamera.h>
10#include <imt3dgui/CShape3dBase.h>
11
12
13namespace imt3dview
14{
15
16
22 public icomp::CComponentBase
23{
24public:
25 typedef icomp::CComponentBase BaseClass;
26
27 I_BEGIN_COMPONENT(CTrackballCameraComp);
28 I_REGISTER_INTERFACE(imt3dview::IScene3dCamera);
29 I_END_COMPONENT;
30
32
33 // reimplemented (imt3dview::IScene3dCamera)
34 virtual const QVector3D& GetPosition() const override;
35 virtual void MoveTo(const QVector3D& position) override;
36 virtual void MoveTo(const QPoint& pointFrom, const QPoint& pointTo) override;
37
38 virtual const QQuaternion& GetRotation() const override;
39 virtual void RotateTo(const QQuaternion& rotation) override;
40 virtual void RotateTo(const QPoint& pointFrom, const QPoint& pointTo, const QVector3D& axis = QVector3D()) override;
41 virtual void RotateAround(const QVector3D& axis, float angle) override;
42
43 virtual void ZoomIn() override;
44 virtual void ZoomOut() override;
45 virtual QMatrix4x4 GetViewMatrix() const override;
46
47 virtual void SetBoundingCuboid(const imt3d::CCuboid& cuboid) override;
48 virtual imt3d::CCuboid GetBoundingCuboid() const override;
49private:
50 QVector3D GetTrackballVector(const QPoint& point2d) const;
51
52private:
53 QVector3D m_position;
54 QQuaternion m_rotation;
55
56 static const double s_zoomSpeed;
57 static const double s_moveSpeed;
58 static const double s_rotationSpeed;
59 imt3d::CCuboid m_sceneBoundingCuboid;
60};
61
62
63} // namespace imt3dview
64
65