1 /***************************************************************************
2 transition.h - description
4 begin : Tue Jan 24 2006
5 copyright : (C) 2006 by Jean-Baptiste Mardelle
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
16 ***************************************************************************/
22 #include <QGraphicsRectItem>
28 #include "definitions.h"
29 #include "abstractclipitem.h"
31 /**Describes a Transition, with a name, parameters keyframes, etc.
32 *@author Jean-Baptiste Mardelle
37 class Transition : public AbstractClipItem {
41 Transition(const QRectF&, ClipItem * clipa, const TRANSITIONTYPE & type, const GenTime &startTime, const GenTime &endTime, double fps, bool inverted = false);
42 Transition(const QRectF&, ClipItem * clip, QDomElement transitionElement, double fps, GenTime offset = GenTime());
43 virtual ~Transition();
44 virtual void paint(QPainter *painter,
45 const QStyleOptionGraphicsItem *option,
47 virtual int type() const;
48 /** Returns an XML representation of this transition. */
51 GenTime transitionStartTime() const;
52 GenTime transitionEndTime() const;
53 /** Return the track number of transition in the playlist*/
54 int transitionStartTrack() const;
55 int transitionEndTrack() const;
57 bool hasClip(const ClipItem * clip) const;
58 bool belongsToClip(const ClipItem * clip) const;
59 void resizeTransitionEnd(GenTime time);
60 void resizeTransitionStart(GenTime time);
61 void moveTransition(GenTime time);
62 bool invertTransition() const;
63 TRANSITIONTYPE transitionType() const;
64 OPERATIONTYPE operationMode(QPointF pos, double scale);
65 QString transitionTag() const;
66 QString transitionName() const;
67 void setTransitionType(TRANSITIONTYPE newType);
68 const QMap < QString, QString > transitionParameters() const;
69 void setTransitionParameters(const QMap < QString, QString > parameters);
70 void setTransitionDirection(bool inv);
71 int transitionTrack() const;
72 void setTransitionTrack(int track);
73 QPixmap transitionPixmap() const;
74 Transition *reparent(ClipItem * clip);
76 GenTime transitionDuration() const;
77 const ClipItem *referencedClip() const;
78 GenTime startPos() const;
79 GenTime endPos() const;
81 GenTime duration() const;
84 GenTime m_transitionStart;
85 GenTime m_transitionDuration;
86 QMap < QString, QString > m_transitionParameters;
88 /** The name of the transition used by mlt (composite, luma,...)*/
89 TRANSITIONTYPE m_transitionType;
91 /** The name of the transition to be displayed to user */
92 QString m_transitionName;
94 /** Should the transition be reversed */
95 bool m_invertTransition;
99 /** The track to which the transition is attached*/
102 /** The clip to which the transition is attached */
103 ClipItem *m_referenceClip;
105 /** The 2nd clip to which the transition is attached */
106 ClipItem *m_secondClip;
107 int m_transitionTrack;
109 /** Return the display name for a transition type */
110 QString getTransitionName(const TRANSITIONTYPE & type);
112 /** Return the transition type for a given name */
113 TRANSITIONTYPE getTransitionForName(const QString & type);