File indexing completed on 2024-06-02 03:51:02
0001 /* 0002 SPDX-FileCopyrightText: 2008 Patrick Spendrin <ps_ml@gmx.de> 0003 SPDX-FileCopyrightText: 2014 Marek Hakala <hakala.marek@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "KmlExtrudeTagHandler.h" 0009 #include "MarbleDebug.h" 0010 #include "KmlElementDictionary.h" 0011 0012 #include "GeoDataGeometry.h" 0013 #include "GeoDataPoint.h" 0014 #include "GeoDataPolygon.h" 0015 #include "GeoDataLineString.h" 0016 #include "GeoDataLinearRing.h" 0017 #include "GeoDataPlacemark.h" 0018 0019 #include "GeoParser.h" 0020 0021 namespace Marble 0022 { 0023 namespace kml 0024 { 0025 KML_DEFINE_TAG_HANDLER( extrude ) 0026 0027 GeoNode* KmlextrudeTagHandler::parse( GeoParser& parser ) const 0028 { 0029 Q_ASSERT(parser.isStartElement() && parser.isValidElement(QLatin1String(kmlTag_extrude))); 0030 0031 GeoStackItem parentItem = parser.parentElement(); 0032 0033 GeoDataGeometry* geometry; 0034 bool validParents = false; 0035 0036 if( parentItem.is<GeoDataPoint>() ) { 0037 geometry = parentItem.nodeAs<GeoDataPoint>(); 0038 validParents = true; 0039 } else if( parentItem.is<GeoDataPlacemark>() ) { 0040 geometry = parentItem.nodeAs<GeoDataPlacemark>()->geometry(); 0041 validParents = true; 0042 } else if( parentItem.is<GeoDataPolygon>() ) { 0043 geometry = parentItem.nodeAs<GeoDataPolygon>(); 0044 validParents = true; 0045 } else if( parentItem.is<GeoDataLineString>() ) { 0046 geometry = parentItem.nodeAs<GeoDataLineString>(); 0047 validParents = true; 0048 } else if( parentItem.is<GeoDataLinearRing>() ) { 0049 geometry = parentItem.nodeAs<GeoDataLinearRing>(); 0050 validParents = true; 0051 } 0052 0053 if( validParents ) { 0054 QString content = parser.readElementText().trimmed(); 0055 0056 const bool extrude = (content == QLatin1String("1")); 0057 geometry->setExtrude(extrude); 0058 } 0059 0060 return nullptr; 0061 } 0062 0063 } 0064 }