1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-07-22 06:44:24 +02:00

Graph loading performance improvement

+ code/API cleanup
This commit is contained in:
2019-08-25 10:54:25 +02:00
parent a70c6f0f24
commit 609ac0c57a
33 changed files with 346 additions and 219 deletions

View File

@ -14,6 +14,11 @@ GearRatioGraph::GearRatioGraph(QWidget *parent) : GraphTab(parent)
setSliderPrecision(2);
}
GearRatioGraph::~GearRatioGraph()
{
qDeleteAll(_tracks);
}
void GearRatioGraph::setInfo()
{
if (_showTracks) {
@ -37,11 +42,15 @@ QList<GraphItem*> GearRatioGraph::loadData(const Data &data)
const Graph &graph = data.tracks().at(i).ratio();
if (!graph.isValid()) {
skipColor();
_palette.nextColor();
graphs.append(0);
} else {
GearRatioGraphItem *gi = new GearRatioGraphItem(graph, _graphType);
GraphView::addGraph(gi);
GearRatioGraphItem *gi = new GearRatioGraphItem(graph, _graphType,
_width, _palette.nextColor());
_tracks.append(gi);
if (_showTracks)
addGraph(gi);
for (QMap<qreal, qreal>::const_iterator it = gi->map().constBegin();
it != gi->map().constEnd(); ++it)
@ -51,12 +60,12 @@ QList<GraphItem*> GearRatioGraph::loadData(const Data &data)
}
for (int i = 0; i < data.routes().count(); i++) {
skipColor();
_palette.nextColor();
graphs.append(0);
}
for (int i = 0; i < data.areas().count(); i++)
skipColor();
_palette.nextColor();
setInfo();
redraw();
@ -70,10 +79,7 @@ qreal GearRatioGraph::top() const
for (QMap<qreal, qreal>::const_iterator it = _map.constBegin();
it != _map.constEnd(); ++it) {
if (it == _map.constBegin()) {
val = it.value();
key = it.key();
} else if (it.value() > val) {
if (std::isnan(val) || it.value() > val) {
val = it.value();
key = it.key();
}
@ -84,6 +90,9 @@ qreal GearRatioGraph::top() const
void GearRatioGraph::clear()
{
qDeleteAll(_tracks);
_tracks.clear();
_map.clear();
GraphTab::clear();
@ -93,7 +102,13 @@ void GearRatioGraph::showTracks(bool show)
{
_showTracks = show;
showGraph(show);
for (int i = 0; i < _tracks.size(); i++) {
if (show)
addGraph(_tracks.at(i));
else
removeGraph(_tracks.at(i));
}
setInfo();
redraw();