]> git.sesse.net Git - kdenlive/blobdiff - src/parameterplotter.cpp
Integrate with the required MLT hooks for getting Movit to work.
[kdenlive] / src / parameterplotter.cpp
index 99f9e65f04782a10cd5b2624f62c922ba4f7dece..5550ba658e60882db2d30869bb4cdef0fe2018dc 100644 (file)
 #include <KDebug>
 #include <KPlotPoint>
 
-ParameterPlotter::ParameterPlotter(QWidget *parent): KPlotWidget(parent) {
+ParameterPlotter::ParameterPlotter(QWidget *parent) :
+        KPlotWidget(parent)
+{
     setAntialiasing(true);
     setLeftPadding(20);
     setRightPadding(10);
     setTopPadding(10);
     setBottomPadding(20);
-    movepoint = NULL;
-    colors << Qt::white << Qt::red << Qt::green << Qt::blue << Qt::magenta << Qt::gray << Qt::cyan;
-    maxy = 0;
+    m_movepoint = NULL;
+    m_colors << Qt::white << Qt::red << Qt::green << Qt::blue << Qt::magenta << Qt::gray << Qt::cyan;
     m_moveX = false;
     m_moveY = true;
     m_moveTimeline = true;
     m_newPoints = false;
-    activeIndexPlot = -1;
+    m_activeIndexPlot = -1;
+    m_max_y = 0;
+    m_min_y = 0;
 }
 /*
     <name>Lines</name>
@@ -52,19 +55,20 @@ ParameterPlotter::ParameterPlotter(QWidget *parent): KPlotWidget(parent) {
   </effect>
 
 */
-void ParameterPlotter::setPointLists(const QDomElement& d, const QString& paramName, 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;
+    m_itemParameter = d;
     QDomNodeList namenode = d.elementsByTagName("parameter");
 
-    max_y = 0;
-    min_y = 0;
+    m_max_y = 0;
+    m_min_y = 0;
     removeAllPlotObjects();
-    stretchFactors.clear();
-    parameterNameList.clear();
-    plotobjects.clear();
+    m_stretchFactors.clear();
+    m_parameterNameList.clear();
+    m_plotobjects.clear();
 
     QString dat;
     QTextStream stre(&dat);
@@ -72,53 +76,52 @@ void ParameterPlotter::setPointLists(const QDomElement& d, const QString& paramN
     kDebug() << dat;
     int i = 0;
     while (!namenode.item(i).isNull() && namenode.item(i).toElement().attribute("name") != m_paramName)
-        i++;
-    if (namenode.count()) {
-
+        ++i;
 
+    if (namenode.count()) {
         QDomElement pa = namenode.item(i).toElement();
-        QDomNode na = pa.firstChildElement("name");
+        //QDomNode na = pa.firstChildElement("name");
 
-        parameterNameList << pa.attribute("namedesc").split(";");
-        emit parameterList(parameterNameList);
+        m_parameterNameList << pa.attribute("namedesc").split(';');
+        emit parameterList(m_parameterNameList);
 
         //max_y=pa.attributes().namedItem("max").nodeValue().toInt();
         //int val=pa.attributes().namedItem("value").nodeValue().toInt();
         QStringList defaults;
-        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();
+        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 (m_max_y < maxv[i].toInt()) m_max_y = maxv[i].toInt();
+            if (m_min_y > minv[i].toInt()) m_min_y = minv[i].toInt();
         }
-        for (int i = 0;i < parameterNameList.count();i++) {
-            KPlotObject *plot = new KPlotObject(colors[plotobjects.size()%colors.size()]);
+        for (int i = 0; i < m_parameterNameList.count(); ++i) {
+            KPlotObject *plot = new KPlotObject(m_colors[m_plotobjects.size()%m_colors.size()]);
             plot->setShowLines(true);
-            if (!stretchFactors.contains(i) && i < maxv.size()) {
+            if (!m_stretchFactors.contains(i) && i < maxv.size()) {
                 if (maxv[i].toInt() != 0)
-                    stretchFactors[i] = max_y / maxv[i].toInt();
+                    m_stretchFactors[i] = m_max_y / maxv[i].toInt();
                 else
-                    stretchFactors[i] = 1.0;
+                    m_stretchFactors[i] = 1.0;
             }
-            if (i < defaults.size() && defaults[i].toDouble() > max_y)
-                defaults[i] = max_y;
+            if (i < defaults.size() && defaults[i].toDouble() > m_max_y)
+                defaults[i] = m_max_y;
             int def = 0;
             if (i < defaults.size())
-                def = (int)(defaults[i].toInt() * stretchFactors[i]);
+                def = (int)(defaults[i].toInt() * m_stretchFactors[i]);
             QString name = "";
-            if (i < parameterNameList.size())
-                name = parameterNameList[i];
+            if (i < m_parameterNameList.size())
+                name = m_parameterNameList[i];
             plot->addPoint(startframe, def, name);
             //add keyframes here
             plot->addPoint(endframe, def);
 
-            plotobjects.append(plot);
+            m_plotobjects.append(plot);
         }
 
         /*TODO keyframes
@@ -130,26 +133,25 @@ void ParameterPlotter::setPointLists(const QDomElement& d, const QString& paramN
         }*/
 
     }
-    maxx = endframe;
-    maxy = max_y;
-    setLimits(-1, endframe + 1, min_y - 10, maxy + 10);
+    setLimits(-1, endframe + 1, m_min_y - 10, m_max_y + 10);
 
-    addPlotObjects(plotobjects);
+    addPlotObjects(m_plotobjects);
 
 }
 
-void ParameterPlotter::createParametersNew() {
+void ParameterPlotter::createParametersNew()
+{
     QList<KPlotObject*> plotobjs = plotObjects();
-    if (plotobjs.size() != parameterNameList.size()) {
+    if (plotobjs.size() != m_parameterNameList.size()) {
         kDebug() << "ERROR size not equal";
     }
-    QDomNodeList namenode = itemParameter.elementsByTagName("parameter");
+    QDomNodeList namenode = m_itemParameter.elementsByTagName("parameter");
     QString paramlist;
     QTextStream txtstr(&paramlist);
     QDomNode pa = namenode.item(0);
-    if (namenode.count() > 0) {
-        for (int i = 0;i < plotobjs.count();i++) {
-            QList<KPlotPoint*> points = plotobjs[i]->points();
+    if (!namenode.isEmpty()) {
+        for (int i = 0; i < plotobjs.count(); ++i) {
+            QList<KPlotPoint*> points = plotobjs.at(i)->points();
             foreach(const KPlotPoint *o, points) {
                 txtstr << (int)o->y() ;
                 break;//first no keyframes
@@ -160,76 +162,79 @@ void ParameterPlotter::createParametersNew() {
     }
     pa.attributes().namedItem("value").setNodeValue(paramlist);
     pa.attributes().namedItem("start").setNodeValue(paramlist);
-    emit parameterChanged(itemParameter);
+    emit parameterChanged(m_itemParameter);
 
 }
 
 
-void ParameterPlotter::mouseMoveEvent(QMouseEvent * event) {
+void ParameterPlotter::mouseMoveEvent(QMouseEvent * event)
+{
 
-    if (movepoint != NULL) {
+    if (m_movepoint != NULL) {
         QList<KPlotPoint*> list =   pointsUnderPoint(event->pos() - QPoint(leftPadding(), topPadding())) ;
-        int i = 0, j = -1;
+        int i = 0;
         foreach(KPlotObject *o, plotObjects()) {
             QList<KPlotPoint*> points = o->points();
-            for (int p = 0;p < points.size();p++) {
-                if (points[p] == movepoint && (activeIndexPlot == -1 || activeIndexPlot == i)) {
-                    QPoint delta = event->pos() - oldmousepoint;
-                    double newy = movepoint->y() - delta.y() * dataRect().height() / pixRect().height();
-                    if (m_moveY && newy > min_y && newy < max_y)
-                        movepoint->setY(newy);
+            for (int p = 0; p < points.size(); p++) {
+                if (points[p] == m_movepoint && (m_activeIndexPlot == -1 || m_activeIndexPlot == i)) {
+                    QPoint delta = event->pos() - m_oldmousepoint;
+                    double newy = m_movepoint->y() - delta.y() * dataRect().height() / pixRect().height();
+                    if (m_moveY && newy > m_min_y && newy < m_max_y)
+                        m_movepoint->setY(newy);
                     if (p > 0 && p < points.size() - 1) {
-                        double newx = movepoint->x() + delta.x() * dataRect().width() / pixRect().width();
+                        double newx = m_movepoint->x() + delta.x() * dataRect().width() / pixRect().width();
                         if (newx > points[p-1]->x() && newx < points[p+1]->x() && m_moveX)
-                            movepoint->setX(movepoint->x() + delta.x()*dataRect().width() / pixRect().width());
+                            m_movepoint->setX(m_movepoint->x() + delta.x()*dataRect().width() / pixRect().width());
                     }
                     if (m_moveTimeline && (m_moveX || m_moveY))
                         emit updateFrame(0);
                     replacePlotObject(i, o);
-                    oldmousepoint = event->pos();
+                    m_oldmousepoint = event->pos();
                 }
             }
-            i++;
+            ++i;
         }
         createParametersNew();
     }
 }
 
-void ParameterPlotter::replot(const QString & name) {
+void ParameterPlotter::replot(const QString & name)
+{
 
     //removeAllPlotObjects();
     int i = 0;
     bool drawAll = name.isEmpty() || name == "all";
-    activeIndexPlot = -1;
+    m_activeIndexPlot = -1;
 
 
     foreach(KPlotObject* p, plotObjects()) {
         QString selectedName = "none";
-        if (i < parameterNameList.size())
-            selectedName = parameterNameList[i];
+        if (i < m_parameterNameList.size())
+            selectedName = m_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 (selectedName == name)
-            activeIndexPlot = i;
-        replacePlotObject(i++, p);
+            m_activeIndexPlot = i;
+        replacePlotObject(++i, p);
     }
 }
 
-void ParameterPlotter::mousePressEvent(QMouseEvent * event) {
+void ParameterPlotter::mousePressEvent(QMouseEvent * event)
+{
     //topPadding and other padding can be wrong and this (i hope) will be correctet in newer kde versions
     QPoint inPlot = event->pos() - QPoint(leftPadding(), topPadding());
     QList<KPlotPoint*> list =   pointsUnderPoint(inPlot) ;
     if (event->button() == Qt::LeftButton) {
         if (list.size() > 0) {
-            movepoint = list[0];
-            oldmousepoint = event->pos();
+            m_movepoint = list[0];
+            m_oldmousepoint = event->pos();
         } else {
-            if (m_newPoints && activeIndexPlot >= 0) {
+            if (m_newPoints && m_activeIndexPlot >= 0) {
                 //setup new points
-                KPlotObject* p = plotObjects()[activeIndexPlot];
+                KPlotObject* p = plotObjects()[m_activeIndexPlot];
                 QList<KPlotPoint*> points = p->points();
                 QList<QPointF> newpoints;
 
@@ -244,46 +249,56 @@ void ParameterPlotter::mousePressEvent(QMouseEvent * event) {
                     newpoints.append(QPointF(pt->x(), pt->y()));
                 }
                 p->clearPoints();
-                foreach(const QPointF qf, newpoints) {
+                foreach(const QPointF &qf, newpoints) {
                     p->addPoint(qf);
                 }
-                replacePlotObject(activeIndexPlot, p);
+                replacePlotObject(m_activeIndexPlot, p);
             }
-            movepoint = NULL;
+            m_movepoint = NULL;
         }
     } else if (event->button() == Qt::LeftButton) {
         //menu for deleting or exact setup of point
     }
 }
 
-void ParameterPlotter::setMoveX(bool b) {
+void ParameterPlotter::setMoveX(bool b)
+{
     m_moveX = b;
 }
 
-void ParameterPlotter::setMoveY(bool b) {
+void ParameterPlotter::setMoveY(bool b)
+{
     m_moveY = b;
 }
 
-void ParameterPlotter::setMoveTimeLine(bool b) {
+void ParameterPlotter::setMoveTimeLine(bool b)
+{
     m_moveTimeline = b;
 }
 
-void ParameterPlotter::setNewPoints(bool b) {
+void ParameterPlotter::setNewPoints(bool b)
+{
     m_newPoints = b;
 }
 
-bool ParameterPlotter::isMoveX() {
+bool ParameterPlotter::isMoveX() const
+{
     return m_moveX;
 }
 
-bool ParameterPlotter::isMoveY() {
+bool ParameterPlotter::isMoveY() const
+{
     return m_moveY;
 }
 
-bool ParameterPlotter::isMoveTimeline() {
+bool ParameterPlotter::isMoveTimeline() const
+{
     return m_moveTimeline;
 }
 
-bool ParameterPlotter::isNewPoints() {
+bool ParameterPlotter::isNewPoints() const
+{
     return m_newPoints;
 }
+
+#include "parameterplotter.moc"