#include "signaldisplay.h" #include <QtGui> #include <QDebug> SignalDisplay::SignalDisplay(QWidget *&parent):QWidget(parent) { colorTrace1 = Qt::blue; colorTrace2 = Qt::red; secsPerDiv = 1.0/600.0; voltsPerDiv = 20; setPointsPerPlot(10); } void SignalDisplay::setPointsPerPlot(int value) { pointsPerPlot = value; wave1 = new QPoint[pointsPerPlot]; wave2 = new QPoint[pointsPerPlot]; secsIdx1 = 0; secsIdx2 = 0; } void SignalDisplay::drawGrid(QPainter &p, QColor colorGrid, int x, int y, int w, int h, int nx, int ny){ p.setPen(colorGrid); for (int ix= 0; ix<nx; ix++){ int x = ix*w/nx; p.drawLine(x,0,x,h); } for (int iy = 0; iy < ny; iy++){ int y = iy*h/ny; p.drawLine(0,y,w,y); } } void SignalDisplay::paintEvent(QPaintEvent *event){ QPainter painter(this); w = width(); h = height(); ox = w; oy = h; painter.fillRect(0,0,w,h,Qt::white); drawGrid(painter, Qt::lightGray,0,0,w,h,5, 10); painter.setPen(colorTrace1); painter.drawPolyline(wave1,pointsPerPlot); painter.setPen(colorTrace2); painter.drawPolyline(wave2,pointsPerPlot); } void SignalDisplay::addPoint1( int value) { wave1[secsIdx1] = QPoint(secsIdx1*w/10/60.0/pointsPerPlot/secsPerDiv+w/(2*pointsPerPlot), \ oy-value*h/voltsPerDiv/10); secsIdx1 = (secsIdx1+1) % pointsPerPlot; } void SignalDisplay::addPoint2( int value) { wave2[secsIdx2] = QPoint(secsIdx2*w/10/60.0/pointsPerPlot/secsPerDiv+w/(2*pointsPerPlot), \ oy-value*h/voltsPerDiv/10); secsIdx2 = (secsIdx2+1) % pointsPerPlot; } //EOF