]> git.sesse.net Git - kdenlive/commitdiff
multiparamter setup
authorMarco Gittler <marco@gitma.de>
Tue, 19 Feb 2008 19:42:30 +0000 (19:42 +0000)
committerMarco Gittler <marco@gitma.de>
Tue, 19 Feb 2008 19:42:30 +0000 (19:42 +0000)
svn path=/branches/KDE4/; revision=1875

src/effectstackview.cpp
src/parameterplotter.cpp
src/parameterplotter.h

index 1f9c0f293da32faceb2223bf38aa9ab672cd6f1d..85eb539c8e1a964790138dcdcd4cc5dcb833ad51 100644 (file)
@@ -40,11 +40,21 @@ EffectStackView::EffectStackView( QWidget *parent)
        QList< QPair<QString, QMap<int,QVariant> > > points;
        QMap<int,QVariant> data;
        data[0]=0.1;
-       data[100]=50;
-       data[255]=100;
-       QPair<QString,QMap<int,QVariant> > testpair("contrast",data);
+       data[100]=30;
+       data[255]=50;
+       data[300]=100;
+       QPair<QString,QMap<int,QVariant> > testpair("gray",data);
        points.append(testpair);
-       ui.kplotwidget->setPointLists(points,0,300);
+       
+       QMap<int,QVariant> data1;
+       data1[0]=20;
+       data1[10]=70;
+       data1[155]=110;
+       data1[300]=133;
+       QPair<QString,QMap<int,QVariant> > testpair1("dx",data1);
+       points.append(testpair1);
+       
+       ui.kplotwidget->setPointLists(points,0,305);
        
 }
 
index ef2d6da7748c5e9c0fa38cab981de8477015a9dc..7911964099c9971903a07936324083553bb8582b 100644 (file)
@@ -29,35 +29,59 @@ ParameterPlotter::ParameterPlotter (QWidget *parent):KPlotWidget (parent){
        setTopPadding(10);
        setBottomPadding(20);
        movepoint=NULL;
-       plot=new KPlotObject();
-       plot->setShowLines(true);
+       colors << Qt::white << Qt::red << Qt::green << Qt::blue << Qt::magenta << Qt::gray << Qt::cyan;
+       maxy=0;
 }
 
 void ParameterPlotter::setPointLists(const QList< QPair<QString, QMap< int , QVariant > > >& params,int startframe, int endframe){
        
        QListIterator <QPair <QString, QMap< int , QVariant > > > nameit(params);
-       int maxy=0;
-       while (nameit.hasNext() ){
+       int max_y=0;
+       parameterNameList.clear();
        
+       
+       while (nameit.hasNext() ){      
+               KPlotObject *plot=new KPlotObject(colors[plotobjects.size()%colors.size()]);
+               plot->setShowLines(true);
                QPair<QString, QMap< int , QVariant > > item=nameit.next();
-               QString name(item.first);
+               parameterNameList << item.first;
+
                QMapIterator <int,QVariant> pointit=item.second;
                while (pointit.hasNext()){
                        pointit.next();
-                       plot->addPoint(QPointF(pointit.key(),pointit.value().toDouble()),"",1);
+                       plot->addPoint(QPointF(pointit.key(),pointit.value().toDouble()),item.first,1);
                        if (pointit.value().toInt() >maxy)
-                               maxy=pointit.value().toInt();
+                               max_y=pointit.value().toInt();
                }
-               addPlotObject(plot);
+               plotobjects.append(plot);
+       }
+       maxx=endframe;
+       maxy=max_y;
+       setLimits(0,endframe,0,maxy+10);
+       addPlotObjects(plotobjects);
+}
+
+void ParameterPlotter::createParametersNew(){
+       QList< QPair<QString, QMap<int,QVariant> > > ret;
+       QList<KPlotObject*> plotobjs=plotObjects();
+       if (plotobjs.size() != parameterNameList.size() ){
+               kDebug() << "ERROR size not equal";
        }
        
-       setLimits(0,endframe,0,maxy);
+       for (int i=0;i<parameterNameList.size() ;i++){
+               QList<KPlotPoint*> points=plotobjs[i]->points();
+               QMap<int,QVariant> vals;
+               foreach (KPlotPoint *o,points){
+                       vals[o->x()]=o->y();
+               }
+               QPair<QString,QMap<int,QVariant> > pair("contrast",vals);
+               ret.append(pair);
+       }
+       
+       emit parameterChanged(ret);
        
 }
 
-QList< QPair<QString, QMap<int,QVariant> > > ParameterPlotter::getPointLists(){
-       return pointlists;
-}
 
 void ParameterPlotter::mouseMoveEvent ( QMouseEvent * event ) {
        
@@ -65,18 +89,23 @@ void ParameterPlotter::mouseMoveEvent ( QMouseEvent * event ) {
                QList<KPlotPoint*> list=   pointsUnderPoint (event->pos()-QPoint(leftPadding(), topPadding() )  ) ;
                int i=0,j=-1;
                foreach (KPlotObject *o, plotObjects() ){
-                       foreach (KPlotPoint* p, o->points()){
-                               if (p==movepoint){
+                       QList<KPlotPoint*> points=o->points();
+                       for(int p=0;p<points.size();p++){
+                               if (points[p]==movepoint){
                                        QPoint delta=event->pos()-oldmousepoint;
                                        movepoint->setY(movepoint->y()-delta.y()*dataRect().height()/pixRect().height() );
-                                       
-                                       movepoint->setX(movepoint->x()+delta.x()*dataRect().width()/pixRect().width() );
+                                       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() )
+                                                       movepoint->setX(movepoint->x()+delta.x()*dataRect().width()/pixRect().width() );
+                                       }
                                        replacePlotObject(i,o);
                                        oldmousepoint=event->pos();
                                }
                        }
                        i++;
                }
+               createParametersNew();
        }
 }
 
index b3a8b3114aa8d0b8e54c6d02b25aa5add9db724b..cce220cc5419c3d9dbd081b505bf1e4b71ed9f32 100644 (file)
@@ -21,15 +21,22 @@ class ParameterPlotter : public KPlotWidget {
        Q_OBJECT
        public:
                ParameterPlotter (QWidget *parent=0);
-       void setPointLists(const QList< QPair<QString, QMap<int,QVariant> > >&,int,int);
-               QList< QPair<QString, QMap<int,QVariant> > > getPointLists();
+               virtual ~ParameterPlotter(){}
+
        private:
-               QList< QPair<QString, QMap<int,QVariant> > > pointlists;
                KPlotPoint* movepoint;
-               KPlotObject *plot;
                QPoint oldmousepoint;
+               int maxx,maxy;
+               QStringList parameterNameList;
+               void createParametersNew();
+               QList<KPlotObject*> plotobjects;
+               QList<QColor> colors;
        protected:
                void mouseMoveEvent ( QMouseEvent * event );
-               void mousePressEvent ( QMouseEvent * event );   
+               void mousePressEvent ( QMouseEvent * event );
+       public slots:
+               void setPointLists(const QList< QPair<QString, QMap<int,QVariant> > >&,int,int);
+       signals:
+               void parameterChanged(QList< QPair<QString, QMap<int,QVariant> > > );
        
 };