* *
***************************************************************************/
+/**
+ * @class Transition
+ * @author Jean-Baptiste Mardelle
+ * @brief Describes a transition with a name, parameters, keyframes, etc.
+ */
+
#ifndef TRANSITION_H
#define TRANSITION_H
#include <QString>
#include <QGraphicsRectItem>
-#include <qpixmap.h>
-#include <qdom.h>
-#include <qmap.h>
+#include <QPixmap>
+#include <QDomElement>
+#include <QMap>
#include "gentime.h"
#include "definitions.h"
-
-
-/**Describes a Transition, with a name, parameters keyframes, etc.
- *@author Jean-Baptiste Mardelle
- */
+#include "abstractclipitem.h"
class ClipItem;
-class Transition {
+class Transition : public AbstractClipItem
+{
+ Q_OBJECT
public:
- Transition(ClipItem * clipa, const TRANSITIONTYPE & type, const GenTime &startTime, const GenTime &endTime, bool inverted = false);
- Transition(ClipItem * clip, QDomElement transitionElement, GenTime offset = GenTime());
- ~Transition();
+ Transition(const ItemInfo &info, int transitiontrack, double fps, QDomElement params = QDomElement(), bool automaticTransition = false);
+ virtual ~Transition();
+ virtual void paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option,
+ QWidget *widget);
+ virtual int type() const;
- /** Returns an XML representation of this transition. */
+ /** @brief Returns an XML representation of this transition. */
QDomElement toXML();
- GenTime transitionStartTime() const;
- GenTime transitionEndTime() const;
- /** Return the track number of transition in the playlist*/
- int transitionStartTrack() const;
+ /** @brief Returns the track number of the transition in the playlist. */
int transitionEndTrack() const;
- Transition *clone();
bool hasClip(const ClipItem * clip) const;
bool belongsToClip(const ClipItem * clip) const;
- void resizeTransitionEnd(GenTime time);
- void resizeTransitionStart(GenTime time);
- void moveTransition(GenTime time);
- bool invertTransition() const;
- TRANSITIONTYPE transitionType() const;
QString transitionTag() const;
- QString transitionName() const;
- void setTransitionType(TRANSITIONTYPE newType);
- const QMap < QString, QString > transitionParameters() const;
- void setTransitionParameters(const QMap < QString, QString > parameters);
- void setTransitionDirection(bool inv);
- int transitionTrack() const;
+ QStringList transitionInfo() const;
+ OPERATIONTYPE operationMode(QPointF pos);
+ static int itemHeight();
+ static int itemOffset();
+ //const QMap < QString, QString > transitionParameters() const;
+ void setTransitionParameters(const QDomElement params);
void setTransitionTrack(int track);
- QPixmap transitionPixmap() const;
- Transition *reparent(ClipItem * clip);
- bool isValid() const;
- GenTime transitionDuration() const;
- const ClipItem *referencedClip() const;
-private:
-
- GenTime m_transitionStart;
- GenTime m_transitionDuration;
- QMap < QString, QString > m_transitionParameters;
-
- /** The name of the transition used by mlt (composite, luma,...)*/
- TRANSITIONTYPE m_transitionType;
+ /** @brief Links the transition to another track.
+ *
+ * This happens only if the current track is not forced. */
+ void updateTransitionEndTrack(int newtrack);
+ void setForcedTrack(bool force, int track);
+ bool forcedTrack() const;
+ const ClipItem *referencedClip() const;
+ Transition *clone();
+ bool isAutomatic() const;
+ void setAutomatic(bool automatic);
+ bool hasGeometry();
+ int defaultZValue() const;
+ /** @brief When a transition is resized, check if keyframes are out of the transition and fix if necessary. */
+ bool updateKeyframes();
- /** The name of the transition to be displayed to user */
- QString m_transitionName;
+protected:
+ virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
- /** Should the transition be reversed */
- bool m_invertTransition;
+private:
+ QString m_name;
+ bool m_forceTransitionTrack;
- bool m_singleClip;
+ /** @brief True if the transition is attached to its clip. */
+ bool m_automaticTransition;
- /** The track to which the transition is attached*/
- int m_track;
+ /** @brief Contains the transition parameters. */
+ QDomElement m_parameters;
- /** The clip to which the transition is attached */
+ /** @brief The clip to which the transition is attached. */
ClipItem *m_referenceClip;
- /** The 2nd clip to which the transition is attached */
+ /** @brief The second clip to which the transition is attached. */
ClipItem *m_secondClip;
int m_transitionTrack;
- /** Return the display name for a transition type */
+ /** @brief Returns the display name for a transition type. */
QString getTransitionName(const TRANSITIONTYPE & type);
- /** Return the transition type for a given name */
+ /** @brief Returns the transition type for a given name. */
TRANSITIONTYPE getTransitionForName(const QString & type);
};