1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-25 04:05:53 +01:00
GPXSee/src/map/linearunits.h

41 lines
984 B
C
Raw Normal View History

#ifndef LINEARUNITS_H
#define LINEARUNITS_H
#include <cmath>
#include <QDebug>
#include "pointd.h"
class LinearUnits
{
public:
LinearUnits() : _f(NAN) {}
LinearUnits(int code);
bool isNull() const {return std::isnan(_f);}
bool isValid() const {return !std::isnan(_f);}
double toMeters(double val) const {return val * _f;}
PointD toMeters(const PointD &p) const
{return PointD(p.x() * _f, p.y() * _f);}
double fromMeters(double val) const {return val / _f;}
PointD fromMeters(const PointD &p) const
{return PointD(p.x() / _f, p.y() /_f);}
friend bool operator==(const LinearUnits &lu1, const LinearUnits &lu2);
#ifndef QT_NO_DEBUG
friend QDebug operator<<(QDebug dbg, const LinearUnits &lu);
#endif // QT_NO_DEBUG
private:
double _f;
};
inline bool operator==(const LinearUnits &lu1, const LinearUnits &lu2)
{return (lu1._f == lu2._f);}
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const LinearUnits &lu);
#endif // QT_NO_DEBUG
#endif // LINEARUNITS_H