#include "addtransitioncommand.h"
#include "customtrackview.h"
-AddTransitionCommand::AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QMap <QString, QString> desc, QDomElement params, bool doIt) : m_view(view), m_info(info), m_track(transitiontrack), m_desc(desc), m_params(params), m_doIt(doIt) {
+AddTransitionCommand::AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QDomElement params, bool doIt) : m_view(view), m_info(info), m_track(transitiontrack), m_params(params), m_doIt(doIt) {
if (m_doIt) setText(i18n("Add transition to clip"));
else setText(i18n("Delete transition from clip"));
}
// virtual
void AddTransitionCommand::undo() {
- if (m_doIt) m_view->deleteTransition(m_info, m_track, m_desc, m_params);
- else m_view->addTransition(m_info, m_track, m_desc, m_params);
+ if (m_doIt) m_view->deleteTransition(m_info, m_track, m_params);
+ else m_view->addTransition(m_info, m_track, m_params);
}
// virtual
void AddTransitionCommand::redo() {
- if (m_doIt) m_view->addTransition(m_info, m_track, m_desc, m_params);
- else m_view->deleteTransition(m_info, m_track, m_desc, m_params);
+ if (m_doIt) m_view->addTransition(m_info, m_track, m_params);
+ else m_view->deleteTransition(m_info, m_track, m_params);
m_doIt = true;
}
class AddTransitionCommand : public QUndoCommand {
public:
- AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QMap <QString, QString> desc, QDomElement params, bool doIt);
+ AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QDomElement params, bool doIt);
virtual void undo();
virtual void redo();
private:
CustomTrackView *m_view;
ItemInfo m_info;
- QMap <QString, QString> m_desc;
QDomElement m_params;
int m_track;
bool m_doIt;
info.endPos = info.startPos + GenTime(2.5);
info.track = m_dragItem->track();
int transitiontrack = getPreviousVideoTrack(info.track);
- slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack, QMap<QString, QString>());
+ slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
}
if (m_operationMode == TRANSITIONEND) {
ItemInfo info;
info.startPos = info.endPos - GenTime(2.5);
info.track = m_dragItem->track();
int transitiontrack = info.track - 1;
- slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack, QMap<QString, QString>());
+ slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
}
updateSnapPoints(m_dragItem);
collision = true;
m_commandStack->push(command);
}
-void CustomTrackView::slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement transition) {
- AddTransitionCommand* command = new AddTransitionCommand(this, transitionInfo, endTrack, desc, transition, true);
+void CustomTrackView::slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition) {
+ AddTransitionCommand* command = new AddTransitionCommand(this, transitionInfo, endTrack, transition, true);
m_commandStack->push(command);
m_document->setModified(true);
}
-void CustomTrackView::addTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params) {
- Transition *tr = new Transition(transitionInfo, endTrack, m_scale, m_document->fps(), desc, params);
+void CustomTrackView::addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params) {
+ Transition *tr = new Transition(transitionInfo, endTrack, m_scale, m_document->fps(), params);
scene()->addItem(tr);
//kDebug() << "---- ADDING transition " << e.attribute("tag") << ", on tracks " << m_tracksList.count() - e.attribute("transition_track").toInt() << " / " << getPreviousVideoTrack(e.attribute("transition_track").toInt());
- m_document->renderer()->mltAddTransition(tr->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, params);
+ m_document->renderer()->mltAddTransition(tr->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, tr->toXML());
m_document->setModified(true);
}
-void CustomTrackView::deleteTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params) {
+void CustomTrackView::deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params) {
Transition *item = getTransitionItemAt((int)transitionInfo.startPos.frames(m_document->fps()) + 1, transitionInfo.track);
- QMap < QString, QString> map;
- m_document->renderer()->mltDeleteTransition(item->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, params);
+ m_document->renderer()->mltDeleteTransition(item->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, item->toXML());
delete item;
m_document->setModified(true);
}
void CustomTrackView::slotTransitionUpdated(QDomElement old, QDomElement newEffect) {
- /*EditTransitionCommand *command = new EditTransitionCommand(this, newEffect.attribute("a_track").toInt(), GenTime(newEffect.attribute("start").toInt(), m_document->renderer()->fps()) , old, newEffect , true);
+ EditTransitionCommand *command = new EditTransitionCommand(this, newEffect.attribute("a_track").toInt(), GenTime(newEffect.attribute("start").toInt(), m_document->fps()) , old, newEffect , true);
m_commandStack->push(command);
- m_document->setModified(true);*/
+ m_document->setModified(true);
}
void CustomTrackView::updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition) {
-
- m_document->renderer()->mltUpdateTransition(oldTransition.attribute("tag"), transition.attribute("tag"), m_tracksList.count() - 1 - transition.attribute("transition_track").toInt(), m_tracksList.count() - transition.attribute("transition_track").toInt() ,
+ m_document->renderer()->mltUpdateTransition(oldTransition.attribute("tag"), transition.attribute("tag"), transition.attribute("transitionb_track").toInt(), m_tracksList.count() - transition.attribute("transition_atrack").toInt() ,
GenTime(transition.attribute("start").toInt(), m_document->renderer()->fps()),
GenTime(transition.attribute("end").toInt(), m_document->renderer()->fps()),
transition);
void addEffect(int track, GenTime pos, QDomElement effect);
void deleteEffect(int track, GenTime pos, QDomElement effect);
void updateEffect(int track, GenTime pos, QDomElement effect);
- void addTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params);
- void deleteTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params);
+ void addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
+ void deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
void updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition);
void moveTransition(GenTime oldpos, GenTime newpos);
void activateMonitor();
void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect);
void slotRefreshEffects(ClipItem *clip);
void setDuration(int duration);
- void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack,
- QMap <QString, QString> desc, QDomElement transition = QDomElement());
+ void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition = QDomElement());
void slotTransitionUpdated(QDomElement, QDomElement);
void slotSwitchTrackAudio(int ix);
void slotSwitchTrackVideo(int ix);
#include "kdenlivesettings.h"
-Transition::Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QMap <QString, QString> desc, QDomElement params) : AbstractClipItem(info, QRectF(info.startPos.frames(fps) *scale , info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 2, (info.endPos - info.startPos).frames(fps) * scale , KdenliveSettings::trackheight() - 1)) {
+Transition::Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QDomElement params) : AbstractClipItem(info, QRectF(info.startPos.frames(fps) *scale , info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 2, (info.endPos - info.startPos).frames(fps) * scale , KdenliveSettings::trackheight() - 1)) {
m_singleClip = true;
m_transitionTrack = transitiontrack;
m_secondClip = NULL;
m_fps = fps;
m_cropDuration = m_maxDuration;
//m_referenceClip = clipa;
- if (desc.isEmpty()) {
- m_description.insert("tag", "luma");
- m_description.insert("name", "Luma");
- m_description.insert("description", "Luma Transitions");
- QDomDocument doc;
- m_parameters = doc.createElement("ktransition");
+ if (params.isNull()) {
+ QDomDocument doc;
+ doc.setContent(QString("<ktransition tag=\"luma\"><name>Luma</name><description>Luma Transitions</description><properties id=\"luma\" tag=\"luma\" /><parameter type=\"bool\" name=\"reverse\" max=\"1\" min=\"0\" default=\"1\" factor=\"1\"><name>Reverse</name></parameter></ktransition>"));
+ m_parameters = doc.documentElement();
} else {
- m_description = desc;
m_parameters = params;
}
+ m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
m_secondClip = 0;
setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
setZValue(2);
}
QString Transition::transitionName() const {
- return m_description.value("name");
+ return m_name;
}
QString Transition::transitionTag() const {
- return m_description.value("tag");
+ return m_parameters.attribute("tag");
}
void Transition::setTransitionParameters(const QDomElement params) {
m_parameters = params;
+ m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
}
QPixmap Transition::transitionPixmap() const {
KIcon icon;
- if (transitionTag() == "luma") {
+ QString tag = transitionTag();
+ if ( tag == "luma") {
if (invertedTransition()) icon = KIcon("kdenlive_trans_up");
else icon = KIcon("kdenlive_trans_down");
- } else if (transitionTag() == "composite") {
+ } else if ( tag == "composite") {
icon = KIcon("kdenlive_trans_wiper");
- } else if (transitionTag() == "lumafile") {
+ } else if ( tag == "lumafile") {
icon = KIcon("kdenlive_trans_luma");
} else icon = KIcon("kdenlive_trans_pip");
return icon.pixmap(QSize(15, 15));
return m_referenceClip;
}
-/*
QDomElement Transition::toXML() {
- m_transitionParameters.setAttribute("type", transitionTag);
+ m_parameters.setAttribute("type", transitionTag());
//m_transitionParameters.setAttribute("inverted", invertTransition());
- m_transitionParameters.setAttribute("transition_track", m_transitionTrack);
- m_transitionParameters.setAttribute("start", transitionStartTime().frames(m_referenceClip->fps()));
- m_transitionParameters.setAttribute("end", transitionEndTime().frames(m_referenceClip->fps()));
+ m_parameters.setAttribute("transition_atrack", track());
+ m_parameters.setAttribute("transition_btrack", m_transitionTrack);
+ m_parameters.setAttribute("start", startPos().frames(m_fps));
+ m_parameters.setAttribute("end", endPos().frames(m_fps));
if (m_secondClip) {
- m_transitionParameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
- m_transitionParameters.setAttribute("clipb_track", transitionEndTrack());
+ m_parameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
+ m_parameters.setAttribute("clipb_track", transitionEndTrack());
}
- return m_transitionParameters;
-}*/
+ return m_parameters;
+}
Q_OBJECT
public:
- Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QMap <QString, QString> desc, QDomElement params = QDomElement());
+ Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QDomElement params = QDomElement());
virtual ~Transition();
virtual void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget);
virtual int type() const;
/** Returns an XML representation of this transition. */
- //QDomElement toXML();
+ QDomElement toXML();
/** Return the track number of transition in the playlist*/
int transitionEndTrack() const;
private:
bool m_singleClip;
- /** contains the transition description (name, tag, description) */
- QMap <QString, QString> m_description;
+ QString m_name;
/** contains the transition parameters */
QDomElement m_parameters;
/** The clip to which the transition is attached */
void TransitionSettings::slotTransitionChanged() {
- /*
+
QDomElement e = m_usedTransition->toXML();
//set old values from e in <ktransition> to desc (like reverse and so )
}
emit transitionUpdated(e, m_usedTransition->toXML());
emit transferParamDesc(desc, 0, 0);
- */
}
void TransitionSettings::slotTransitionItemSelected(Transition* t) {