source: ntrip/trunk/BNC/src/rinex/availplot.cpp@ 4595

Last change on this file since 4595 was 4595, checked in by mervart, 12 years ago
File size: 3.0 KB
Line 
1
2#include <qwt_plot_curve.h>
3#include <qwt_scale_draw.h>
4#include <qwt_text.h>
5
6#include "availplot.h"
7#include "reqcanalyze.h"
8
9//
10//////////////////////////////////////////////////////////////////////////////
11class t_scaleDrawTime : public QwtScaleDraw {
12 public:
13 t_scaleDrawTime() {}
14 virtual QwtText label(double mjd) const {
15 bncTime epoTime; epoTime.setmjd(mjd);
16 return QwtText(epoTime.timestr(0,':').c_str());
17 }
18};
19
20//
21//////////////////////////////////////////////////////////////////////////////
22class t_scaleDrawPrn : public QwtScaleDraw {
23 public:
24 t_scaleDrawPrn() {}
25 virtual QwtText label(double iPrn) const {
26 return _yLabels[iPrn];
27 }
28 QMap<int, QString> _yLabels;
29};
30
31// Constructor
32//////////////////////////////////////////////////////////////////////////////
33t_availPlot::t_availPlot(QWidget* parent,
34 QMap<QString, t_availData>* availDataMap)
35: QwtPlot(parent) {
36
37 setCanvasBackground(QColor(Qt::white));
38
39 // Axes
40 // ----
41 setAxisScaleDraw(QwtPlot::xBottom, new t_scaleDrawTime());
42 setAxisLabelRotation(QwtPlot::xBottom, -10.0);
43 setAxisLabelAlignment(QwtPlot::xBottom, Qt::AlignLeft | Qt::AlignBottom);
44
45 t_scaleDrawPrn* scaleDrawPrn = new t_scaleDrawPrn();
46 setAxisScaleDraw(QwtPlot::yLeft, scaleDrawPrn);
47
48 // Symbols
49 // -------
50 QwtSymbol* symbolGreen = new QwtSymbol(QwtSymbol::Rect, QBrush(Qt::green),
51 QPen(Qt::green), QSize(4,4));
52 QwtSymbol* symbolBlue = new QwtSymbol(QwtSymbol::Rect, QBrush(Qt::blue),
53 QPen(Qt::blue), QSize(4,4));
54
55 // Curves
56 // ------
57 int iC = 0;
58 QMapIterator<QString, t_availData > it(*availDataMap);
59 while (it.hasNext()) {
60 it.next();
61 ++iC;
62 const QString& prn = it.key();
63 const t_availData& availData = it.value();
64
65 scaleDrawPrn->_yLabels[iC] = prn;
66
67 double eps = 0.1;
68
69 // L1 ok Curve
70 // -----------
71 const QVector<double>& xData = availData._L1ok;
72 QVector<double> yData(xData.size(), double(iC)+eps);
73 addCurve(prn, symbolGreen, xData, yData);
74 }
75
76 QList<double> ticks[QwtScaleDiv::NTickTypes];
77 QList<double> &majorTicks = ticks[QwtScaleDiv::MajorTick];
78 QMapIterator<int, QString> itT(scaleDrawPrn->_yLabels);
79 while (itT.hasNext()) {
80 itT.next();
81 majorTicks << double(itT.key());
82 }
83 QwtScaleDiv yScaleDiv(majorTicks.first()-0.5, majorTicks.last()+0.5, ticks );
84 setAxisScaleDiv(QwtPlot::yLeft, yScaleDiv);
85
86 // Important !!!
87 // -------------
88 replot();
89}
90
91// Add Curve
92//////////////////////////////////////////////////////////////////////////////
93void t_availPlot::addCurve(const QString& name, const QwtSymbol* symbol,
94 const QVector<double>& xData,
95 const QVector<double>& yData) {
96 QwtPlotCurve* curve = new QwtPlotCurve(name);
97 curve->setSymbol(symbol);
98 curve->setStyle(QwtPlotCurve::NoCurve);
99 curve->setXAxis(QwtPlot::xBottom);
100 curve->setYAxis(QwtPlot::yLeft);
101 curve->setSamples(xData, yData);
102 curve->attach(this);
103}
Note: See TracBrowser for help on using the repository browser.