]> git.sesse.net Git - kdenlive/commitdiff
uses mix/max as limit and stretch value range to max
authorMarco Gittler <marco@gitma.de>
Mon, 25 Feb 2008 13:24:54 +0000 (13:24 +0000)
committerMarco Gittler <marco@gitma.de>
Mon, 25 Feb 2008 13:24:54 +0000 (13:24 +0000)
svn path=/branches/KDE4/; revision=1934

src/complexparameter.cpp
src/parameterplotter.cpp
src/parameterplotter.h

index f9b39479d7a8d6fe31272f31eab3abca9c9bc05f..4f3ce57a40c7afd7033149ab0aee817147bca2f8 100644 (file)
@@ -132,6 +132,7 @@ QDomElement ComplexParameter::getParamDesc(){
 void ComplexParameter::slotUpdateParameterList(QStringList l){
        kDebug() << l ;
        ui.parameterList->clear();
+       ui.parameterList->addItem("all");
        ui.parameterList->addItems(l);
 }
 
index c984c9492d57535b055cd8c1942860dc761e4dcd..fe9dd87da961c8cc15b4347e0443a1aca7c67f4e 100644 (file)
@@ -57,8 +57,10 @@ void ParameterPlotter::setPointLists(const QDomElement& d,int startframe,int end
        itemParameter=d;
        QDomNodeList namenode = d.elementsByTagName("parameter");
        
-       int max_y=0,min_y=0;
+       max_y=0;
+       min_y=0;
        removeAllPlotObjects ();
+       stretchFactors.clear();
        parameterNameList.clear();
        plotobjects.clear();
        
@@ -83,16 +85,22 @@ void ParameterPlotter::setPointLists(const QDomElement& d,int startframe,int end
                QStringList minv=pa.attributes().namedItem("max").nodeValue().split(";");
                for (int i=0;i<maxv.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 (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 ( maxv[i].toInt()!=0)
+                                       stretchFactors[i]=max_y/maxv[i].toInt();
+                               else
+                                       stretchFactors[i]=1.0;
+                       }
                        
-                       plot->addPoint(startframe,defauls[i].toInt());
+                       plot->addPoint(startframe,defauls[i].toInt()*stretchFactors[i]);
                        //add keyframes here
-                       plot->addPoint(endframe,defauls[i].toInt());
+                       plot->addPoint(endframe,defauls[i].toInt()*stretchFactors[i]);
                
                        plotobjects.append(plot);
                }
@@ -108,7 +116,7 @@ void ParameterPlotter::setPointLists(const QDomElement& d,int startframe,int end
        }
        maxx=endframe;
        maxy=max_y;
-       setLimits(-1,endframe+1,-1,maxy+10);
+       setLimits(-1,endframe+1,min_y-10,maxy+10);
        addPlotObjects(plotobjects);
 
 }
@@ -153,8 +161,9 @@ void ParameterPlotter::mouseMoveEvent ( QMouseEvent * event ) {
                        for(int p=0;p<points.size();p++){
                                if (points[p]==movepoint){
                                        QPoint delta=event->pos()-oldmousepoint;
-                                       if (m_moveY)
-                                       movepoint->setY(movepoint->y()-delta.y()*dataRect().height()/pixRect().height() );
+                                       double newy=movepoint->y()-delta.y()*dataRect().height()/pixRect().height();
+                                       if (m_moveY && newy>min_y && newy<max_y)
+                                               movepoint->setY(newy);
                                        if (p>0 && p<points.size()-1){
                                                double newx=movepoint->x()+delta.x()*dataRect().width()/pixRect().width();
                                                if ( newx>points[p-1]->x() && newx<points[p+1]->x() && m_moveX)
index 3f8052467e9eb1e57e1213c8cf9cea8ce9ce9e99..bee6e45cc7d54337ca7258f1add666d79b22ed61 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <KPlotWidget>
 #include <QDomElement>
+#include <QMap>
 
 class ParameterPlotter : public KPlotWidget {
        Q_OBJECT
@@ -41,8 +42,10 @@ class ParameterPlotter : public KPlotWidget {
                QStringList parameterNameList;
                void createParametersNew();
                QList<KPlotObject*> plotobjects;
+               QMap<int,double> stretchFactors;
                QList<QColor> colors;
                QDomElement itemParameter;
+               int max_y,min_y;
        protected:
                void mouseMoveEvent ( QMouseEvent * event );
                void mousePressEvent ( QMouseEvent * event );