X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gr-qtgui%2Fsrc%2Flib%2FConstellationDisplayPlot.cc;fp=gr-qtgui%2Fsrc%2Flib%2FConstellationDisplayPlot.cc;h=e8e6288f5bf7c6924296e1473ba59ccd624a4c2c;hb=35e43e8d8c271e6842191cac3fc3f2f88a861183;hp=10355f9f0bf4eccd12510ddb2e2f87d01e5d14b3;hpb=ea29b08aeb54227e6628f655ccfdb96fe4d8c378;p=debian%2Fgnuradio diff --git a/gr-qtgui/src/lib/ConstellationDisplayPlot.cc b/gr-qtgui/src/lib/ConstellationDisplayPlot.cc index 10355f9f..e8e6288f 100644 --- a/gr-qtgui/src/lib/ConstellationDisplayPlot.cc +++ b/gr-qtgui/src/lib/ConstellationDisplayPlot.cc @@ -26,20 +26,21 @@ public: protected: virtual QwtText trackerText( const QwtDoublePoint& p ) const { - QwtText t(QString("Sample %1, %2 V").arg(p.x(), 0, 'f', 0).arg(p.y(), 0, 'f', 4)); - + QwtText t(QString("(%1, %2)").arg(p.x(), 0, 'f', 4). + arg(p.y(), 0, 'f', 4)); return t; } }; -ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent):QwtPlot(parent){ +ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent) + : QwtPlot(parent) +{ timespec_reset(&_lastReplot); resize(parent->width(), parent->height()); - _displayIntervalTime = (1.0/10.0); // 1/10 of a second between updates - _numPoints = 1024; + _penSize = 5; _realDataPoints = new double[_numPoints]; _imagDataPoints = new double[_numPoints]; @@ -55,19 +56,17 @@ ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent):QwtPlot(pare canvas()->setPalette(palette); setAxisScaleEngine(QwtPlot::xBottom, new QwtLinearScaleEngine); - //setAxisScale(QwtPlot::xBottom, -1.0, 1.0); set_xaxis(-2.0, 2.0); setAxisTitle(QwtPlot::xBottom, "In-phase"); setAxisScaleEngine(QwtPlot::yLeft, new QwtLinearScaleEngine); - //setAxisScale(QwtPlot::yLeft, -1.0, 1.0); set_yaxis(-2.0, 2.0); setAxisTitle(QwtPlot::yLeft, "Quadrature"); // Automatically deleted when parent is deleted _plot_curve = new QwtPlotCurve("Constellation Points"); _plot_curve->attach(this); - _plot_curve->setPen(QPen(Qt::blue, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + _plot_curve->setPen(QPen(Qt::blue, _penSize, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); _plot_curve->setStyle(QwtPlotCurve::Dots); _plot_curve->setRawData(_realDataPoints, _imagDataPoints, _numPoints); @@ -106,7 +105,8 @@ ConstellationDisplayPlot::ConstellationDisplayPlot(QWidget* parent):QwtPlot(pare this, SLOT( LegendEntryChecked(QwtPlotItem *, bool ) )); } -ConstellationDisplayPlot::~ConstellationDisplayPlot(){ +ConstellationDisplayPlot::~ConstellationDisplayPlot() +{ delete[] _realDataPoints; delete[] _imagDataPoints; @@ -114,6 +114,16 @@ ConstellationDisplayPlot::~ConstellationDisplayPlot(){ // _zoomer and _panner deleted when parent deleted } +void +ConstellationDisplayPlot::set_pen_size(int size) +{ + if(size > 0 && size < 30){ + _penSize = size; + _plot_curve->setPen(QPen(Qt::blue, _penSize, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); + } +} + + void ConstellationDisplayPlot::set_xaxis(double min, double max) { @@ -134,24 +144,25 @@ ConstellationDisplayPlot::set_axis(double xmin, double xmax, set_yaxis(ymin, ymax); } -void ConstellationDisplayPlot::replot(){ - - const timespec startTime = get_highres_clock(); - +void ConstellationDisplayPlot::replot() +{ QwtPlot::replot(); - - double differenceTime = (diff_timespec(get_highres_clock(), startTime)); - - differenceTime *= 99.0; - // Require at least a 10% duty cycle - if(differenceTime > (1.0/10.0)){ - _displayIntervalTime = differenceTime; - } } -void ConstellationDisplayPlot::PlotNewData(const double* realDataPoints, const double* imagDataPoints, const int64_t numDataPoints){ - if(numDataPoints > 0){ +void +ConstellationDisplayPlot::resizeSlot( QSize *s ) +{ + resize(s->width(), s->height()); +} +void ConstellationDisplayPlot::PlotNewData(const double* realDataPoints, + const double* imagDataPoints, + const int64_t numDataPoints, + const double timeInterval) +{ + if((numDataPoints > 0) && + (diff_timespec(get_highres_clock(), _lastReplot) > timeInterval)) { + if(numDataPoints != _numPoints){ _numPoints = numDataPoints; @@ -162,22 +173,19 @@ void ConstellationDisplayPlot::PlotNewData(const double* realDataPoints, const d _plot_curve->setRawData(_realDataPoints, _imagDataPoints, _numPoints); } + memcpy(_realDataPoints, realDataPoints, numDataPoints*sizeof(double)); memcpy(_imagDataPoints, imagDataPoints, numDataPoints*sizeof(double)); - } - - // Allow at least a 50% duty cycle - if(diff_timespec(get_highres_clock(), _lastReplot) > _displayIntervalTime){ - // Only replot the screen if it is visible - if(isVisible()){ - replot(); - } + replot(); + _lastReplot = get_highres_clock(); } } -void ConstellationDisplayPlot::LegendEntryChecked(QwtPlotItem* plotItem, bool on){ +void +ConstellationDisplayPlot::LegendEntryChecked(QwtPlotItem* plotItem, bool on) +{ plotItem->setVisible(!on); }