From: <tt...@us...> - 2011-04-23 21:14:13
|
Revision: 5550 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5550&view=rev Author: ttill Date: 2011-04-23 21:14:07 +0000 (Sat, 23 Apr 2011) Log Message: ----------- update keyframes when clip is resized using clip duration dialog Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2011-04-23 21:13:18 UTC (rev 5549) +++ trunk/kdenlive/src/customtrackview.cpp 2011-04-23 21:14:07 UTC (rev 5550) @@ -1323,26 +1323,37 @@ m_commandStack->push(command); } else { // move and resize clip + ClipItem *clip = static_cast<ClipItem *>(item); QUndoCommand *moveCommand = new QUndoCommand(); moveCommand->setText(i18n("Edit clip")); if (d.duration() < item->cropDuration() || d.cropStart() != clipInfo.cropStart) { // duration was reduced, so process it first clipInfo.endPos = clipInfo.startPos + d.duration(); clipInfo.cropStart = d.cropStart(); - new ResizeClipCommand(this, startInfo, clipInfo, true, false, moveCommand); + + resizeClip(startInfo, clipInfo); + new ResizeClipCommand(this, startInfo, clipInfo, false, true, moveCommand); + adjustEffects(clip, startInfo, moveCommand); + new ResizeClipCommand(this, startInfo, clipInfo, false, true, moveCommand); } + if (d.startPos() != clipInfo.startPos) { startInfo = clipInfo; clipInfo.startPos = d.startPos(); clipInfo.endPos = item->endPos() + (clipInfo.startPos - startInfo.startPos); new MoveClipCommand(this, startInfo, clipInfo, true, moveCommand); } + if (d.duration() > item->cropDuration()) { // duration was increased, so process it after move startInfo = clipInfo; clipInfo.endPos = clipInfo.startPos + d.duration(); clipInfo.cropStart = d.cropStart(); - new ResizeClipCommand(this, startInfo, clipInfo, true, false, moveCommand); + + resizeClip(startInfo, clipInfo); + new ResizeClipCommand(this, startInfo, clipInfo, false, true, moveCommand); + adjustEffects(clip, startInfo, moveCommand); + new ResizeClipCommand(this, startInfo, clipInfo, false, true, moveCommand); } updateTrackDuration(clipInfo.track, moveCommand); m_commandStack->push(moveCommand); @@ -4457,19 +4468,18 @@ ItemInfo clipinfo = item->info(); clipinfo.track = m_document->tracksCount() - clipinfo.track; bool success = m_document->renderer()->mltResizeClipStart(clipinfo, end.startPos - clipinfo.startPos); - if (success) { - kDebug() << "RESIZE CLP STRAT TO:" << end.startPos.frames(m_document->fps()) << ", OLD ST: " << start.startPos.frames(25); + if (success) item->resizeStart((int) end.startPos.frames(m_document->fps())); -// updatePositionEffects(item, clipinfo); - } else emit displayMessage(i18n("Error when resizing clip"), ErrorMessage); + else + emit displayMessage(i18n("Error when resizing clip"), ErrorMessage); } else { ItemInfo clipinfo = item->info(); clipinfo.track = m_document->tracksCount() - clipinfo.track; bool success = m_document->renderer()->mltResizeClipEnd(clipinfo, end.endPos - clipinfo.startPos); - if (success) { + if (success) item->resizeEnd((int) end.endPos.frames(m_document->fps())); -// updatePositionEffects(item, clipinfo); - } else emit displayMessage(i18n("Error when resizing clip"), ErrorMessage); + else + emit displayMessage(i18n("Error when resizing clip"), ErrorMessage); } if (!resizeClipStart && end.cropStart != start.cropStart) { kDebug() << "// RESIZE CROP, DIFF: " << (end.cropStart - start.cropStart).frames(25); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |