Marble

GeoDataRelation.h
1// SPDX-License-Identifier: LGPL-2.1-or-later
2//
3// SPDX-FileCopyrightText: 2017 Dennis Nienhüser <nienhueser@kde.org>
4
5#ifndef MARBLE_GEODATARELATION_H
6#define MARBLE_GEODATARELATION_H
7
8#include "GeoDataCoordinates.h"
9#include "GeoDataPlacemark.h"
10
11#include "geodata_export.h"
12
13namespace Marble
14{
15class GeoDataRelationPrivate;
16enum class OsmType;
17
18class GEODATA_EXPORT GeoDataRelation : public GeoDataFeature
19{
20public:
21 enum RelationType {
22 UnknownType = 0,
23 RouteRoad = 1 << 1,
24 RouteDetour = 1 << 2,
25 RouteFerry = 1 << 3,
26 RouteTrain = 1 << 4,
27 RouteSubway = 1 << 5,
28 RouteTram = 1 << 6,
29 RouteBus = 1 << 7,
30 RouteTrolleyBus = 1 << 8,
31 RouteBicycle = 1 << 9,
32 RouteMountainbike = 1 << 10,
33 RouteFoot = 1 << 11,
34 RouteHiking = 1 << 12,
35 RouteHorse = 1 << 13,
36 RouteInlineSkates = 1 << 14,
37 RouteSkiDownhill = 1 << 15,
38 RouteSkiNordic = 1 << 16,
39 RouteSkitour = 1 << 17,
40 RouteSled = 1 << 18
41 };
42
43 Q_DECLARE_FLAGS(RelationTypes, RelationType)
44
45 GeoDataRelation();
46 ~GeoDataRelation() override;
47 GeoDataRelation(const GeoDataRelation &other);
48 GeoDataRelation &operator=(GeoDataRelation other);
49 bool operator<(const GeoDataRelation &other) const;
50
51 const char *nodeType() const override;
52 GeoDataFeature *clone() const override;
53
54 void addMember(const GeoDataFeature *feature, qint64 id, OsmType type, const QString &role);
55 QSet<const GeoDataFeature *> members() const;
56
57 OsmPlacemarkData &osmData();
58 const OsmPlacemarkData &osmData() const;
59
60 RelationType relationType() const;
61 QSet<qint64> memberIds() const;
62 bool containsAnyOf(const QSet<qint64> &memberIds) const;
63
64private:
65 GeoDataRelationPrivate *const d_ptr;
66 Q_DECLARE_PRIVATE(GeoDataRelation)
67};
68
69}
70
71#endif
Binds a QML item to a specific geodetic location in screen coordinates.
OsmType
Type of OSM element.
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Mon Nov 4 2024 16:37:03 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.