ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
movie_grabber_widget.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 <QtCore>
11 #include <QtGui>
12 #include <QtWidgets>
13 #include <unordered_map>
14 
15 #include "base/reconstruction.h"
16 
17 namespace colmap {
18 
19 class ModelViewerWidget;
20 
21 class MovieGrabberWidget : public QWidget {
22 public:
23  MovieGrabberWidget(QWidget* parent, ModelViewerWidget* model_viewer_widget);
24 
25  // List of views, used to visualize the movie grabber camera path.
26  std::vector<Image> views;
27 
28  struct ViewData {
29  QMatrix4x4 model_view_matrix;
30  float point_size = -1.0f;
31  float image_size = -1.0f;
32  };
33 
34 private:
35  // Add, delete, clear viewpoints.
36  void Add();
37  void Delete();
38  void Clear();
39 
40  // Assemble movie from current viewpoints.
41  void Assemble();
42 
43  // Event slot for time modification.
44  void TimeChanged(QTableWidgetItem* item);
45 
46  // Event slot for changed selection.
47  void SelectionChanged(const QItemSelection& selected,
48  const QItemSelection& deselected);
49 
50  // Update state when viewpoints reordered.
51  void UpdateViews();
52 
53  ModelViewerWidget* model_viewer_widget_;
54 
55  QPushButton* assemble_button_;
56  QPushButton* add_button_;
57  QPushButton* delete_button_;
58  QPushButton* clear_button_;
59  QTableWidget* table_;
60 
61  QSpinBox* frame_rate_sb_;
62  QCheckBox* smooth_cb_;
63  QDoubleSpinBox* smoothness_sb_;
64 
65  std::unordered_map<const QTableWidgetItem*, ViewData> view_data_;
66 };
67 
68 } // namespace colmap
69 
70 // EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION_CUSTOM(
71 // colmap::MovieGrabberWidget::ViewData)
MovieGrabberWidget(QWidget *parent, ModelViewerWidget *model_viewer_widget)