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 ***************************************************************************/
20 * @author Jean-Baptiste Mardelle
21 * @brief Describes a transition with a name, parameters, keyframes, etc.
28 #include <QGraphicsRectItem>
30 #include <QDomElement>
34 #include "definitions.h"
35 #include "abstractclipitem.h"
39 class Transition : public AbstractClipItem
44 Transition(const ItemInfo &info, int transitiontrack, double fps, QDomElement params = QDomElement(), bool automaticTransition = false);
45 virtual ~Transition();
46 virtual void paint(QPainter *painter,
47 const QStyleOptionGraphicsItem *option,
49 virtual int type() const;
51 /** @brief Returns an XML representation of this transition. */
54 /** @brief Returns the track number of the transition in the playlist. */
55 int transitionEndTrack() const;
56 bool hasClip(const ClipItem * clip) const;
57 bool belongsToClip(const ClipItem * clip) const;
58 QString transitionTag() const;
59 QStringList transitionInfo() const;
60 OPERATIONTYPE operationMode(QPointF pos);
61 static int itemHeight();
62 static int itemOffset();
63 //const QMap < QString, QString > transitionParameters() const;
64 void setTransitionParameters(const QDomElement params);
65 void setTransitionTrack(int track);
67 /** @brief Links the transition to another track.
69 * This happens only if the current track is not forced. */
70 void updateTransitionEndTrack(int newtrack);
71 void setForcedTrack(bool force, int track);
72 bool forcedTrack() const;
73 const ClipItem *referencedClip() const;
75 bool isAutomatic() const;
76 void setAutomatic(bool automatic);
78 int defaultZValue() const;
79 /** @brief When a transition is resized, check if keyframes are out of the transition and fix if necessary. */
80 bool updateKeyframes();
83 virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
87 bool m_forceTransitionTrack;
89 /** @brief True if the transition is attached to its clip. */
90 bool m_automaticTransition;
92 /** @brief Contains the transition parameters. */
93 QDomElement m_parameters;
95 /** @brief The clip to which the transition is attached. */
96 ClipItem *m_referenceClip;
98 /** @brief The second clip to which the transition is attached. */
99 ClipItem *m_secondClip;
100 int m_transitionTrack;
102 /** @brief Returns the display name for a transition type. */
103 QString getTransitionName(const TRANSITIONTYPE & type);
105 /** @brief Returns the transition type for a given name. */
106 TRANSITIONTYPE getTransitionForName(const QString & type);