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 QString transitionTag() const;
57 QStringList transitionInfo() const;
58 OPERATIONTYPE operationMode(QPointF pos);
59 static int itemHeight();
60 static int itemOffset();
61 //const QMap < QString, QString > transitionParameters() const;
62 void setTransitionParameters(const QDomElement params);
63 void setTransitionTrack(int track);
65 /** @brief Links the transition to another track.
67 * This happens only if the current track is not forced. */
68 void updateTransitionEndTrack(int newtrack);
69 void setForcedTrack(bool force, int track);
70 bool forcedTrack() const;
72 bool isAutomatic() const;
73 void setAutomatic(bool automatic);
75 int defaultZValue() const;
76 /** @brief When a transition is resized, check if keyframes are out of the transition and fix if necessary.
77 * @param oldEnd the previous transition end, so that when we expand the transition, if there is a keyframe at end we move it
79 bool updateKeyframes(int oldEnd);
82 virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
86 bool m_forceTransitionTrack;
88 /** @brief True if the transition is attached to its clip. */
89 bool m_automaticTransition;
91 /** @brief Contains the transition parameters. */
92 QDomElement m_parameters;
94 int m_transitionTrack;
96 /** @brief Returns the display name for a transition type. */
97 QString getTransitionName(const TRANSITIONTYPE & type);
99 /** @brief Returns the transition type for a given name. */
100 TRANSITIONTYPE getTransitionForName(const QString & type);