X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Feffectstackedit.cpp;h=bbb606ffde699c125a42a31b6c928a936f48c316;hb=85c527fabb60d9012b746752fca315ffb7a81a15;hp=e9ec1398cfb89f792b95b8a129da160f398a6d82;hpb=06e687552375cdded9eb6b20896e91e14a5e626f;p=kdenlive diff --git a/src/effectstackedit.cpp b/src/effectstackedit.cpp index e9ec1398..bbb606ff 100644 --- a/src/effectstackedit.cpp +++ b/src/effectstackedit.cpp @@ -33,6 +33,7 @@ #include "geometrywidget.h" #include "colortools.h" #include "doubleparameterwidget.h" +#include "cornerswidget.h" #include #include @@ -145,7 +146,7 @@ void EffectStackEdit::meetDependency(const QString& name, QString type, QString KisCurveWidget *curve = (KisCurveWidget*)m_valueItems[name]; if (curve) { int color = value.toInt(); - curve->setPixmap(QPixmap::fromImage(ColorTools::rgbCurvePlane(curve->size(), (ColorTools::ColorsRGB)color))); + curve->setPixmap(QPixmap::fromImage(ColorTools::rgbCurvePlane(curve->size(), (ColorTools::ColorsRGB)color, 0.8))); } } } @@ -284,10 +285,10 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int pos, int in, in connect(this, SIGNAL(syncEffectsPos(int)), geo, SLOT(slotSyncPosition(int))); } } else if (type == "keyframe" || type == "simplekeyframe") { - // keyframe editor widget + // keyframe editor widget kDebug() << "min: " << m_in << ", MAX: " << m_out; if (m_keyframeEditor == NULL) { - KeyframeEdit *geo = new KeyframeEdit(pa, m_in, m_in + m_out, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode, e.attribute("active_keyframe", "-1").toInt()); + KeyframeEdit *geo = new KeyframeEdit(pa, m_in, m_in + m_out, m_timecode, e.attribute("active_keyframe", "-1").toInt()); m_vbox->addWidget(geo); m_valueItems[paramName+"keyframe"] = geo; m_keyframeEditor = geo; @@ -312,9 +313,9 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int pos, int in, in pos = pos - m_in; } else if (d.attribute("id") == "fadeout" || d.attribute("id") == "fade_to_black") { // fadeout position starts from clip end - pos = m_out - (pos - m_in); + pos = m_out - pos; } - PositionEdit *posedit = new PositionEdit(paramName, pos, 1, m_out - m_in, m_timecode); + PositionEdit *posedit = new PositionEdit(paramName, pos, 0, m_out - m_in, m_timecode); m_vbox->addWidget(posedit); m_valueItems[paramName+"position"] = posedit; connect(posedit, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); @@ -350,6 +351,28 @@ void EffectStackEdit::transferParamDesc(const QDomElement d, int pos, int in, in QString depends = pa.attribute("depends"); if (!depends.isEmpty()) meetDependency(paramName, type, EffectsList::parameter(e, depends)); + } else if (type == "corners") { + CornersWidget *corners = new CornersWidget(m_monitor, pos, isEffect, pa.attribute("factor").toInt(), this); + connect(corners, SIGNAL(checkMonitorPosition(int)), this, SIGNAL(checkMonitorPosition(int))); + if (minFrame == maxFrame) + corners->setRange(m_in, m_out); + else + corners->setRange(minFrame, maxFrame); + + QString xName = pa.attribute("xpoints"); + QString yName = pa.attribute("ypoints"); + QPolygon points; + int x, y; + for (int j = 1; j <= 4; ++j) { + x = EffectsList::parameter(e, QString(xName).replace("%i", QString::number(j))).toInt(); + y = EffectsList::parameter(e, QString(yName).replace("%i", QString::number(j))).toInt(); + points << QPoint(x, y); + } + corners->setValue(points); + + m_vbox->addWidget(corners); + connect(corners, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters())); + m_valueItems[paramName] = corners; } else if (type == "wipe") { Wipeval *wpval = new Wipeval; wpval->setupUi(toFillin); @@ -580,8 +603,8 @@ void EffectStackEdit::collectAllParameters() pos = m_out; pedit->setPosition(pos); }*/ - EffectsList::setParameter(newparam, "in", QString::number(m_out + m_in - pos)); - EffectsList::setParameter(newparam, "out", QString::number(m_out + m_in)); + EffectsList::setParameter(newparam, "in", QString::number(m_out - pos)); + EffectsList::setParameter(newparam, "out", QString::number(m_out)); setValue.clear(); } } else if (type == "curve") { @@ -604,6 +627,17 @@ void EffectStackEdit::collectAllParameters() QString depends = pa.attributes().namedItem("depends").nodeValue(); if (!depends.isEmpty()) meetDependency(paramName, type, EffectsList::parameter(newparam, depends)); + } else if (type == "corners") { + CornersWidget *corners = ((CornersWidget*)m_valueItems.value(paramName)); + QString xName = pa.attributes().namedItem("xpoints").nodeValue(); + QString yName = pa.attributes().namedItem("ypoints").nodeValue(); + QPolygon points = corners->getValue(); + QPoint p; + for (int j = 1; j <= 4; ++j) { + p = points.at(j - 1); + EffectsList::setParameter(newparam, QString(xName).replace("%i", QString::number(j)), QString::number(p.x())); + EffectsList::setParameter(newparam, QString(yName).replace("%i", QString::number(j)), QString::number(p.y())); + } } else if (type == "wipe") { Wipeval *wp = (Wipeval*)m_valueItems.value(paramName); wipeInfo info;