From: <ble...@us...> - 2008-03-24 18:28:02
|
Revision: 2117 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2117&view=rev Author: blendamedt Date: 2008-03-24 11:28:09 -0700 (Mon, 24 Mar 2008) Log Message: ----------- transitions movable Modified Paths: -------------- branches/KDE4/src/CMakeLists.txt branches/KDE4/src/customtrackview.cpp branches/KDE4/src/customtrackview.h branches/KDE4/src/effectstackedit.cpp branches/KDE4/src/renderer.cpp Added Paths: ----------- branches/KDE4/src/movetransitioncommand.cpp branches/KDE4/src/movetransitioncommand.h Modified: branches/KDE4/src/CMakeLists.txt =================================================================== --- branches/KDE4/src/CMakeLists.txt 2008-03-24 13:34:59 UTC (rev 2116) +++ branches/KDE4/src/CMakeLists.txt 2008-03-24 18:28:09 UTC (rev 2117) @@ -102,6 +102,7 @@ addfoldercommand.cpp editfoldercommand.cpp clipproperties.cpp + movetransitioncommand.cpp ) kde4_add_kcfg_files(kdenlive_SRCS GENERATE_MOC kdenlivesettings.kcfgc ) Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-24 13:34:59 UTC (rev 2116) +++ branches/KDE4/src/customtrackview.cpp 2008-03-24 18:28:09 UTC (rev 2117) @@ -590,6 +590,10 @@ m_document->setModified(true); } +void CustomTrackView::moveTransition(GenTime oldpos, GenTime newpos) { + kDebug() << "move"; +} + void CustomTrackView::addItem(DocClipBase *clip, QPoint pos) { int in = 0; GenTime out = clip->duration(); @@ -735,6 +739,17 @@ MoveClipCommand *command = new MoveClipCommand(this, m_startPos, QPointF(m_dragItem->startPos().frames(m_document->fps()), m_dragItem->track()), false); m_commandStack->push(command); if (m_dragItem->type() == AVWIDGET) m_document->renderer()->mltMoveClip((int)(m_tracksList.count() - m_startPos.y()), (int)(m_tracksList.count() - m_dragItem->track()), (int) m_startPos.x(), (int)(m_dragItem->startPos().frames(m_document->fps()))); + if (m_dragItem->type() == TRANSITIONWIDGET) { + Transition* transition = (Transition*)m_dragItem; + GenTime oldin = transition->transitionStartTime(); + GenTime oldout = transition->transitionEndTime(); + GenTime newin = m_dragItem->startPos(); + GenTime newout = newin + (oldout - oldin); + m_document->renderer()->mltMoveTransition(transition->transitionName(), + (int)(m_tracksList.count() - m_dragItem->track()), 0, + oldin, oldout, newin, newout); + } + } else if (m_operationMode == RESIZESTART) { // resize start ResizeClipCommand *command = new ResizeClipCommand(this, m_startPos, QPointF(m_dragItem->startPos().frames(m_document->fps()), m_dragItem->track()), true, false); @@ -794,10 +809,10 @@ QList<QGraphicsItem *> list = scene()->items(QPointF(pos * m_scale, track * m_tracksHeight + m_tracksHeight / 2)); ClipItem *clip = NULL; for (int i = 0; i < list.size(); ++i) { - if (list.at(i)->type() == AVWIDGET) { - clip = static_cast <ClipItem *> (list.at(i)); - break; - } + if (list.at(i)->type() == AVWIDGET) { + clip = static_cast <ClipItem *>(list.at(i)); + break; + } } return clip; } @@ -806,10 +821,10 @@ QList<QGraphicsItem *> list = scene()->items(QPointF(pos.frames(m_document->fps()) * m_scale, track * m_tracksHeight + m_tracksHeight / 2)); ClipItem *clip = NULL; for (int i = 0; i < list.size(); ++i) { - if (list.at(i)->type() == AVWIDGET) { - clip = static_cast <ClipItem *> (list.at(i)); - break; - } + if (list.at(i)->type() == AVWIDGET) { + clip = static_cast <ClipItem *>(list.at(i)); + break; + } } return clip; } @@ -863,7 +878,7 @@ QList<QGraphicsItem *> itemList = items(); for (int i = 0; i < itemList.count(); i++) { if (itemList.at(i)->type() == AVWIDGET && itemList.at(i) != selected) { - ClipItem *item = static_cast <ClipItem *> (itemList.at(i)); + ClipItem *item = static_cast <ClipItem *>(itemList.at(i)); GenTime start = item->startPos(); GenTime end = item->endPos(); m_snapPoints.append(start); @@ -872,18 +887,17 @@ if (start > offset) m_snapPoints.append(start - offset); if (end > offset) m_snapPoints.append(end - offset); } - } - else if (itemList.at(i)->type() == TRANSITIONWIDGET) { - Transition *transition = static_cast <Transition*> (itemList.at(i)); - GenTime start = transition->transitionStartTime(); + } else if (itemList.at(i)->type() == TRANSITIONWIDGET) { + Transition *transition = static_cast <Transition*>(itemList.at(i)); + GenTime start = transition->transitionStartTime(); GenTime end = transition->transitionEndTime(); m_snapPoints.append(start); m_snapPoints.append(end); if (offset != GenTime()) { if (start > offset) m_snapPoints.append(start - offset); if (end > offset) m_snapPoints.append(end - offset); - } - } + } + } } qSort(m_snapPoints); //for (int i = 0; i < m_snapPoints.size(); ++i) Modified: branches/KDE4/src/customtrackview.h =================================================================== --- branches/KDE4/src/customtrackview.h 2008-03-24 13:34:59 UTC (rev 2116) +++ branches/KDE4/src/customtrackview.h 2008-03-24 18:28:09 UTC (rev 2117) @@ -59,6 +59,7 @@ void addTransition(int track, GenTime pos, QDomElement transition); void deleteTransition(int track, GenTime pos, QDomElement transition); void updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition); + void moveTransition(GenTime oldpos,GenTime newpos); void activateMonitor(); int duration() const; void deleteSelectedClips(); Modified: branches/KDE4/src/effectstackedit.cpp =================================================================== --- branches/KDE4/src/effectstackedit.cpp 2008-03-24 13:34:59 UTC (rev 2116) +++ branches/KDE4/src/effectstackedit.cpp 2008-03-24 18:28:09 UTC (rev 2117) @@ -98,7 +98,7 @@ lsval->list->setCurrentIndex(listitems.indexOf(value)); for (int i = 0;i < lsval->list->count();i++) { QString entry = lsval->list->itemText(i); - if (!entry.isEmpty() && (entry.endsWith(".png") || entry.endsWith(".pnm"))) { + if (!entry.isEmpty() && (entry.endsWith(".png") || entry.endsWith(".pgm"))) { if (!iconCache.contains(entry)) { QPixmap pix(entry); iconCache[entry] = pix.scaled(30, 30); Added: branches/KDE4/src/movetransitioncommand.cpp =================================================================== --- branches/KDE4/src/movetransitioncommand.cpp (rev 0) +++ branches/KDE4/src/movetransitioncommand.cpp 2008-03-24 18:28:09 UTC (rev 2117) @@ -0,0 +1,40 @@ +/*************************************************************************** + movetransitioncommand.h - description + ------------------- + begin : Mar 15 2008 + copyright : (C) 2008 by Marco Gittler + email : g....@fr... + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include <KLocale> + +#include "movetransitioncommand.h" +#include "customtrackview.h" +MoveTransitionCommand::MoveTransitionCommand(CustomTrackView *view, const QPointF startPos, const QPointF endPos, int startTrack, int endTrack, bool doIt) + : m_view(view), m_startPos(startPos), m_endPos(endPos), m_doIt(doIt) { + setText(i18n("Move transition")); +} + + +// virtual +void MoveTransitionCommand::undo() { +// kDebug()<<"---- undoing action"; + m_doIt = true; + //if (m_doIt) m_view->moveTransition(m_endPos, m_startPos); +} +// virtual +void MoveTransitionCommand::redo() { + kDebug() << "---- redoing action"; + //if (m_doIt) m_view->moveTransition(m_startPos, m_endPos); + m_doIt = true; +} + +#include "moveclipcommand.moc" Added: branches/KDE4/src/movetransitioncommand.h =================================================================== --- branches/KDE4/src/movetransitioncommand.h (rev 0) +++ branches/KDE4/src/movetransitioncommand.h 2008-03-24 18:28:09 UTC (rev 2117) @@ -0,0 +1,45 @@ +/*************************************************************************** + movetransitioncommand.h - description + ------------------- + begin : Mar 15 2008 + copyright : (C) 2008 by Marco Gittler + email : g....@fr... + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef MOVETRANSITIONCOMMAND_H +#define MOVETRANSITIONCOMMAND_H + +#include <QUndoCommand> +#include <QGraphicsView> +#include <QPointF> + +#include <KDebug> + +class CustomTrackView; + +class MoveTransitionCommand : public QUndoCommand { +public: + MoveTransitionCommand(CustomTrackView *view, const QPointF startPos, const QPointF endPos, bool doIt); + virtual void undo(); + virtual void redo(); + +private: + CustomTrackView *m_view; + QPointF m_startPos; + QPointF m_endPos; + bool m_doIt; + int m_startTrack; + int m_endTrack; +}; + +#endif + Modified: branches/KDE4/src/renderer.cpp =================================================================== --- branches/KDE4/src/renderer.cpp 2008-03-24 13:34:59 UTC (rev 2116) +++ branches/KDE4/src/renderer.cpp 2008-03-24 18:28:09 UTC (rev 2117) @@ -1352,39 +1352,44 @@ void Render::mltMoveTransition(QString type, int startTrack, int trackOffset, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut) { m_isBlocked = true; m_mltConsumer->set("refresh", 0); - mlt_service serv = m_mltProducer->parent().get_service(); - mlt_service nextservice = mlt_service_get_producer(serv); - mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); - QString mlt_type = mlt_properties_get(properties, "mlt_type"); - QString resource = mlt_properties_get(properties, "mlt_service"); - int old_pos = (int)(oldIn.frames(m_fps) + oldOut.frames(m_fps)) / 2; + Mlt::Tractor *tractor = getTractor(); + if (tractor) { + Mlt::Tractor newTractor; + mlt_service service = tractor->get_service(); + mlt_service nextservice = mlt_service_get_producer(service); + mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice); + QString mlt_type = mlt_properties_get(properties, "mlt_type"); + QString resource = mlt_properties_get(properties, "mlt_service"); + int old_pos = (int)(oldIn.frames(m_fps) + oldOut.frames(m_fps)) / 2; - int new_in = (int)newIn.frames(m_fps); - int new_out = (int)newOut.frames(m_fps) - 1; - while (mlt_type == "transition") { - mlt_transition tr = (mlt_transition) nextservice; - int currentTrack = mlt_transition_get_b_track(tr); - int currentIn = (int) mlt_transition_get_in(tr); - int currentOut = (int) mlt_transition_get_out(tr); - kDebug() << "// FOUND EXISTING TRANS, IN: " << currentIn << ", OUT: " << currentOut << ", TRACK: " << currentTrack; - //kDebug()<<"// LOOKING FOR IN: "<<old_in<<", OUT: "<<old_out; - kDebug() << "// OLD IN: " << oldIn.frames(m_fps) << " // OLD OUT: " << oldOut.frames(m_fps) << ", TRACK: " << startTrack << ", MID POS: " << old_pos; - if (resource == type && startTrack == currentTrack && currentIn <= old_pos && currentOut >= old_pos) { - mlt_transition_set_in_and_out(tr, new_in, new_out); - if (trackOffset != 0) { - mlt_properties properties = MLT_TRANSITION_PROPERTIES(tr); - mlt_properties_set_int(properties, "a_track", mlt_transition_get_a_track(tr) + trackOffset); - mlt_properties_set_int(properties, "b_track", mlt_transition_get_b_track(tr) + trackOffset); + int new_in = (int)newIn.frames(m_fps); + int new_out = (int)newOut.frames(m_fps) - 1; + while (mlt_type == "transition") { + mlt_transition tr = (mlt_transition) nextservice; + int currentTrack = mlt_transition_get_b_track(tr); + int currentIn = (int) mlt_transition_get_in(tr); + int currentOut = (int) mlt_transition_get_out(tr); + kDebug() << "// FOUND EXISTING TRANS, IN: " << type << resource << currentIn << ", OUT: " << currentOut << ", TRACK: " << currentTrack; + //kDebug()<<"// LOOKING FOR IN: "<<old_in<<", OUT: "<<old_out; + kDebug() << "// OLD IN: " << oldIn.frames(m_fps) << " // OLD OUT: " << oldOut.frames(m_fps) << ", TRACK: " << startTrack << ", MID POS: " << old_pos; + if (resource == type && startTrack == currentTrack && currentIn <= old_pos && currentOut >= old_pos) { + mlt_transition_set_in_and_out(tr, new_in, new_out); + if (trackOffset != 0) { + mlt_properties properties = MLT_TRANSITION_PROPERTIES(tr); + mlt_properties_set_int(properties, "a_track", mlt_transition_get_a_track(tr) + trackOffset); + mlt_properties_set_int(properties, "b_track", mlt_transition_get_b_track(tr) + trackOffset); + kDebug() << "set new start & end :" << new_in << new_out; + } + break; } - break; + nextservice = mlt_service_producer(nextservice); + properties = MLT_SERVICE_PROPERTIES(nextservice); + mlt_type = mlt_properties_get(properties, "mlt_type"); + resource = mlt_properties_get(properties, "mlt_service"); } - nextservice = mlt_service_producer(nextservice); - properties = MLT_SERVICE_PROPERTIES(nextservice); - mlt_type = mlt_properties_get(properties, "mlt_type"); - resource = mlt_properties_get(properties, "mlt_service"); + m_isBlocked = false; } - m_isBlocked = false; } void Render::mltUpdateTransition(QString oldTag, QString tag, int a_track, int b_track, GenTime in, GenTime out, QDomElement xml) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |