// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "libvideostitch-gui/common.hpp" #include "libvideostitch-gui/utils/inputlensenum.hpp" #include "libvideostitch/panoDef.hpp" #include <QPointer> #include <QWidget> #include <memory> class ProjectDefinition; namespace Ui { class RigWidget; } class VS_GUI_EXPORT RigWidget : public QWidget { Q_OBJECT public: explicit RigWidget(QWidget* parent = nullptr); ~RigWidget(); static QString customRigName(); void setProject(ProjectDefinition* p); void clearProject(); void updateWhenCalibrationChanged(const VideoStitch::Core::PanoDefinition* pano); ProjectDefinition* getProject() const; bool customRigIsSelected() const; QString getCurrentRig() const; std::unique_ptr<VideoStitch::Ptv::Value> cloneSelectedRigPreset() const; InputLensClass::LensType getCurrentLensType() const; double getHfov() const; public slots: void applyRigPreset(QString rig); signals: /** * @brief Sends a signal whenever the rig change */ void currentRigChanged(QString rig); /** * @brief Sends a signal when a rig preset is selected by the user */ void rigPresetSelected(QString rig); void currentLensTypeChanged(VideoStitch::Core::InputDefinition::Format lensType); void hfovChanged(double hfov); private: static VideoStitch::Core::InputDefinition::Format getFormatFrom(QString rig); bool presetIsCompatibleWithPano(std::shared_ptr<const VideoStitch::Ptv::Value> rigPresetValue) const; void checkNewFormat(VideoStitch::Core::InputDefinition::Format newFormat) const; private slots: void updateRigRelatedWidgets(QString rig); void browseRigPresets(); void updateRigBox(); void checkLensType(); void updateRigNameValue(); private: QScopedPointer<Ui::RigWidget> ui; QPointer<ProjectDefinition> project; };