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