/** * Constructor, creates a new HistogramToolWindow * * @param title * @param parent */ HistogramToolWindow::HistogramToolWindow(QString title,QWidget *parent) : PlotWindow(title, parent) { p_plot->enableAxis(QwtPlot::yRight); QwtText *leftLabel = new QwtText("Frequency", QwtText::PlainText); leftLabel->setColor(Qt::darkCyan); QFont font = leftLabel->font(); font.setPointSize(13); font.setBold(true); leftLabel->setFont(font); p_plot->setAxisTitle(QwtPlot::yLeft, *leftLabel); p_dock = new QDockWidget("Histogram Info",this); p_dock->setAllowedAreas(Qt::AllDockWidgetAreas); p_dock->setFloating(false); p_dock->setObjectName("DockWidget"); p_dock->setMinimumWidth(130); p_mainWindow->addDockWidget(Qt::LeftDockWidgetArea, p_dock, Qt::Vertical); QwtText *rtLabel = new QwtText("Percentage", QwtText::PlainText); rtLabel->setColor(Qt::red); font = rtLabel->font(); font.setPointSize(13); font.setBold(true); rtLabel->setFont(font); p_plot->setAxisTitle(QwtPlot::yRight,*rtLabel); setAxisLabel(QwtPlot::xBottom,"Pixel Value (DN)"); setScale(QwtPlot::yRight,0,100); setPlotBackground(Qt::white); }
int QwtPolarPlot::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QFrame::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 8) qt_static_metacall(this, _c, _id, _a); _id -= 8; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QBrush*>(_v) = plotBackground(); break; case 1: *reinterpret_cast< double*>(_v) = azimuthOrigin(); break; } _id -= 2; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setPlotBackground(*reinterpret_cast< QBrush*>(_v)); break; case 1: setAzimuthOrigin(*reinterpret_cast< double*>(_v)); break; } _id -= 2; } else if (_c == QMetaObject::ResetProperty) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 2; } #endif // QT_NO_PROPERTIES return _id; }
Plot::Plot(QWidget *parent) : QwtPolarPlot(parent) , m_azimuthChange(new QTimer(this)) , m_currTime(new QTime) , m_nextAzimuthData(new QTimer(this)) , m_isStarted(false) , m_showIDs(true) , m_tracksStorage(new MarksTracksStorage(this)) /*, m_picker(new QwtPolarPicker(QwtPicker::CrossRubberBand, QwtPicker::ActiveOnly, this->canvas()))*/ , m_isIDMoving(false) , m_currMovingCurveID(0) , m_wrongMarksSound(new QSound(":/Resources/WrongMarksReceived.wav", this)) , m_rightMarksSound(new QSound(":/Resources/RadarShort.wav", this)) , m_offSounds(false) , m_markIndex(0) , m_upToIndex(0) , m_isIndexMarkFirstAppearance(true) , m_pauseAzimuth(0.0) , m_isPaused(false) { m_tracksStorage->setStorageSize(40); /*m_picker->setStateMachine(new QwtPickerDragPointMachine); m_picker->setMousePattern(QwtPicker::MouseSelect1, Qt::LeftButton); m_picker->setRubberBandPen(QColor("#00FF00")); m_picker->setTrackerPen(QColor(Qt::white)); m_picker->setTrackerFont(QFont("Verdana", 10));*/ setAutoReplot( false ); setPlotBackground( QColor("#0B0B3B") ); canvas()->setStyleSheet("background: #0B0B3B"); // Maked plot squared this->zoom(QwtPointPolar(0, 0), ZOOMDEFAULTFACTOR); // setting start point at 12 o'clock setAzimuthOrigin(M_PI/2); // scales setScale(QwtPolar::Azimuth, 360, 0, 30); setScaleMaxMinor(QwtPolar::Azimuth, 30); setScaleMaxMajor(QwtPolar::Azimuth, 30); setScale(QwtPolar::Radius, 0.0, 400.0 / ZOOMDEFAULTFACTOR, 50.0); setScaleMaxMinor(QwtPolar::Radius, qCeil(400.0 / (50.0 * ZOOMDEFAULTFACTOR))); setScaleMaxMajor(QwtPolar::Radius, qCeil(400.0 / (50.0 * ZOOMDEFAULTFACTOR))); // grids m_grid = new QwtPolarGrid(); m_grid->setPen(QPen(Qt::gray)); for(int scaleId = 0; scaleId < QwtPolar::ScaleCount; scaleId++) { m_grid->showGrid(scaleId); } m_grid->setAxisPen(QwtPolar::AxisAzimuth, QPen(Qt::gray)); m_grid->setAzimuthScaleDraw(new AzimuthScaleDraw()); m_grid->showAxis(QwtPolar::AxisAzimuth, true); m_grid->showAxis(QwtPolar::AxisLeft, false); m_grid->showAxis(QwtPolar::AxisRight, true); m_grid->showAxis(QwtPolar::AxisTop, false); m_grid->showAxis(QwtPolar::AxisBottom, false); m_grid->showGrid(QwtPolar::Azimuth, true); m_grid->showGrid(QwtPolar::Radius, true); m_grid->attach(this); setMinimumSize(defaultPlotSize); m_currAzimuth = 0; QVector<double> azimuth; QVector<double> radius; azimuth.fill(m_currAzimuth, 2); radius.append(0); radius.append(maxBeamRadius); m_beamCurve = new QwtPolarCurve; m_beamCurve->setPen(QPen(QBrush(Qt::green), beamPenWidth)); m_beamData = new Data(azimuth, radius, beamId); m_beamCurve->setData(m_beamData); m_beamCurve->attach(this); // Blind Zone Curve radius.clear(); azimuth.clear(); radius.fill(5, 33); for(double i = 0; i <= 360; i += 11.25) { azimuth.append(i); } QwtPolarCurve *blindZoneCurve = new QwtPolarCurveJamming; blindZoneCurve->setPen(QPen(QBrush(Qt::yellow), 0)); Data *blindZoneData = new Data(azimuth, radius, 0x10000); blindZoneCurve->setData(blindZoneData); blindZoneCurve->attach(this); m_cycleTime = Cicle10; m_azimuthChange->setInterval(cicleInterval); m_nextAzimuthData->setInterval(packetsInterval); connect(m_azimuthChange, SIGNAL(timeout()), this, SLOT(azimuthChanged())); connect(m_nextAzimuthData, SIGNAL(timeout()), this, SLOT(nextAzimuthData())); // connect(m_picker, SIGNAL(moved(QwtPointPolar)), this, SLOT(moveMarkID(QwtPointPolar))); // connect(m_picker, SIGNAL(appended(QwtPointPolar)), this, SLOT(selectMarkID(QwtPointPolar))); // connect(m_picker, SIGNAL(activated(bool)), this, SLOT(stopMoving(bool))); }