Cosmetics
[GPXSee.git] / src / powergraph.cpp
blobc227fa01c7743eaef104bdda42ee56d138f5d1e1
1 #include "data.h"
2 #include "powergraph.h"
5 PowerGraph::PowerGraph(QWidget *parent) : GraphTab(parent)
7 _units = Metric;
8 _showTracks = true;
10 GraphView::setYUnits(tr("W"));
11 setYLabel(tr("Power"));
13 setSliderPrecision(1);
16 void PowerGraph::setInfo()
18 if (_showTracks) {
19 GraphView::addInfo(tr("Average"), QString::number(avg() * yScale()
20 + yOffset(), 'f', 1) + UNIT_SPACE + yUnits());
21 GraphView::addInfo(tr("Maximum"), QString::number(max() * yScale()
22 + yOffset(), 'f', 1) + UNIT_SPACE + yUnits());
23 } else
24 clearInfo();
27 void PowerGraph::loadData(const Data &data, const QList<PathItem *> &paths)
29 for (int i = 0; i < data.tracks().count(); i++) {
30 const Graph &graph = data.tracks().at(i)->power();
31 qreal sum = 0, w = 0;
33 if (graph.size() < 2) {
34 skipColor();
35 continue;
38 for (int j = 1; j < graph.size(); j++) {
39 qreal ds = graph.at(j).s() - graph.at(j-1).s();
40 sum += graph.at(j).y() * ds;
41 w += ds;
43 _avg.append(QPointF(data.tracks().at(i)->distance(), sum/w));
45 GraphView::loadGraph(graph, paths.at(i));
48 for (int i = 0; i < data.routes().count(); i++)
49 skipColor();
51 setInfo();
53 redraw();
56 qreal PowerGraph::avg() const
58 qreal sum = 0, w = 0;
59 QList<QPointF>::const_iterator it;
61 for (it = _avg.begin(); it != _avg.end(); it++) {
62 sum += it->y() * it->x();
63 w += it->x();
66 return (sum / w);
69 void PowerGraph::clear()
71 _avg.clear();
73 GraphView::clear();
76 void PowerGraph::showTracks(bool show)
78 _showTracks = show;
80 showGraph(show);
81 setInfo();
83 redraw();