Added hillshading to vector maps
[GPXSee.git] / src / data / waypoint.cpp
blob600be6d1a55b3becacbb937881b81ff17b3ae156
1 #include <QDir>
2 #include <QFileInfo>
3 #include "dem.h"
4 #include "waypoint.h"
6 bool Waypoint::_useDEM = false;
7 bool Waypoint::_show2ndElevation = false;
8 QHash<QString, QPixmap> Waypoint::_symbolIcons;
10 QPair<qreal, qreal> Waypoint::elevations() const
12 if (_useDEM) {
13 DEM::lock();
14 qreal dem = DEM::elevation(coordinates());
15 DEM::unlock();
16 if (!std::isnan(dem))
17 return QPair<qreal, qreal>(dem, _show2ndElevation ? elevation()
18 : NAN);
19 else
20 return QPair<qreal, qreal>(elevation(), NAN);
21 } else {
22 if (hasElevation()) {
23 DEM::lock();
24 qreal dem = _show2ndElevation ? DEM::elevation(coordinates()) : NAN;
25 DEM::unlock();
26 return QPair<qreal, qreal>(elevation(), dem);
27 } else
28 return QPair<qreal, qreal>(DEM::elevation(coordinates()), NAN);
32 void Waypoint::loadSymbolIcons(const QString &dir)
34 if (dir.isEmpty())
35 return;
37 QDir d(dir);
38 QFileInfoList files(d.entryInfoList(QDir::Files | QDir::Readable));
40 for (int i = 0; i < files.size(); i++) {
41 QPixmap pm(files.at(i).absoluteFilePath());
42 if (pm.isNull())
43 qWarning("%s: error loading image",
44 qPrintable(files.at(i).absoluteFilePath()));
45 else
46 _symbolIcons.insert(files.at(i).baseName(), pm);
50 const QPixmap *Waypoint::symbolIcon(const QString &symbol)
52 if (symbol.isEmpty())
53 return 0;
54 QHash<QString, QPixmap>::const_iterator it(_symbolIcons.find(symbol));
55 return (it == _symbolIcons.constEnd()) ? 0 : &*it;