void Plotter::drawCurves(QPainter *painter) { //printf("Inside DrawCurves\n"); static const QColor colorForIds[7] = {Qt::red,Qt::green,Qt::cyan,Qt::magenta,Qt::yellow,Qt::blue,Qt::white}; PlotSettings settings = zoomStack[curZoom]; if( m_moveFlag == true) { settings.maxX = m_ZoomSettings->maxX; settings.maxY = m_ZoomSettings->maxY; settings.minX = m_ZoomSettings->minX; settings.minY = m_ZoomSettings->minY; settings.m_nOffset = m_ZoomSettings->m_nOffset; settings.numXTicks = m_ZoomSettings->numXTicks; settings.numYTicks = m_ZoomSettings->numYTicks; } QRect rect(Margin,Margin,width()-(2*Margin),height()-(2*Margin)); //qDebug()<<"Draw Curves:"<< settings.m_nOffset; if(m_bshowZoomRect == true) { painter->setPen(colorForIds[6]); painter->drawRect(rubberBandRect); } if(!rect.isValid()) return; painter->setClipRect(rect.adjusted(+1,+1,-1,-1)); QMapIterator<int, QVector<QPointF> > i(curveMap); // printf("Rect Left: %d\n",rect.left()); // printf("Rect Height: %d\n",rect.height()); // printf("Rect width: %d\n",rect.width()); // printf("Rect Bottom: %d\n",rect.bottomLeft().y()); // printf("Rect Top: %d\n",rect.top()); double dx,dy; while(i.hasNext()){ i.next(); int id = i.key(); QVector<QPointF> data = i.value(); QPolygonF polyline(data.count()); double y =0.0,x=0.0; int l_nCounter =0; //printf("MinY:%f\n",settings.minY); //printf("Offset:%f\n",m_nOffset); for(int j=0; j< data.count();++j) { dx = data[j].x(); dy = data[j].y(); if(m_bUniPolar == true) { float l_nDiv = (dy/2.0); printf("UniPolar %f->%f\n",l_nDiv,dy - l_nDiv); } if(( data[j].x()>=settings.minX && data[j].x()<=settings.maxX)) { //printf("X:%f Y:%f\n",dx,dy); } y =0.0,x=0.0; if(m_ZoomFlag == false) { if(m_bVIMode == true) x = (rect.width()/2+ (dx*(((rect.width()-1)))/(settings.spanX()))); else x = (rect.left()+ (dx*(((rect.width()-1)))/(settings.spanX()))); if( m_bUniPolar == true){ y = ((Margin+rect.bottom()) - (((dy/2.0)+settings.m_nOffset)*((rect.height()-1))/(settings.spanY()))); printf(" Coord-Y %f\n",dy/2.0); } else y = ((Margin+rect.height()) - (((dy-settings.minY)+settings.m_nOffset)*((rect.height()-1))/(settings.spanY()))); //y = ((Margin+rect.height()/2) - ((dy*rect.height()-1)/4.096));/*((rect.height()-1))));*/ //y = (Margin+rect.height()/2) - (dy); // printf(" Coord- X & Y %f %f\n",x,y); // qDebug() << dy; } else if(m_ZoomFlag == true) { x = (rect.left() + ((dx-settings.minX)*(((rect.width()-1)))/(settings.spanX()))); y = ((Margin+rect.height()) - (((dy-settings.minY)+settings.m_nOffset)*((rect.height()-1))/(settings.spanY()))); } if(( data[j].x()>=settings.minX && data[j].x()<=settings.maxX)&&(( data[j].y()>=settings.minY && data[j].y()<=settings.maxY))) { polyline[j] = QPointF(x,y); l_nCounter++; } } QPolygonF zoomPolyline(l_nCounter); y =0.0,x=0.0; int l_nIndex1 =0; for(int l_nIndex=0;l_nIndex< data.count();l_nIndex++) { QPointF(x,y); x = polyline.at(l_nIndex).x(); y = polyline.at(l_nIndex).y(); if(x!=0.0 || y!=0.0 ) { zoomPolyline[l_nIndex1] = QPointF(x,y); l_nIndex1++; } } painter->setPen(colorForIds[uint(id) %6]); if(m_ZoomFlag == false) painter->drawPolyline(polyline); else painter->drawPolyline(zoomPolyline); } }
void Plotter::drawCurves(QPainter *painter) { //~~~~~~~~Adjust X-y Axis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ QStringList stringList; bool ok=true; QFile textFile("AdjustXYaxisVI.txt"); if (textFile.open(QIODevice::ReadOnly)) { QTextStream textStream(&textFile); while (!textStream.atEnd()) { stringList.append(textStream.readLine()); } adjustXaxis=stringList.value(0).toDouble(&ok) * m_nXZoomFactor; adjustYaxis=stringList.value(1).toDouble(&ok) * m_nYZoomFactor; }else{ adjustXaxis=5.5; adjustYaxis=0; } // qDebug() << "Zoom Factor:" << m_nXZoomFactor << m_nYZoomFactor; // qDebug() << "Adjust Axis:" << adjustXaxis << adjustYaxis; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ static const QColor colorForIds[8] = {Qt::red,Qt::green,Qt::cyan,Qt::magenta,Qt::yellow,Qt::white,Qt::gray,Qt::black}; PlotSettings settings = zoomStack[curZoom]; if( m_moveFlag == true) { settings.maxX = m_ZoomSettings->maxX; settings.maxY = m_ZoomSettings->maxY; settings.minX = m_ZoomSettings->minX; settings.minY = m_ZoomSettings->minY; settings.m_nOffset = m_ZoomSettings->m_nOffset; settings.numXTicks = m_ZoomSettings->numXTicks; settings.numYTicks = m_ZoomSettings->numYTicks; } QRect rect(Margin,Margin,width()-(2*Margin),height()-(2*Margin)); if(m_bshowZoomRect == true) { painter->setPen(colorForIds[6]); painter->drawRect(rubberBandRect); } if(!rect.isValid()) return; painter->setClipRect(rect.adjusted(+1,+1,-1,-1)); QMapIterator<int, QVector<QPointF> > i(curveMap); // printf("Rect Left: %d\n",rect.left()); // printf("Rect Height: %d\n",rect.height()); // printf("Rect width: %d\n",rect.width()); // printf("Rect Bottom: %d\n",rect.bottomLeft().y()); // printf("Rect Top: %d\n",rect.top()); double dx,dy; while(i.hasNext()){ i.next(); int id = i.key(); // qDebug() << "Curve ID" << id; QVector<QPointF> data = i.value(); QPolygonF polyline(data.count()); double y =0.0,x=0.0; int l_nCounter =0; //printf("MinY:%f\n",settings.minY); //printf("Offset:%f\n",m_nOffset); m_nOffset =0.0; for(int j=0; j< data.count();++j) { dx = data[j].x(); dy = data[j].y(); if(m_bUniPolar == true) { float l_nDiv = (dy/2.0); // printf("UniPolar %f->%f\n",l_nDiv,dy - l_nDiv); } if(( data[j].x()>=settings.minX && data[j].x()<=settings.maxX)) { //printf("X:%f Y:%f\n",dx,dy); } y =0.0,x=0.0; if(m_ZoomFlag == false) { if(m_bVIMode == true) x = ((rect.width()/2)+adjustXaxis + ((dx)*(((rect.width()-1)))/(settings.spanX()))); else x = (rect.left()+ ((dx)*(((rect.width()-1)))/(settings.spanX()))); if( m_bUniPolar == true){ y = ((Margin+rect.bottom()) - (((dy/2.0)+settings.m_nOffset)*((rect.height()-1))/(settings.spanY()))); //y+=10; // printf(" Coord-Y %f\n",dy/2.0); } else y = (((Margin+rect.height()/2)+adjustYaxis) - ((dy+m_nOffset)*((rect.height()-1))/(settings.spanY())));//TO CHANGE THE Y AXIS IN THE GRAPH // printf(" Coord- X & Y %f %f\n",x,y); } else if(m_ZoomFlag == true) { x = (rect.left() + ((dx-settings.minX)*(((rect.width()-1)))/(settings.spanX()))); y = ((Margin+rect.height()) - (((dy-settings.minY)+settings.m_nOffset)*((rect.height()-1))/(settings.spanY()))); } if(( data[j].x()>=settings.minX && data[j].x()<=settings.maxX)&&(( data[j].y()>=settings.minY && data[j].y()<=settings.maxY))) { polyline[j] = QPointF(x,y); l_nCounter++; } } QPolygonF zoomPolyline(l_nCounter); y =0.0,x=0.0; int l_nIndex1 =0; for(int l_nIndex=0;l_nIndex< data.count();l_nIndex++) { QPointF(x,y); x = polyline.at(l_nIndex).x(); y = polyline.at(l_nIndex).y(); //qDebug()<<x<<y; if(x!=0.0 || y!=0.0 ) { zoomPolyline[l_nIndex1] = QPointF(x,y); l_nIndex1++; } } // if( m_nClearID == id) // painter->setPen(Qt::black); //else QPen pen; painter->setPen(colorForIds[uint(id) %6]); // pen.setColor(colorForIds[uint(id) %6]); // pen.setWidth(20); // painter->setPen(pen); if(m_ZoomFlag == false) { painter->setPen(colorForIds[uint(id) %6]); painter->drawPolyline(polyline); // qDebug()<<"Band:"<<m_objPlotData->m_nEnvelopBand; //compareCurvePoints(polyline1); } else painter->drawPolyline(zoomPolyline); } // qDebug() << "Exit Draw Cruves."; }