]> git.sesse.net Git - kdenlive/blobdiff - src/effectstackedit.cpp
Krazy fixes: cleanup all headers
[kdenlive] / src / effectstackedit.cpp
index b5e5e214eee0050b0c7d33229ee8ed10baca2999..2adf966a3b1835037ab59946c965243b4fbf9ad3 100644 (file)
  *                                                                         *
  ***************************************************************************/
 
-#include <QVBoxLayout>
-#include <QSlider>
-#include <QLabel>
-#include <QPushButton>
-#include <QCheckBox>
-#include <QScrollArea>
-
-#include <KDebug>
-#include <KLocale>
-
+#include "effectstackedit.h"
 #include "ui_constval_ui.h"
 #include "ui_listval_ui.h"
 #include "ui_boolval_ui.h"
 #include "ui_positionval_ui.h"
 #include "ui_wipeval_ui.h"
 #include "complexparameter.h"
-#include "effectstackedit.h"
 #include "geometryval.h"
-
 #include "kdenlivesettings.h"
 
+#include <KDebug>
+#include <KLocale>
+
+#include <QVBoxLayout>
+#include <QSlider>
+#include <QLabel>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QScrollArea>
+
 QMap<QString, QImage> EffectStackEdit::iconCache;
 
 EffectStackEdit::EffectStackEdit(QWidget *parent): QWidget(parent), m_in(0), m_out(0) {
@@ -71,6 +70,10 @@ void EffectStackEdit::updateProjectFormat(MltVideoProfile profile, Timecode t) {
     m_timecode = t;
 }
 
+void EffectStackEdit::updateParameter(const QString &name, const QString &value) {
+    params.setAttribute(name, value);
+}
+
 void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
     kDebug() << "in";
     params = d;
@@ -81,7 +84,7 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
 
     QDomDocument doc;
     doc.appendChild(doc.importNode(params, true));
-    kDebug() << "IMPORTED TRANS: " << doc.toString();
+    //kDebug() << "IMPORTED TRANS: " << doc.toString();
     QDomNodeList namenode = params.elementsByTagName("parameter");
     QDomElement e = params.toElement();
     const int minFrame = e.attribute("start").toInt();
@@ -116,8 +119,8 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
         } else if (type == "list") {
             Ui::Listval_UI *lsval = new Ui::Listval_UI;
             lsval->setupUi(toFillin);
-            QStringList listitems = pa.attribute("paramlist").split(",");
-            QStringList listitemsdisplay = pa.attribute("paramlistdisplay").split(",");
+            QStringList listitems = pa.attribute("paramlist").split(',');
+            QStringList listitemsdisplay = pa.attribute("paramlistdisplay").split(',');
             if (listitemsdisplay.count() != listitems.count()) listitemsdisplay = listitems;
             //lsval->list->addItems(listitems);
             for (int i = 0;i < listitems.count();i++) {
@@ -149,10 +152,10 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
             valueItems[paramName] = bval;
             uiItems.append(bval);
         } else if (type == "complex") {
-            /*QStringList names=nodeAtts.namedItem("name").nodeValue().split(";");
-            QStringList max=nodeAtts.namedItem("max").nodeValue().split(";");
-            QStringList min=nodeAtts.namedItem("min").nodeValue().split(";");
-            QStringList val=value.split(";");
+            /*QStringList names=nodeAtts.namedItem("name").nodeValue().split(';');
+            QStringList max=nodeAtts.namedItem("max").nodeValue().split(';');
+            QStringList min=nodeAtts.namedItem("min").nodeValue().split(';');
+            QStringList val=value.split(';');
             kDebug() << "in complex"<<names.size() << " " << max.size() << " " << min.size() << " " << val.size()  ;
             if ( (names.size() == max.size() ) &&
                  (names.size()== min.size()) &&
@@ -190,7 +193,14 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int in, int out) {
         } else if (type == "position") {
             Ui::Positionval_UI *pval = new Ui::Positionval_UI;
             pval->setupUi(toFillin);
-            pval->krestrictedline->setText(m_timecode.getTimecodeFromFrames(value.toInt()));
+            int pos = value.toInt();
+            if (d.attribute("id") == "fadein" || d.attribute("id") == "fade_from_black") {
+                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);
+            }
+            pval->krestrictedline->setText(m_timecode.getTimecodeFromFrames(pos));
             connect(pval->krestrictedline, SIGNAL(editingFinished()), this, SLOT(collectAllParameters()));
             pval->label->setText(paramName);
             valueItems[paramName + "position"] = pval;
@@ -270,8 +280,8 @@ void EffectStackEdit::slotSeekToPos(int pos) {
 
 wipeInfo EffectStackEdit::getWipeInfo(QString value) {
     wipeInfo info;
-    QString start = value.section(";", 0, 0);
-    QString end = value.section(";", 1, 1).section("=", 1, 1);
+    QString start = value.section(';', 0, 0);
+    QString end = value.section(';', 1, 1).section('=', 1, 1);
     if (start.startsWith("-100%,0")) info.start = LEFT;
     else if (start.startsWith("100%,0")) info.start = RIGHT;
     else if (start.startsWith("0%,100%")) info.start = DOWN;
@@ -311,7 +321,7 @@ QString EffectStackEdit::getWipeString(wipeInfo info) {
         start = "0%,0%:100%x100%";
         break;
     }
-    start.append(":" + QString::number(info.startTransparency));
+    start.append(':' + QString::number(info.startTransparency));
 
     switch (info.end) {
     case LEFT:
@@ -330,7 +340,7 @@ QString EffectStackEdit::getWipeString(wipeInfo info) {
         end = "0%,0%:100%x100%";
         break;
     }
-    end.append(":" + QString::number(info.endTransparency));
+    end.append(':' + QString::number(info.endTransparency));
     return QString(start + ";-1=" + end);
 }
 
@@ -357,7 +367,6 @@ void EffectStackEdit::collectAllParameters() {
         } else if (type == "color") {
             KColorButton *color = ((Ui::Colorval_UI*)valueItems[paramName])->kcolorbutton;
             setValue = color->color().name();
-            setValue.replace('#', "0x");
         } else if (type == "complex") {
             ComplexParameter *complex = ((ComplexParameter*)valueItems[paramName+"complex"]);
             namenode.item(i) = complex->getParamDesc();
@@ -366,8 +375,21 @@ void EffectStackEdit::collectAllParameters() {
             namenode.item(i) = geom->getParamDesc();
         } else if (type == "position") {
             KRestrictedLine *line = ((Ui::Positionval_UI*)valueItems[paramName+"position"])->krestrictedline;
-            setValue = QString::number(m_timecode.getFrameCount(line->text(), KdenliveSettings::project_fps()));
-            kDebug() << "// NEW POSITION: " << setValue << "(" << line->text() << " PARAM: " << paramName + "position";
+            int pos = m_timecode.getFrameCount(line->text(), KdenliveSettings::project_fps());
+            if (params.attribute("id") == "fadein" || params.attribute("id") == "fade_from_black") {
+                pos += m_in;
+                if (pos > m_out) {
+                    pos = m_out;
+                    line->setText(m_timecode.getTimecodeFromFrames(pos));
+                }
+            } else if (params.attribute("id") == "fadeout" || params.attribute("id") == "fade_to_black") {
+                pos = m_out - (pos - m_in);
+                if (pos > m_out - m_in) {
+                    pos = m_out - m_in;
+                    line->setText(m_timecode.getTimecodeFromFrames(pos));
+                }
+            }
+            setValue = QString::number(pos);
         } else if (type == "wipe") {
             Ui::Wipeval_UI *wp = (Ui::Wipeval_UI*)valueItems[paramName];
             wipeInfo info;