NDEVR
API Documentation
PhotogrammetryDialog.h
1/*--------------------------------------------------------------------------------------------
2Copyright (c) 2026, NDEVR LLC
3tyler.parke@ndevr.org
4 __ __ ____ _____ __ __ _______
5 | \ | | | __ \ | ___|\ \ / / | __ \
6 | \ | | | | \ \ | |___ \ \ / / | |__) |
7 | . \| | | |__/ / | |___ \ V / | _ /
8 | |\ |_|_____/__|_____|___\_/____| | \ \
9 |__| \__________________________________| \__\
10
11Subject to the terms of the Enterprise+ Agreement, NDEVR hereby grants
12Licensee a limited, non-exclusive, non-transferable, royalty-free license
13(without the right to sublicense) to use the API solely for the purpose of
14Licensee's internal development efforts to develop applications for which
15the API was provided.
16
17The above copyright notice and this permission notice shall be included in all
18copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
22PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
23FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
24OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25DEALINGS IN THE SOFTWARE.
26
27Library: DronePhotogrammetry
28File: PhotogrammetryDialog
29Included in API: True
30Author(s): Tyler Parke
31 *-----------------------------------------------------------------------------------------**/
32#pragma once
33#include "DLLInfo.h"
34#include "PhotogrammetryOptions.h"
35#include "PhotogrammetryRunner.h"
36#include <NDEVR/UUID.h>
37#include <NDEVR/LogView.h>
38#include <QDialog>
39#include <QPointer>
40class QSpinBox;
41namespace NDEVR
42{
43 class QTModelManager;
44 class BasicThread;
46 class Button;
47 class QCustomTabWidget;
48 class QCustomLineEdit;
49 class QCustomComboBox;
50 class QCustomLabel;
52 class QCustomTextEdit;
65 class DRONE_PHOTOGRAMMETRY_API PhotogrammetryDialog : public QWidget
66 {
67 Q_OBJECT
68 public:
69 explicit PhotogrammetryDialog(QTModelManager* manager, QWidget* parent = nullptr);
70 virtual ~PhotogrammetryDialog();
71
72 protected:
73 void buildSetupPage(QCustomStackedWidget* tabs);
74 void buildProgressPage(QCustomStackedWidget* tabs);
75
76 void syncOptionsFromUI();
77 void syncUIFromOptions();
78
79 void commitResultToScene(PhotogrammetryResult result);
80 void onRunnerProgress(PhotogrammetryStage stage, fltp04 fraction);
81
82 protected slots:
83 void onBrowseImageFolderSlot();
84 void onBrowseGCPFileSlot();
85 void onGeoreferenceModeChangedSlot(int index);
86 void onRunClickedSlot();
87 void onCancelClickedSlot();
88 void onProcessingFinishedSlot();
89
90 signals:
95
96 private:
97 QTModelManager* m_model_manager = nullptr;
98 BasicThread* m_processing_thread = nullptr;
99 PhotogrammetryOptions m_options;
100
101 // Stacked widget (page 0 = setup, page 1 = progress)
102 QPointer<QCustomStackedWidget> m_tabs;
103
104 // File chooser dialogs (lazy-initialized)
105 QPointer<FileChooserDialog> m_folder_chooser;
106 QPointer<FileChooserDialog> m_gcp_chooser;
107
108 // Setup page
109 QPointer<QCustomLineEdit> m_image_folder_edit;
110 QPointer<QCustomComboBox> m_georef_combo;
111 QPointer<QCustomLineEdit> m_gcp_file_edit;
112 QPointer<Button> m_browse_gcp_button;
113 QPointer<QCustomComboBox> m_gps_accuracy_combo;
114 QPointer<QCustomComboBox> m_quality_combo;
115 QPointer<QCustomComboBox> m_resolution_combo;
116 QPointer<QCustomComboBox> m_dense_resolution_combo;
117 QPointer<QCustomComboBox> m_dense_mode_combo;
118 QPointer<QSpinBox> m_threads_spin;
119 QPointer<Button> m_run_button;
120
121 // Progress page
122 QPointer<QCustomLabel> m_stage_label;
123 QPointer<QCustomProgressBar> m_progress_bar;
124 QPointer<LogView> m_log_view;
125 QPointer<Button> m_cancel_button;
126 };
127}
A thread that executes a user-provided callback function concurrently.
Definition BasicThread.h:47
A core widget that allows the user to click one of many button types.
Definition Button.h:68
A dialog designed to allow the user to navigate a filesytem and select or create one or more files or...
void processingFinishedSignal()
Emitted for any terminal state (done, cancelled, or failed). Used internally.
void finishedSignal()
Emitted once when the pipeline completes successfully (e_done).
Persistent settings for a drone photogrammetry processing run.
A compact way to present a list of options to the user.
Displays translated text.
A line edit allows users to enter and edit a single line of plain text with useful editing functions,...
Allows for showing of progress bar in horizontal format.
The main class for a layout where all widgets occupy the same same and only one widget is shown at a ...
A tab widget provides a tab area and a "page area" that is used to display pages related to each tab.
A widget that is used to edit and display both plain and rich text in a multi-lined format.
A wrapper around DesignObjectLookup that provides signal and slot functionality and adds rendering ca...
The primary namespace for the NDEVR SDK.
float fltp04
Defines an alias representing a 4 byte floating-point number Bit layout is as follows: -Sign: 1 bit a...
PhotogrammetryStage
Describes which stage of the photogrammetry pipeline is currently running.
Holds the raw output of a completed photogrammetry run before it is committed to the scene.