X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipitem.h;h=c5323905b182dc98a4dcaa76506a1c5de938f7a9;hb=5a403d4a2689486dbdef95fb4c529a44636e8753;hp=27fc24d02aced85fac2bd61aaf701b2497ae99d7;hpb=574472e8c2d42cc2828750920c9171ef7cc9c992;p=kdenlive diff --git a/src/clipitem.h b/src/clipitem.h index 27fc24d0..c5323905 100644 --- a/src/clipitem.h +++ b/src/clipitem.h @@ -36,13 +36,17 @@ class DocClipBase; class Transition; +namespace Mlt +{ +class Producer; +}; class ClipItem : public AbstractClipItem { Q_OBJECT public: - ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, int strobe, bool generateThumbs = true); + ClipItem(DocClipBase *clip, ItemInfo info, double fps, double speed, int strobe, int frame_width, bool generateThumbs = true); virtual ~ ClipItem(); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, @@ -51,6 +55,7 @@ public: void resizeStart(int posx, bool size = true); void resizeEnd(int posx); OPERATIONTYPE operationMode(QPointF pos); + static int itemHeight(); const QString clipProducer() const; int clipType() const; DocClipBase *baseClip() const; @@ -72,9 +77,6 @@ public: * @return The parameters that will be passed to Mlt */ EffectsParameterList addEffect(const QDomElement effect, bool animate = true); - /** @brief Gets the effect parameters that will be passed to Mlt. */ - EffectsParameterList getEffectArgs(QDomElement effect); - /** @brief Deletes the effect with id @param index. */ void deleteEffect(QString index); @@ -106,8 +108,9 @@ public: void resetThumbs(bool clearExistingThumbs); /** @brief Updates clip properties from base clip. - * @param checkDuration whether or not to check for a valid duration. */ - void refreshClip(bool checkDuration); + * @param checkDuration whether or not to check for a valid duration. + * @param resetThumbs whether or not to recreate the image thumbnails. */ + void refreshClip(bool checkDuration, bool resetThumbs); /** @brief Gets clip's marker times. * @return A list of the times. */ @@ -154,15 +157,22 @@ public: bool isVideoOnly() const; bool isAudioOnly() const; - /** @brief Adjusts the keyframe values to fit a clip resizement. - * @param previous Old crop value - * @param current New crop value - * @param fromStart true = crop from start, false = crop from end - * @return true if anything was modified */ - bool checkEffectsKeyframesPos(const int previous, const int current, bool fromStart); void insertKeyframe(QDomElement effect, int pos, int val); void movedKeyframe(QDomElement effect, int oldpos, int newpos, double value); void updateKeyframes(QDomElement effect); + void updateGeometryKeyframes(QDomElement effect, int paramIndex, int width, int height, ItemInfo oldInfo); + bool updateNormalKeyframes(QDomElement parameter); + + /** @brief Adjusts effects after a clip duration change. */ + QMap adjustEffectsToDuration(int width, int height, ItemInfo oldInfo); + + /** Returns the necessary (audio, video, general) producer. + * @param track Track of the requested producer + * @param trackSpecific (default = true) Whether to return general producer for a specific track. + * @return Fitting producer + * Which producer is returned depends on the type of this clip (audioonly, videoonly, normal) */ + Mlt::Producer *getProducer(int track, bool trackSpecific = true); + void resetFrameWidth(int width); protected: //virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event); @@ -209,7 +219,9 @@ private: QPixmap m_videoPix; QPixmap m_audioPix; - void doGetIntraThumbs(QPainter *painter, const QPointF startPos, int offset, int start, int end); + /** @brief Keyframes type can be "keyframe" or "simplekeyframe" which have to be painted differently. + * True if keyframe type is "keyframe" */ + bool m_limitedKeyFrames; private slots: void slotGetStartThumb(); @@ -220,6 +232,8 @@ private slots: void slotSetStartThumb(QImage img); void slotSetEndThumb(QImage img); void slotThumbReady(int frame, QImage img); + /** @brief The thumbnailer has finished to cache all required thumbs. */ + void slotGotThumbsCache(); public slots: void slotFetchThumbs();