File indexing completed on 2024-05-12 03:51:44
0001 /* 0002 SPDX-FileCopyrightText: 2007 Nikolas Zimmermann <zimmermann@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "GPXgpxTagHandler.h" 0008 0009 #include "MarbleDebug.h" 0010 0011 #include "GPXElementDictionary.h" 0012 #include "GeoDataParser.h" 0013 0014 #include "GeoDataDocument.h" 0015 #include "GeoDataStyle.h" 0016 #include "GeoDataIconStyle.h" 0017 #include "GeoDataLabelStyle.h" 0018 #include "GeoDataLineStyle.h" 0019 #include "GeoDataStyleMap.h" 0020 #include "GeoDataHotSpot.h" 0021 #include "MarbleColors.h" 0022 #include "MarbleDirs.h" 0023 #include "MarbleGlobal.h" 0024 0025 namespace Marble 0026 { 0027 namespace gpx 0028 { 0029 GPX_DEFINE_TAG_HANDLER(gpx) 0030 0031 GeoNode* GPXgpxTagHandler::parse(GeoParser& parser) const 0032 { 0033 GeoDataDocument* doc = geoDataDoc( parser ); 0034 0035 GeoDataStyle::Ptr style(new GeoDataStyle); 0036 GeoDataLineStyle lineStyle; 0037 QColor transparentRed = Oxygen::brickRed6; 0038 transparentRed.setAlpha( 200 ); 0039 lineStyle.setColor( transparentRed ); 0040 lineStyle.setWidth( 4 ); 0041 style->setLineStyle(lineStyle); 0042 style->setId(QStringLiteral("track")); 0043 0044 GeoDataStyleMap styleMap; 0045 styleMap.setId(QStringLiteral("map-track")); 0046 styleMap.insert(QStringLiteral("normal"), QLatin1Char('#') + style->id()); 0047 doc->addStyleMap(styleMap); 0048 doc->addStyle(style); 0049 0050 // create a style for routes 0051 GeoDataStyle::Ptr routestyle(new GeoDataStyle); 0052 GeoDataLineStyle routeLineStyle; 0053 QColor skyBlue = Oxygen::skyBlue6; 0054 skyBlue.setAlpha( 200 ); 0055 routeLineStyle.setColor( skyBlue ); 0056 routeLineStyle.setWidth( 5 ); 0057 routestyle->setLineStyle(routeLineStyle); 0058 routestyle->setId(QStringLiteral("route")); 0059 0060 GeoDataStyleMap routeStyleMap; 0061 routeStyleMap.setId(QStringLiteral("map-route")); 0062 routeStyleMap.insert(QStringLiteral("normal"), QLatin1Char('#') + routestyle->id()); 0063 doc->addStyleMap(routeStyleMap); 0064 doc->addStyle(routestyle); 0065 0066 // create a default style for waypoint icons 0067 GeoDataStyle::Ptr waypointStyle(new GeoDataStyle); 0068 waypointStyle->setId(QStringLiteral("waypoint")); 0069 GeoDataIconStyle iconStyle; 0070 iconStyle.setIconPath(MarbleDirs::path(QStringLiteral("bitmaps/flag.png"))); 0071 iconStyle.setHotSpot(QPointF(0.12,0.03), GeoDataHotSpot::Fraction, GeoDataHotSpot::Fraction); 0072 waypointStyle->setIconStyle(iconStyle); 0073 0074 GeoDataLabelStyle waypointLabelStyle; 0075 waypointLabelStyle.setAlignment(GeoDataLabelStyle::Corner); 0076 waypointStyle->setLabelStyle(waypointLabelStyle); 0077 0078 GeoDataStyleMap waypointStyleMap; 0079 waypointStyleMap.setId(QStringLiteral("map-waypoint")); 0080 waypointStyleMap.insert(QStringLiteral("normal"), QLatin1Char('#') + waypointStyle->id()); 0081 doc->addStyleMap(waypointStyleMap); 0082 doc->addStyle(waypointStyle); 0083 0084 return doc; 0085 } 0086 0087 } 0088 }