X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fgeometrywidget.h;h=65681b31f2060be2616d4207df3a5d53791a7dae;hb=782c551b31e70065bba295fbe894616b528f0b81;hp=35369f434154e2d27016ccf26dde65934da3b968;hpb=8090077b4f8f547244e76988eb553ac5c5993d33;p=kdenlive diff --git a/src/geometrywidget.h b/src/geometrywidget.h index 35369f43..65681b31 100644 --- a/src/geometrywidget.h +++ b/src/geometrywidget.h @@ -28,11 +28,13 @@ #include class QDomElement; -class QGraphicsRectItem; class Monitor; class MonitorScene; class KeyframeHelper; class TimecodeDisplay; +class OnMonitorRectItem; +class QGraphicsRectItem; +class DragValue; class GeometryWidget : public QWidget { @@ -40,14 +42,22 @@ class GeometryWidget : public QWidget public: /** @brief Sets up the UI and connects it. * @param monitor Project monitor + * @param timecode Timecode needed by timecode display widget * @param clipPos Position of the clip in timeline + * @param isEffect true if used in an effect, false if used in a transition + * @param showRotation Should we show or hide the rotation sliders * @param parent (optional) Parent widget */ - GeometryWidget(Monitor *monitor, Timecode timecode, int clipPos, bool isEffect, QWidget* parent = 0); + GeometryWidget(Monitor *monitor, Timecode timecode, int clipPos, bool isEffect, bool showRotation, QWidget* parent = 0); virtual ~GeometryWidget(); /** @brief Gets the geometry as a serialized string. */ QString getValue() const; + QString getExtraValue(const QString &name) const; /** @brief Updates the timecode display according to settings (frame number or hh:mm:ss:ff) */ void updateTimecodeFormat(); + /** @brief Sets the size of the original clip. */ + void setFrameSize(QPoint size); + + void addParameter(const QDomElement elem); public slots: /** @brief Sets up the rect and the geometry object. @@ -55,6 +65,10 @@ public slots: * @param minframe In point of the clip * @param maxframe Out point of the clip */ void setupParam(const QDomElement elem, int minframe, int maxframe); + /** @brief Updates position of the local timeline to @param relTimelinePos. */ + void slotSyncPosition(int relTimelinePos); + /** @brief Switches from normal monitor to monitor scene according to @param show. */ + void slotShowScene(bool show = true); private: Ui::GeometryWidget_UI m_ui; @@ -68,10 +82,28 @@ private: int m_outPoint; bool m_isEffect; MonitorScene *m_scene; - QGraphicsRectItem *m_rect; + OnMonitorRectItem *m_rect; + QGraphicsRectItem *m_previous; KeyframeHelper *m_timeline; /** Stores the different settings in the MLT geometry format. */ Mlt::Geometry *m_geometry; + QStringList m_extraGeometryNames; + QStringList m_extraFactors; + QList m_extraGeometries; + bool m_showScene; + DragValue *m_spinX; + DragValue *m_spinY; + DragValue *m_spinWidth; + DragValue *m_spinHeight; + DragValue *m_spinSize; + DragValue *m_opacity; + DragValue *m_rotateX; + DragValue *m_rotateY; + DragValue *m_rotateZ; + QPoint m_frameSize; + bool m_showRotation; + /** @brief Update monitor rect with current width / height values. */ + void updateMonitorGeometry(); private slots: /** @brief Updates controls according to position. @@ -106,16 +138,19 @@ private slots: void slotUpdateProperties(); /** @brief Sets the rect's x position to @param value. */ - void slotSetX(int value); + void slotSetX(double value); /** @brief Sets the rect's y position to @param value. */ - void slotSetY(int value); + void slotSetY(double value); /** @brief Sets the rect's width to @param value. */ - void slotSetWidth(int value); + void slotSetWidth(double value); /** @brief Sets the rect's height to @param value. */ - void slotSetHeight(int value); + void slotSetHeight(double value); /** @brief Resizes the rect by @param value (in perecent) compared to the frame size. */ - void slotResize(int value); + void slotResize(double value); + + /** @brief Sets the opacity to @param value. */ + void slotSetOpacity(double value); /** @brief Moves the rect to the left frame border (x position = 0). */ void slotMoveLeft(); @@ -130,6 +165,14 @@ private slots: /** @brief Moves the rect to the bottom frame border (y position = frame height - rect height). */ void slotMoveBottom(); + /** @brief Enables/Disables syncing with the timeline according to @param sync. */ + void slotSetSynchronize(bool sync); + void slotAdjustToFrameSize(); + void slotFitToWidth(); + void slotFitToHeight(); + /** @brief Show / hide previous keyframe in monitor scene. */ + void slotShowPreviousKeyFrame(bool show); + signals: void parameterChanged(); void checkMonitorPosition(int);