}
}
}
+
+ if (effect.attribute("tag") == "volume") {
+ if (effect.attribute("id") == "fadeout") {
+ int end = (duration() + cropStart()).frames(m_fps);
+ int start = end - EffectsList::parameter(effect, "out").toInt();
+ EffectsList::setParameter(effect, "in", QString::number(start));
+ EffectsList::setParameter(effect, "out", QString::number(end));
+ } else if (effect.attribute("id") == "fadein") {
+ int start = cropStart().frames(m_fps);
+ int end = start + EffectsList::parameter(effect, "out").toInt();
+ EffectsList::setParameter(effect, "in", QString::number(start));
+ EffectsList::setParameter(effect, "out", QString::number(end));
+ }
+ }
}
bool ClipItem::checkKeyFrames() {
void ClipItem::setFadeIn(int pos) {
+ if (pos == m_startFade) return;
int oldIn = m_startFade;
if (pos < 0) pos = 0;
if (pos > m_cropDuration.frames(m_fps)) pos = (int)(m_cropDuration.frames(m_fps) / 2);
}
void ClipItem::setFadeOut(int pos) {
+ if (pos == m_endFade) return;
int oldOut = m_endFade;
if (pos < 0) pos = 0;
if (pos > m_cropDuration.frames(m_fps)) pos = (int)(m_cropDuration.frames(m_fps) / 2);
m_endFade = pos;
QRectF rect = boundingRect();
- update(rect.x() + rect.width() - qMax(oldOut, pos), rect.y(), pos, rect.height());
+ update(rect.x() + rect.width() - qMax(oldOut, pos), rect.y(), qMax(oldOut, pos), rect.height());
}
if (ix == clip->selectedEffectIndex()) {
clip->setSelectedEffect(ix);
}
+ if (effect.attribute("tag") == "volume") {
+ // A fade effect was modified, update the clip
+ if (effect.attribute("id") == "fadein") {
+ int pos = effectParams.value("out").toInt();
+ clip->setFadeIn(pos);
+ }
+ if (effect.attribute("id") == "fadeout") {
+ int pos = clip->cropDuration().frames(m_document->fps()) - effectParams.value("in").toInt();
+ clip->setFadeOut(pos);
+ }
+
+ }
}
m_document->setModified(true);
}
slotDeleteEffect(item, oldeffect);
} else {
end += start;
- QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadein");
+ QDomElement effect = oldeffect.cloneNode().toElement();
EffectsList::setParameter(effect, "in", QString::number(start));
EffectsList::setParameter(effect, "out", QString::number(end));
slotUpdateClipEffect(item, oldeffect, effect, ix);
}
} else if (item->fadeIn() != 0) {
- QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadein");
- int start = item->cropStart().frames(m_document->fps());
- int end = item->fadeIn() + start;
- EffectsList::setParameter(effect, "in", QString::number(start));
- EffectsList::setParameter(effect, "out", QString::number(end));
+ QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadein").cloneNode().toElement();
+ EffectsList::setParameter(effect, "out", QString::number(item->fadeIn()));
slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track());
}
} else if (m_operationMode == FADEOUT) {
slotDeleteEffect(item, oldeffect);
} else {
start = end - start;
- QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadeout");
+ QDomElement effect = oldeffect.cloneNode().toElement();
EffectsList::setParameter(effect, "in", QString::number(start));
EffectsList::setParameter(effect, "out", QString::number(end));
slotUpdateClipEffect(item, oldeffect, effect, ix);
}
} else if (item->fadeOut() != 0) {
- QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadeout");
- int end = (item->duration() + item->cropStart()).frames(m_document->fps());
- int start = end - item->fadeOut();
- EffectsList::setParameter(effect, "in", QString::number(start));
- EffectsList::setParameter(effect, "out", QString::number(end));
+ QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadeout").cloneNode().toElement();
+ EffectsList::setParameter(effect, "out", QString::number(item->fadeOut()));
slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track());
}
} else if (m_operationMode == KEYFRAME) {
ClipItem *item = getClipItemAt((int) info.startPos.frames(m_document->fps()) + 1, info.track);
info.track = m_scene->m_tracksList.count() - item->track();
int endPos = m_document->renderer()->mltChangeClipSpeed(info, speed, oldspeed, baseclip->producer());
- kDebug() << "//CH CLIP SPEED: " << speed << "x" << oldspeed << ", END POS: " << endPos;
+ //kDebug() << "//CH CLIP SPEED: " << speed << "x" << oldspeed << ", END POS: " << endPos;
item->setSpeed(speed);
item->updateRectGeometry();
- kDebug() << "// SPD CHG: " << item->cropDuration().frames(m_document->fps()) << " - " << endPos;
if (item->cropDuration().frames(m_document->fps()) > endPos)
item->AbstractClipItem::resizeEnd(info.startPos.frames(m_document->fps()) + endPos, speed);
}
if (end != 0) {
// there is a fade in effect
QStringList clipeffects = item->effectNames();
- QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade in"));
+ int effectPos = item->hasEffect("volume", "fadein");
+ QDomElement oldeffect = item->effectAt(effectPos);
int start = item->cropStart().frames(m_document->fps());
end += start;
EffectsList::setParameter(oldeffect, "in", QString::number(start));
if (start != 0) {
// there is a fade in effect
QStringList clipeffects = item->effectNames();
- QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade out"));
+ int effectPos = item->hasEffect("volume", "fadeout");
+ QDomElement oldeffect = item->effectAt(effectPos);
int end = (item->duration() - item->cropStart()).frames(m_document->fps());
start = end - start;
EffectsList::setParameter(oldeffect, "in", QString::number(start));