File indexing completed on 2024-05-12 03:51:44

0001 /*
0002     SPDX-FileCopyrightText: 2011 Anders Lund <anders@alweb.dk>
0003     SPDX-License-Identifier: LGPL-2.1-or-later
0004 */
0005 
0006 #include "GPXrteTagHandler.h"
0007 
0008 #include "MarbleDebug.h"
0009 
0010 #include "GPXElementDictionary.h"
0011 #include "GeoParser.h"
0012 #include "GeoDataDocument.h"
0013 #include "GeoDataPlacemark.h"
0014 #include "GeoDataPoint.h"
0015 #include "GeoDataLineString.h"
0016 
0017 namespace Marble
0018 {
0019 namespace gpx
0020 {
0021 GPX_DEFINE_TAG_HANDLER(rte)
0022 
0023 GeoNode* GPXrteTagHandler::parse(GeoParser& parser) const
0024 {
0025     Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(gpxTag_rte)));
0026 
0027     GeoStackItem parentItem = parser.parentElement();
0028     if (parentItem.represents(gpxTag_gpx))
0029     {
0030         GeoDataDocument* doc = parentItem.nodeAs<GeoDataDocument>();
0031 
0032         // placemark for the linestring
0033         GeoDataPlacemark *placemark = new GeoDataPlacemark;
0034         doc->append(placemark);
0035         GeoDataLineString *linestring = new GeoDataLineString;
0036         placemark->setGeometry(linestring);
0037         placemark->setStyleUrl(QStringLiteral("#map-route"));
0038 
0039         return placemark;
0040     }
0041     return nullptr;
0042 }
0043 
0044 } // namespace gpx
0045 
0046 } // namespace Marble