X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgeometrywidget.h;h=64cb02aaab0e799344a8d47df0534b866dba62ae;hb=525c7c608d9f74d569ecbe88f8565eee5d3bfec4;hp=e42675ba60ac078db98f97e2fab736d5467f3fff;hpb=af105142a799ddd9594c3149eb62c8a7a0025458;p=kdenlive diff --git a/src/geometrywidget.h b/src/geometrywidget.h index e42675ba..64cb02aa 100644 --- a/src/geometrywidget.h +++ b/src/geometrywidget.h @@ -33,6 +33,7 @@ class MonitorScene; class KeyframeHelper; class TimecodeDisplay; class OnMonitorRectItem; +class QGraphicsRectItem; class DragValue; class GeometryWidget : public QWidget @@ -44,16 +45,20 @@ public: * @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. * @param elem DomElement representing this effect parameter @@ -62,8 +67,6 @@ public slots: 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; @@ -78,9 +81,13 @@ private: bool m_isEffect; MonitorScene *m_scene; 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; @@ -88,7 +95,13 @@ private: 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. @@ -96,6 +109,8 @@ private slots: * @param seek (optional, default = true) Whether to seek timleine & project monitor to pos * If pos = -1 (default) the value of m_timePos is used. */ void slotPositionChanged(int pos = -1, bool seek = true); + /** @brief Seeking requested from timeline. */ + void slotRequestSeek(int pos); /** @brief Updates settings after a keyframe was moved to @param pos. */ void slotKeyframeMoved(int pos); /** @brief Adds a keyframe. @@ -113,29 +128,25 @@ private slots: /** @brief Adds or deletes a keyframe depending on whether there is already a keyframe at the current position. */ void slotAddDeleteKeyframe(); - /** @brief Makes sure the monitor effect scene is only visible if the clip this geometry belongs to is visible. - * @param renderPos Postion of the Monitor / Timeline cursor */ - void slotCheckMonitorPosition(int renderPos); - /** @brief Updates the Mlt::Geometry object. */ void slotUpdateGeometry(); /** @brief Updates the spinBoxes according to the rect. */ 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(int value); + void slotSetOpacity(double value); /** @brief Moves the rect to the left frame border (x position = 0). */ void slotMoveLeft(); @@ -155,10 +166,11 @@ private slots: void slotAdjustToFrameSize(); void slotFitToWidth(); void slotFitToHeight(); + /** @brief Show / hide previous keyframe in monitor scene. */ + void slotShowPreviousKeyFrame(bool show); signals: void parameterChanged(); - void checkMonitorPosition(int); void seekToPos(int); };