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);
}
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 ) {
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();
}
}
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> > > );
};