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