X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftransition.cpp;h=103ea51639aad6d0b94526cf7a330651534cf19b;hb=3f928c7073780439f63f1fb5378ae144c84e735b;hp=b88a494fd07326b7d88c60a0337da9a0a4afa1d6;hpb=0884bd8fe5e1fc3b93872cafea5f5a468dccf1c6;p=kdenlive diff --git a/src/transition.cpp b/src/transition.cpp index b88a494f..103ea516 100644 --- a/src/transition.cpp +++ b/src/transition.cpp @@ -31,12 +31,15 @@ #include -Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) : AbstractClipItem(info, QRectF(), fps), m_automaticTransition(automaticTransition), m_forceTransitionTrack(false) { +Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDomElement params, bool automaticTransition) : + AbstractClipItem(info, QRectF(), fps), + m_forceTransitionTrack(false), + m_automaticTransition(automaticTransition) +{ setZValue(2); setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() / 3 * 2 - 1)); setPos(info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 3 * 2)); - m_singleClip = true; m_transitionTrack = transitiontrack; m_secondClip = NULL; m_cropStart = GenTime(); @@ -61,28 +64,34 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double fps, QDo //m_referenceClip->addTransition(this); } -Transition::~Transition() { +Transition::~Transition() +{ } -Transition *Transition::clone() { +Transition *Transition::clone() +{ QDomElement xml = toXML().cloneNode().toElement(); Transition *tr = new Transition(info(), transitionEndTrack(), m_fps, xml); return tr; } -QString Transition::transitionName() const { +QString Transition::transitionName() const +{ return m_name; } -QString Transition::transitionTag() const { +QString Transition::transitionTag() const +{ return m_parameters.attribute("tag"); } -bool Transition::isAutomatic() const { +bool Transition::isAutomatic() const +{ return m_automaticTransition; } -void Transition::setAutomatic(bool automatic) { +void Transition::setAutomatic(bool automatic) +{ m_automaticTransition = automatic; if (automatic) { m_parameters.setAttribute("automatic", 1); @@ -94,7 +103,8 @@ void Transition::setAutomatic(bool automatic) { update(); } -void Transition::setTransitionParameters(const QDomElement params) { +void Transition::setTransitionParameters(const QDomElement params) +{ m_parameters = params; if (m_parameters.attribute("force_track") == "1") setForcedTrack(true, m_parameters.attribute("transition_btrack").toInt()); else if (m_parameters.attribute("force_track") == "0") setForcedTrack(false, m_parameters.attribute("transition_btrack").toInt()); @@ -103,11 +113,13 @@ void Transition::setTransitionParameters(const QDomElement params) { } -bool Transition::invertedTransition() const { +bool Transition::invertedTransition() const +{ return false; //m_parameters.attribute("reverse").toInt(); } -QPixmap Transition::transitionPixmap() const { +QPixmap Transition::transitionPixmap() const +{ KIcon icon; QString tag = transitionTag(); if (tag == "luma") { @@ -122,30 +134,36 @@ QPixmap Transition::transitionPixmap() const { } -void Transition::setTransitionDirection(bool inv) { +void Transition::setTransitionDirection(bool /*inv*/) +{ //m_parameters.setAttribute("reverse", inv); } -int Transition::transitionEndTrack() const { +int Transition::transitionEndTrack() const +{ return m_transitionTrack; } -void Transition::updateTransitionEndTrack(int newtrack) { +void Transition::updateTransitionEndTrack(int newtrack) +{ if (!m_forceTransitionTrack) m_transitionTrack = newtrack; } -void Transition::setForcedTrack(bool force, int track) { +void Transition::setForcedTrack(bool force, int track) +{ m_forceTransitionTrack = force; m_transitionTrack = track; } -bool Transition::forcedTrack() const { +bool Transition::forcedTrack() const +{ return m_forceTransitionTrack; } void Transition::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, - QWidget *widget) { + QWidget */*widget*/) +{ const double scale = option->matrix.m11(); QRectF exposed = option->exposedRect; painter->setClipRect(exposed); @@ -190,12 +208,14 @@ void Transition::paint(QPainter *painter, painter->drawRect(br); } -int Transition::type() const { +int Transition::type() const +{ return TRANSITIONWIDGET; } //virtual -QVariant Transition::itemChange(GraphicsItemChange change, const QVariant &value) { +QVariant Transition::itemChange(GraphicsItemChange change, const QVariant &value) +{ if (change == ItemPositionChange && scene()) { // calculate new position. QPointF newPos = value.toPointF(); @@ -244,7 +264,8 @@ QVariant Transition::itemChange(GraphicsItemChange change, const QVariant &value } -OPERATIONTYPE Transition::operationMode(QPointF pos) { +OPERATIONTYPE Transition::operationMode(QPointF pos) +{ if (isItemLocked()) return NONE; const double scale = projectScene()->scale(); @@ -256,35 +277,40 @@ OPERATIONTYPE Transition::operationMode(QPointF pos) { return MOVE; } -bool Transition::hasClip(const ClipItem * clip) const { +bool Transition::hasClip(const ClipItem * clip) const +{ if (clip == m_secondClip) return true; return false; } -bool Transition::belongsToClip(const ClipItem * clip) const { +bool Transition::belongsToClip(const ClipItem * clip) const +{ if (clip == m_referenceClip) return true; return false; } /* Transition *Transition::clone() { - return new Transition::Transition(rect(), m_referenceClip, this->toXML() , m_fps); + return new Transition::Transition(rect(), m_referenceClip, toXML() , m_fps); }*/ /* Transition *Transition::reparent(ClipItem * clip) { - return new Transition::Transition(rect(), clip, this->toXML(), m_fps, m_referenceClip->startPos()); + return new Transition::Transition(rect(), clip, toXML(), m_fps, m_referenceClip->startPos()); }*/ -bool Transition::isValid() const { +bool Transition::isValid() const +{ return true; //(m_transitionDuration != GenTime()); } -const ClipItem *Transition::referencedClip() const { +const ClipItem *Transition::referencedClip() const +{ return m_referenceClip; } -QDomElement Transition::toXML() { +QDomElement Transition::toXML() +{ m_parameters.setAttribute("type", transitionTag()); //m_transitionParameters.setAttribute("inverted", invertTransition()); m_parameters.setAttribute("transition_atrack", track()); @@ -301,3 +327,13 @@ QDomElement Transition::toXML() { return m_parameters; } +bool Transition::hasGeometry() +{ + QDomNodeList namenode = m_parameters.elementsByTagName("parameter"); + for (int i = 0;i < namenode.count() ;i++) { + QDomElement pa = namenode.item(i).toElement(); + if (pa.attribute("type") == "geometry") return true; + } + return false; +} +