// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "libvideostitch-gui/common.hpp" #include "libvideostitch-gui/widgets/singlevideowidget.hpp" #include "libvideostitch-gui/videostitcher/projectdefinition.hpp" #include <QFrame> namespace Ui { class CropInputTab; } class VS_GUI_EXPORT CropInputTab : public QFrame { Q_OBJECT public: explicit CropInputTab(const int id, const QSize videoSize, const int availableHaight, const Crop& crop, const InputLensClass::LensType t, QWidget* parent = nullptr); ~CropInputTab(); QString getReaderName() const; Crop getCrop() const; void disableCropActions(const bool block); std::shared_ptr<SingleVideoWidget> getVideoWidget() const; void setDefaultCrop(); public slots: void setCrop(const Crop& crop); signals: void cropChanged(const Crop& crop); /** * @brief Signal triggered when a new change on the crop shape is performed * @param crop A new crop value */ void notifyCropSet(const Crop& crop); private: void createCropEditor(const QSize thumbnailSize, const Crop& crop, InputLensClass::LensType lensType); QSize calculateThumbnailSize() const; void updateEditorFromSpinBoxes(); private slots: void onCropShapeChanged(const Crop& crop); void onLeftCropValueChanged(); void onRightCropValueChanged(); void onTopCropValueChanged(); void onBottomCropValueChanged(); private: Ui::CropInputTab* ui; const int inputIndex; const int maxHeight; const QSize videoSize; std::shared_ptr<SingleVideoWidget> videoWidget; QScopedPointer<CropShapeEditor> editor; };