]> git.sesse.net Git - kdenlive/blobdiff - src/parameterplotter.cpp
cleanup
[kdenlive] / src / parameterplotter.cpp
index 527e06bcb4e1ddbbfef468438752bbf4830920df..99f9e65f04782a10cd5b2624f62c922ba4f7dece 100644 (file)
@@ -52,9 +52,10 @@ ParameterPlotter::ParameterPlotter(QWidget *parent): KPlotWidget(parent) {
   </effect>
 
 */
-void ParameterPlotter::setPointLists(const QDomElement& d, int startframe, int endframe) {
+void ParameterPlotter::setPointLists(const QDomElement& d, const QString& paramName, int startframe, int endframe) {
 
     //QListIterator <QPair <QString, QMap< int , QVariant > > > nameit(params);
+    m_paramName = paramName;
     itemParameter = d;
     QDomNodeList namenode = d.elementsByTagName("parameter");
 
@@ -69,46 +70,53 @@ void ParameterPlotter::setPointLists(const QDomElement& d, int startframe, int e
     QTextStream stre(&dat);
     d.save(stre, 2);
     kDebug() << dat;
-
+    int i = 0;
+    while (!namenode.item(i).isNull() && namenode.item(i).toElement().attribute("name") != m_paramName)
+        i++;
     if (namenode.count()) {
 
 
-        QDomNode pa = namenode.item(0);
+        QDomElement pa = namenode.item(i).toElement();
         QDomNode na = pa.firstChildElement("name");
 
-        parameterNameList << pa.attributes().namedItem("name").nodeValue().split(";");
+        parameterNameList << pa.attribute("namedesc").split(";");
         emit parameterList(parameterNameList);
 
         //max_y=pa.attributes().namedItem("max").nodeValue().toInt();
         //int val=pa.attributes().namedItem("value").nodeValue().toInt();
         QStringList defaults;
-        if (pa.attributes().namedItem("start").nodeValue().contains(";"))
-            defaults = pa.attributes().namedItem("start").nodeValue().split(";");
-        else if (pa.attributes().namedItem("value").nodeValue().contains(";"))
-            defaults = pa.attributes().namedItem("value").nodeValue().split(";");
-        else if (pa.attributes().namedItem("default").nodeValue().contains(";"))
-            defaults = pa.attributes().namedItem("default").nodeValue().split(";");
-        QStringList maxv = pa.attributes().namedItem("max").nodeValue().split(";");
-        QStringList minv = pa.attributes().namedItem("max").nodeValue().split(";");
-        for (int i = 0;i < maxv.size();i++) {
+        if (pa.attribute("start").contains(";"))
+            defaults = pa.attribute("start").split(";");
+        else if (pa.attribute("value").contains(";"))
+            defaults = pa.attribute("value").split(";");
+        else if (pa.attribute("default").contains(";"))
+            defaults = pa.attribute("default").split(";");
+        QStringList maxv = pa.attribute("max").split(";");
+        QStringList minv = pa.attribute("min").split(";");
+        for (int i = 0;i < maxv.size() && i < minv.size();i++) {
             if (max_y < maxv[i].toInt()) max_y = maxv[i].toInt();
             if (min_y > minv[i].toInt()) min_y = minv[i].toInt();
         }
-
         for (int i = 0;i < parameterNameList.count();i++) {
             KPlotObject *plot = new KPlotObject(colors[plotobjects.size()%colors.size()]);
             plot->setShowLines(true);
-            if (!stretchFactors.contains(i)) {
+            if (!stretchFactors.contains(i) && i < maxv.size()) {
                 if (maxv[i].toInt() != 0)
                     stretchFactors[i] = max_y / maxv[i].toInt();
                 else
                     stretchFactors[i] = 1.0;
             }
-            if (defaults[i].toDouble() > max_y)
+            if (i < defaults.size() && defaults[i].toDouble() > max_y)
                 defaults[i] = max_y;
-            plot->addPoint(startframe, defaults[i].toInt()*stretchFactors[i], parameterNameList[i]);
+            int def = 0;
+            if (i < defaults.size())
+                def = (int)(defaults[i].toInt() * stretchFactors[i]);
+            QString name = "";
+            if (i < parameterNameList.size())
+                name = parameterNameList[i];
+            plot->addPoint(startframe, def, name);
             //add keyframes here
-            plot->addPoint(endframe, defaults[i].toInt()*stretchFactors[i]);
+            plot->addPoint(endframe, def);
 
             plotobjects.append(plot);
         }
@@ -125,12 +133,12 @@ void ParameterPlotter::setPointLists(const QDomElement& d, int startframe, int e
     maxx = endframe;
     maxy = max_y;
     setLimits(-1, endframe + 1, min_y - 10, maxy + 10);
+
     addPlotObjects(plotobjects);
 
 }
 
 void ParameterPlotter::createParametersNew() {
-
     QList<KPlotObject*> plotobjs = plotObjects();
     if (plotobjs.size() != parameterNameList.size()) {
         kDebug() << "ERROR size not equal";
@@ -142,7 +150,7 @@ void ParameterPlotter::createParametersNew() {
     if (namenode.count() > 0) {
         for (int i = 0;i < plotobjs.count();i++) {
             QList<KPlotPoint*> points = plotobjs[i]->points();
-            foreach(KPlotPoint *o, points) {
+            foreach(const KPlotPoint *o, points) {
                 txtstr << (int)o->y() ;
                 break;//first no keyframes
             }
@@ -188,18 +196,23 @@ void ParameterPlotter::mouseMoveEvent(QMouseEvent * event) {
 }
 
 void ParameterPlotter::replot(const QString & name) {
+
     //removeAllPlotObjects();
     int i = 0;
     bool drawAll = name.isEmpty() || name == "all";
     activeIndexPlot = -1;
 
+
     foreach(KPlotObject* p, plotObjects()) {
-        p->setShowPoints(drawAll || parameterNameList[i] == name);
-        p->setShowLines(drawAll || parameterNameList[i] == name);
-        QPen pen = (drawAll || parameterNameList[i] == name ? QPen(Qt::SolidLine) : QPen(Qt::NoPen));
+        QString selectedName = "none";
+        if (i < parameterNameList.size())
+            selectedName = parameterNameList[i];
+        p->setShowPoints(drawAll || selectedName == name);
+        p->setShowLines(drawAll || selectedName == name);
+        QPen pen = (drawAll || selectedName == name ? QPen(Qt::SolidLine) : QPen(Qt::NoPen));
         pen.setColor(p->linePen().color());
         p->setLabelPen(pen);
-        if (parameterNameList[i] == name)
+        if (selectedName == name)
             activeIndexPlot = i;
         replacePlotObject(i++, p);
     }
@@ -223,7 +236,7 @@ void ParameterPlotter::mousePressEvent(QMouseEvent * event) {
                 double newx = inPlot.x() * dataRect().width() / pixRect().width();
                 double newy = (height() - inPlot.y() - bottomPadding() - topPadding()) * dataRect().height() / pixRect().height();
                 bool inserted = false;
-                foreach(KPlotPoint* pt, points) {
+                foreach(const KPlotPoint* pt, points) {
                     if (pt->x() > newx && !inserted) {
                         newpoints.append(QPointF(newx, newy));
                         inserted = true;
@@ -231,7 +244,7 @@ void ParameterPlotter::mousePressEvent(QMouseEvent * event) {
                     newpoints.append(QPointF(pt->x(), pt->y()));
                 }
                 p->clearPoints();
-                foreach(QPointF qf, newpoints) {
+                foreach(const QPointF qf, newpoints) {
                     p->addPoint(qf);
                 }
                 replacePlotObject(activeIndexPlot, p);