}
} else if (effectId == "fadeout") {
if (m_effectList.hasEffect(QString(), "fade_to_black") == -1) {
- if (e.attribute("name") == "out") fade -= e.attribute("value").toInt();
- else if (e.attribute("name") == "in") fade += e.attribute("value").toInt();
+ if (e.attribute("name") == "out") fade += e.attribute("value").toInt();
+ else if (e.attribute("name") == "in") fade -= e.attribute("value").toInt();
} else {
QDomElement fadeout = m_effectList.getEffectByTag(QString(), "fade_to_black");
- if (fadeout.attribute("name") == "out") fade -= fadeout.attribute("value").toInt();
- else if (fadeout.attribute("name") == "in") fade += fadeout.attribute("value").toInt();
+ if (fadeout.attribute("name") == "out") fade += fadeout.attribute("value").toInt();
+ else if (fadeout.attribute("name") == "in") fade -= fadeout.attribute("value").toInt();
}
} else if (effectId == "fade_to_black") {
if (m_effectList.hasEffect(QString(), "fadeout") == -1) {
- if (e.attribute("name") == "out") fade -= e.attribute("value").toInt();
- else if (e.attribute("name") == "in") fade += e.attribute("value").toInt();
+ if (e.attribute("name") == "out") fade += e.attribute("value").toInt();
+ else if (e.attribute("name") == "in") fade -= e.attribute("value").toInt();
} else {
QDomElement fadeout = m_effectList.getEffectByTag(QString(), "fadeout");
- if (fadeout.attribute("name") == "out") fade -= fadeout.attribute("value").toInt();
- else if (fadeout.attribute("name") == "in") fade += fadeout.attribute("value").toInt();
+ if (fadeout.attribute("name") == "out") fade += fadeout.attribute("value").toInt();
+ else if (fadeout.attribute("name") == "in") fade -= fadeout.attribute("value").toInt();
}
}
}
else {
#if KDE_IS_VERSION(4,5,0)
if (m_clip && m_clip->thumbProducer()) {
- QString path = m_clip->fileURL().path() + "_";
+ QString path = m_clip->fileURL().path() + '_';
QImage img;
QPen pen(Qt::white);
pen.setStyle(Qt::DotLine);
}
QRectF rect = sceneBoundingRect();
int addtransitionOffset = 10;
- // Don't allow add transition if track height is very small
- if (rect.height() < 30) addtransitionOffset = 0;
+ // Don't allow add transition if track height is very small. No transitions for audio only clips
+ if (rect.height() < 30 || isAudioOnly() || m_clipType == AUDIO) addtransitionOffset = 0;
if (qAbs((int)(pos.x() - (rect.x() + m_startFade))) < maximumOffset && qAbs((int)(pos.y() - rect.y())) < 6) {
return FADEIN;
QList <GenTime> ClipItem::snapMarkers() const
{
QList < GenTime > snaps;
- QList < GenTime > markers = baseClip()->snapMarkers();
+ if (!m_clip) return snaps;
+ QList < GenTime > markers = m_clip->snapMarkers();
GenTime pos;
for (int i = 0; i < markers.size(); i++) {
QList <CommentedTime> ClipItem::commentedSnapMarkers() const
{
QList < CommentedTime > snaps;
- QList < CommentedTime > markers = baseClip()->commentedSnapMarkers();
+ if (!m_clip) return snaps;
+ QList < CommentedTime > markers = m_clip->commentedSnapMarkers();
GenTime pos;
for (int i = 0; i < markers.size(); i++) {
int xpos = projectScene()->getSnapPointForPos((int) newPos.x(), KdenliveSettings::snaptopoints());
xpos = qMax(xpos, 0);
newPos.setX(xpos);
- int newTrack = newPos.y() / KdenliveSettings::trackheight();
+ // Warning: newPos gives a position relative to the click event, so hack to get absolute pos
+ int yOffset = property("y_absolute").toInt() + newPos.y();
+ int newTrack = yOffset / KdenliveSettings::trackheight();
newTrack = qMin(newTrack, projectScene()->tracksCount() - 1);
newTrack = qMax(newTrack, 0);
newPos.setY((int)(newTrack * KdenliveSettings::trackheight() + 1));
needInOutSync = true;
}
if (e.attribute("type") == "simplekeyframe") {
- QStringList values = e.attribute("keyframes").split(";", QString::SkipEmptyParts);
+ QStringList values = e.attribute("keyframes").split(';', QString::SkipEmptyParts);
double factor = locale.toDouble(e.attribute("factor", "1"));
double offset = e.attribute("offset", "0").toDouble();
if (factor != 1 || offset != 0) {
for (int j = 0; j < values.count(); j++) {
QString pos = values.at(j).section(':', 0, 0);
double val = (locale.toDouble(values.at(j).section(':', 1, 1)) - offset) / factor;
- values[j] = pos + "=" + locale.toString(val);
+ values[j] = pos + '=' + locale.toString(val);
}
}
parameters.addParam(e.attribute("name"), values.join(";"));
if (m_speed <= 0 && m_speed > -1)
m_speed = -1.0;
m_strobe = strobe;
- if (m_speed == 1.0) m_clipName = baseClip()->name();
- else m_clipName = baseClip()->name() + " - " + QString::number(speed * 100, 'f', 0) + '%';
+ if (m_speed == 1.0) m_clipName = m_clip->name();
+ else m_clipName = m_clip->name() + " - " + QString::number(speed * 100, 'f', 0) + '%';
m_info.cropStart = GenTime((int)(m_speedIndependantInfo.cropStart.frames(m_fps) / qAbs(m_speed) + 0.5), m_fps);
m_info.cropDuration = GenTime((int)(m_speedIndependantInfo.cropDuration.frames(m_fps) / qAbs(m_speed) + 0.5), m_fps);
//update();
newkfr.append(str);
} else if (!added) {
if (i == m_visibleParam)
- newkfr.append(QString::number(pos) + ":" + QString::number(val));
+ newkfr.append(QString::number(pos) + ':' + QString::number(val));
else
- newkfr.append(QString::number(pos) + ":" + locale.toString(newval));
+ newkfr.append(QString::number(pos) + ':' + locale.toString(newval));
if (kpos > pos) newkfr.append(str);
added = true;
} else newkfr.append(str);
}
if (!added) {
if (i == m_visibleParam)
- newkfr.append(QString::number(pos) + ":" + QString::number(val));
+ newkfr.append(QString::number(pos) + ':' + QString::number(val));
else
- newkfr.append(QString::number(pos) + ":" + e.attribute("default"));
+ newkfr.append(QString::number(pos) + ':' + e.attribute("default"));
}
e.setAttribute("keyframes", newkfr.join(";"));
}
newpos = qMax(newpos, start);
newpos = qMin(newpos, end);
if (i == m_visibleParam)
- newkfr.append(QString::number(newpos) + ":" + locale.toString(value));
+ newkfr.append(QString::number(newpos) + ':' + locale.toString(value));
else
- newkfr.append(QString::number(newpos) + ":" + str.section(':', 1, 1));
+ newkfr.append(QString::number(newpos) + ':' + str.section(':', 1, 1));
}
}
e.setAttribute("keyframes", newkfr.join(";"));
if (isAudioOnly())
return m_clip->audioProducer(track);
else if (isVideoOnly())
- return m_clip->videoProducer();
+ return m_clip->videoProducer(track);
else
return m_clip->getProducer(trackSpecific ? track : -1);
}
if (offset > 0) {
QStringList kfrs = data.split(';');
data.clear();
- foreach (QString keyframe, kfrs) {
+ foreach (const QString &keyframe, kfrs) {
if (keyframe.contains('=')) {
int pos = keyframe.section('=', 0, 0).toInt();
pos += offset;
- data.append(QString::number(pos) + "=" + keyframe.section('=', 1) + ";");
+ data.append(QString::number(pos) + '=' + keyframe.section('=', 1) + ";");
}
- else data.append(keyframe + ";");
+ else data.append(keyframe + ';');
}
}
Mlt::Geometry geometry(data.toUtf8().data(), oldInfo.cropDuration.frames(m_fps), width, height);