ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ModelInteractorLogic.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <map>
11 
14 
15 namespace cloudViewer {
16 namespace visualization {
17 namespace rendering {
18 
19 class CloudViewerScene;
20 
23 
24 public:
26  Camera* camera,
27  double min_far_plane);
28  virtual ~ModelInteractorLogic();
29 
30  void SetBoundingBox(const ccBBox& bounds) override;
31 
32  void SetModel(GeometryHandle axes,
33  const std::vector<GeometryHandle>& objects);
34 
35  void Rotate(int dx, int dy) override;
36  void RotateZ(int dx, int dy) override;
37  void Dolly(float dy, DragType drag_type) override;
38  void Pan(int dx, int dy) override;
39 
40  void StartMouseDrag() override;
41  void UpdateMouseDragUI() override;
42  void EndMouseDrag() override;
43 
44 private:
45  CloudViewerScene* scene_;
46  bool is_axes_visible_;
47 
48  ccBBox bounds_at_mouse_down_;
49  std::map<std::string, Camera::Transform> transforms_at_mouse_down_;
50 
51  void UpdateBoundingBox(const Camera::Transform& t);
52 };
53 
54 } // namespace rendering
55 } // namespace visualization
56 } // namespace cloudViewer
Bounding box structure.
Definition: ecvBBox.h:25
Eigen::Transform< float, 3, Eigen::Affine > Transform
Definition: Camera.h:29
void SetModel(GeometryHandle axes, const std::vector< GeometryHandle > &objects)
void RotateZ(int dx, int dy) override
Rotates about the forward axis of the matrix.
ModelInteractorLogic(CloudViewerScene *scene, Camera *camera, double min_far_plane)
Generic file read and write utility for python interface.