X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fabstractclipitem.h;h=ac73446998bdcc388ded3fa616907a841de61f83;hb=56aee6aedeeed3efd10ada8fe3c229eddc01ef05;hp=060d538e1b5aa6e28994bc4454988186bda4a1e9;hpb=1638e2102044baead0d085bdc9b5b2e7954ce4fb;p=kdenlive diff --git a/src/abstractclipitem.h b/src/abstractclipitem.h index 060d538e..ac734469 100644 --- a/src/abstractclipitem.h +++ b/src/abstractclipitem.h @@ -37,9 +37,8 @@ class QGraphicsSceneMouseEvent; class AbstractClipItem : public QObject, public QGraphicsRectItem { Q_OBJECT -#if QT_VERSION >= 0x040600 Q_PROPERTY(QRectF rect READ rect WRITE setRect) -#endif + Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity) public: AbstractClipItem(const ItemInfo &info, const QRectF& rect, double fps); @@ -50,6 +49,7 @@ public: * @param pos new Position * @param value new Value */ void updateKeyFramePos(const GenTime &pos, const double value); + int checkForSingleKeyframe(); int addKeyFrame(const GenTime &pos, const double value); bool hasKeyFrames() const; int editedKeyFramePos() const; @@ -67,7 +67,7 @@ public: bool isItemLocked() const; void closeAnimation(); - virtual OPERATIONTYPE operationMode(QPointF pos) = 0; + virtual OperationType operationMode(const QPointF &pos) = 0; virtual GenTime startPos() const ; virtual void setTrack(int track); virtual GenTime endPos() const ; @@ -84,19 +84,23 @@ public: /** @brief Resizes the clip from the start. * @param posx Absolute position of new in point * @param hasSizeLimit (optional) Whether the clip has a maximum size */ - virtual void resizeStart(int posx, bool hasSizeLimit = true); + virtual void resizeStart(int posx, bool hasSizeLimit = true, bool emitChange = true); /** @brief Resizes the clip from the end. * @param posx Absolute position of new out point */ - virtual void resizeEnd(int posx); + virtual void resizeEnd(int posx, bool emitChange = true); virtual double fps() const; virtual void updateFps(double fps); virtual GenTime maxDuration() const; - virtual void setCropStart(GenTime pos); + virtual void setCropStart(const GenTime &pos); + /** @brief Set this clip as the main selected clip (or not). */ + void setMainSelectedClip(bool selected); + /** @brief Is this clip selected as the main clip. */ + bool isMainSelectedClip(); + protected: ItemInfo m_info; -// int m_track; /** The position of the current keyframe when it has moved */ int m_editedKeyframe; /** The position of the current keyframe before it was moved */ @@ -115,15 +119,17 @@ protected: /** The (keyframe) parameter that is visible and editable in timeline (on the clip) */ int m_visibleParam; double m_fps; + /** @brief True if this is the last clip the user selected */ + bool m_isMainSelectedClip; /** @brief Draw the keyframes of a clip * @param painter The painter device for the clip * @param limitedKeyFrames The keyframes can be of type "keyframe" or "simplekeyframe". In the * "simplekeyframe" type, the effect always starts on clip start and ends on clip end. With the * "keyframe" type, the effect starts on the first keyframe and ends on the last keyframe */ - void drawKeyFrames(QPainter *painter, bool limitedKeyFrames); + void drawKeyFrames(QPainter *painter, const QTransform &transformation, bool limitedKeyFrames); int mouseOverKeyFrames(QPointF pos, double maxOffset); - virtual void mousePressEvent(QGraphicsSceneMouseEvent * event); + void mousePressEvent(QGraphicsSceneMouseEvent * event); };