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

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