From bba746c62afe75a3a1c605cc733d9b60f1833684 Mon Sep 17 00:00:00 2001 From: Marco Gittler Date: Tue, 19 Feb 2008 19:42:30 +0000 Subject: [PATCH] multiparamter setup svn path=/branches/KDE4/; revision=1875 --- src/effectstackview.cpp | 18 +++++++++--- src/parameterplotter.cpp | 61 +++++++++++++++++++++++++++++----------- src/parameterplotter.h | 17 +++++++---- 3 files changed, 71 insertions(+), 25 deletions(-) diff --git a/src/effectstackview.cpp b/src/effectstackview.cpp index 1f9c0f29..85eb539c 100644 --- a/src/effectstackview.cpp +++ b/src/effectstackview.cpp @@ -40,11 +40,21 @@ EffectStackView::EffectStackView( QWidget *parent) QList< QPair > > points; QMap data; data[0]=0.1; - data[100]=50; - data[255]=100; - QPair > testpair("contrast",data); + data[100]=30; + data[255]=50; + data[300]=100; + QPair > testpair("gray",data); points.append(testpair); - ui.kplotwidget->setPointLists(points,0,300); + + QMap data1; + data1[0]=20; + data1[10]=70; + data1[155]=110; + data1[300]=133; + QPair > testpair1("dx",data1); + points.append(testpair1); + + ui.kplotwidget->setPointLists(points,0,305); } diff --git a/src/parameterplotter.cpp b/src/parameterplotter.cpp index ef2d6da7..79119640 100644 --- a/src/parameterplotter.cpp +++ b/src/parameterplotter.cpp @@ -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 > >& params,int startframe, int endframe){ QListIterator > > 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 > item=nameit.next(); - QString name(item.first); + parameterNameList << item.first; + QMapIterator 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 > > ret; + QList plotobjs=plotObjects(); + if (plotobjs.size() != parameterNameList.size() ){ + kDebug() << "ERROR size not equal"; } - setLimits(0,endframe,0,maxy); + for (int i=0;i points=plotobjs[i]->points(); + QMap vals; + foreach (KPlotPoint *o,points){ + vals[o->x()]=o->y(); + } + QPair > pair("contrast",vals); + ret.append(pair); + } + + emit parameterChanged(ret); } -QList< QPair > > ParameterPlotter::getPointLists(){ - return pointlists; -} void ParameterPlotter::mouseMoveEvent ( QMouseEvent * event ) { @@ -65,18 +89,23 @@ void ParameterPlotter::mouseMoveEvent ( QMouseEvent * event ) { QList 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 points=o->points(); + for(int p=0;ppos()-oldmousepoint; movepoint->setY(movepoint->y()-delta.y()*dataRect().height()/pixRect().height() ); - - movepoint->setX(movepoint->x()+delta.x()*dataRect().width()/pixRect().width() ); + if (p>0 && px()+delta.x()*dataRect().width()/pixRect().width(); + if ( newx>points[p-1]->x() && newxx() ) + movepoint->setX(movepoint->x()+delta.x()*dataRect().width()/pixRect().width() ); + } replacePlotObject(i,o); oldmousepoint=event->pos(); } } i++; } + createParametersNew(); } } diff --git a/src/parameterplotter.h b/src/parameterplotter.h index b3a8b311..cce220cc 100644 --- a/src/parameterplotter.h +++ b/src/parameterplotter.h @@ -21,15 +21,22 @@ class ParameterPlotter : public KPlotWidget { Q_OBJECT public: ParameterPlotter (QWidget *parent=0); - void setPointLists(const QList< QPair > >&,int,int); - QList< QPair > > getPointLists(); + virtual ~ParameterPlotter(){} + private: - QList< QPair > > pointlists; KPlotPoint* movepoint; - KPlotObject *plot; QPoint oldmousepoint; + int maxx,maxy; + QStringList parameterNameList; + void createParametersNew(); + QList plotobjects; + QList colors; protected: void mouseMoveEvent ( QMouseEvent * event ); - void mousePressEvent ( QMouseEvent * event ); + void mousePressEvent ( QMouseEvent * event ); + public slots: + void setPointLists(const QList< QPair > >&,int,int); + signals: + void parameterChanged(QList< QPair > > ); }; -- 2.39.2