1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-07 15:23:22 +02:00
GPXSee/src/map/IMG/label.h
2019-07-13 14:42:44 +02:00

78 lines
1.6 KiB
C++

#ifndef LABEL_H
#define LABEL_H
#include <QString>
#include <QDebug>
#define FIRST_SHIELD Label::Shield::USInterstate
#define LAST_SHIELD Label::Shield::Oval
class Label {
public:
class Shield
{
public:
enum Type {
None,
USInterstate,
USShield,
USRound,
Hbox,
Box,
Oval
};
Shield() : _type(None) {}
Shield(Type type, const QString &name) : _type(type), _text(name) {}
Type type() const {return _type;}
const QString &text() const {return _text;}
bool isValid() const {return _type > None && !_text.isEmpty();}
bool operator==(const Shield &other) const
{return _type == other._type && _text == other._text;}
private:
Type _type;
QString _text;
};
Label() {}
Label(const QString &text, const Shield &shield = Shield())
: _text(text), _shield(shield) {}
const Shield &shield() const {return _shield;}
const QString &text() const {return _text;}
bool isValid() const {return _shield.isValid() || !_text.isEmpty();}
void setText(const QString &text) {_text = text;}
private:
QString _text;
Shield _shield;
};
inline uint qHash(const Label::Shield &shield)
{
return qHash(shield.text()) ^ shield.type();
}
#ifndef QT_NO_DEBUG
inline QDebug operator<<(QDebug dbg, const Label::Shield &shield)
{
dbg.nospace() << "Shield(" << shield.type() << ", " << shield.text() << ")";
return dbg.space();
}
inline QDebug operator<<(QDebug dbg, const Label &label)
{
dbg.nospace() << "Label(";
if (label.shield().isValid())
dbg << label.shield() << ", ";
dbg << label.text() << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG
#endif // LABEL_H