From kde-commits Mon Oct 03 14:10:49 2016 From: Bernhard Beschow Date: Mon, 03 Oct 2016 14:10:49 +0000 To: kde-commits Subject: [marble] src/lib/marble/geodata/graphicsitem: accept GeoDataPlacemark rather than GeoDataFeature Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=147550386232398 Git commit 493ece18986ff3ac9e1904ec3c5f82c91dc645b0 by Bernhard Beschow. Committed on 03/10/2016 at 13:17. Pushed by beschow into branch 'master'. accept GeoDataPlacemark rather than GeoDataFeature Avoids a few downcasts. M +11 -14 src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphi= csItem.cpp M +4 -4 src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphi= csItem.h M +49 -56 src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphi= csItem.cpp M +5 -5 src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphi= csItem.h M +6 -6 src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsIte= m.cpp M +2 -1 src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsIte= m.h M +5 -5 src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.cpp M +2 -1 src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.h M +17 -16 src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.c= pp M +4 -4 src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.h M +5 -5 src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.cpp M +4 -3 src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.h http://commits.kde.org/marble/493ece18986ff3ac9e1904ec3c5f82c91dc645b0 diff --git a/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphics= Item.cpp b/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsIt= em.cpp index 4744aef..b78cc96 100644 --- a/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.cpp +++ b/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.cpp @@ -14,28 +14,28 @@ #include "GeoDataPolygon.h" #include "GeoPainter.h" #include "GeoDataLatLonAltBox.h" -#include "ViewportParams.h" #include "GeoDataStyle.h" #include "GeoDataIconStyle.h" #include "GeoDataLineStyle.h" +#include "GeoDataPlacemark.h" #include "GeoDataPolyStyle.h" #include "GeoDataTypes.h" -#include "GeoDataPlacemark.h" #include "OsmPlacemarkData.h" #include "MarbleDebug.h" +#include "ViewportParams.h" = namespace Marble { = -AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const GeoDa= taFeature *feature, const GeoDataPolygon *polygon) : - GeoGraphicsItem(feature), +AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const GeoDa= taPlacemark *placemark, const GeoDataPolygon *polygon) : + GeoGraphicsItem(placemark), m_polygon(polygon), m_ring(0) { } = -AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const GeoDa= taFeature *feature, const GeoDataLinearRing *ring) : - GeoGraphicsItem(feature), +AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const GeoDa= taPlacemark *placemark, const GeoDataLinearRing *ring) : + GeoGraphicsItem(placemark), m_polygon(0), m_ring(ring) { @@ -137,18 +137,15 @@ QPen AbstractGeoPolygonGraphicsItem::configurePainter= (GeoPainter *painter, const return currentPen; } = -int AbstractGeoPolygonGraphicsItem::extractElevation(const GeoDataFeature = &feature) +int AbstractGeoPolygonGraphicsItem::extractElevation(const GeoDataPlacemar= k &placemark) { int elevation =3D 0; = - if (feature.nodeType() =3D=3D GeoDataTypes::GeoDataPlacemarkType) { - const GeoDataPlacemark *placemark =3D static_cast(&feature); - const OsmPlacemarkData &osmData =3D placemark->osmData(); + const OsmPlacemarkData &osmData =3D placemark.osmData(); = - const auto tagIter =3D osmData.findTag(QStringLiteral("ele")); - if (tagIter !=3D osmData.tagsEnd()) { - elevation =3D tagIter.value().toInt(); - } + const auto tagIter =3D osmData.findTag(QStringLiteral("ele")); + if (tagIter !=3D osmData.tagsEnd()) { + elevation =3D tagIter.value().toInt(); } = return elevation; diff --git a/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphics= Item.h b/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem= .h index 220af59..b0c02e9 100644 --- a/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.h +++ b/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.h @@ -21,14 +21,14 @@ namespace Marble { = class GeoDataLinearRing; +class GeoDataPlacemark; class GeoDataPolygon; -class GeoDataFeature; = class MARBLE_EXPORT AbstractGeoPolygonGraphicsItem : public GeoGraphicsItem { protected: - explicit AbstractGeoPolygonGraphicsItem(const GeoDataFeature *feature,= const GeoDataPolygon* polygon); - explicit AbstractGeoPolygonGraphicsItem(const GeoDataFeature *feature,= const GeoDataLinearRing* ring); + explicit AbstractGeoPolygonGraphicsItem(const GeoDataPlacemark *placem= ark, const GeoDataPolygon *polygon); + explicit AbstractGeoPolygonGraphicsItem(const GeoDataPlacemark *placem= ark, const GeoDataLinearRing *ring); = public: virtual const GeoDataLatLonAltBox& latLonAltBox() const; @@ -41,7 +41,7 @@ protected: inline const GeoDataLinearRing *ring() const { return m_ring; } = - static int extractElevation(const GeoDataFeature &feature); + static int extractElevation(const GeoDataPlacemark &placemark); = private: const GeoDataPolygon *const m_polygon; diff --git a/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphics= Item.cpp b/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsIt= em.cpp index df77493..cf86ea7 100644 --- a/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.cpp +++ b/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.cpp @@ -24,12 +24,12 @@ namespace Marble { = -BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const GeoDa= taFeature *feature, +BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const GeoDa= taPlacemark *placemark, const GeoDa= taPolygon *polygon) - : AbstractGeoPolygonGraphicsItem(feature, polygon) - , m_buildingHeight(extractBuildingHeight(feature)) - , m_buildingLabel(extractBuildingLabel(feature)) - , m_entries(extractNamedEntries(feature)) + : AbstractGeoPolygonGraphicsItem(placemark, polygon) + , m_buildingHeight(extractBuildingHeight(*placemark)) + , m_buildingLabel(extractBuildingLabel(*placemark)) + , m_entries(extractNamedEntries(*placemark)) { setZValue(this->zValue() + m_buildingHeight); Q_ASSERT(m_buildingHeight > 0.0); @@ -40,12 +40,12 @@ BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraph= icsItem(const GeoDataFeat setPaintLayers(paintLayers); } = -BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const GeoDa= taFeature *feature, +BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const GeoDa= taPlacemark *placemark, const GeoDa= taLinearRing* ring) - : AbstractGeoPolygonGraphicsItem(feature, ring) - , m_buildingHeight(extractBuildingHeight(feature)) - , m_buildingLabel(extractBuildingLabel(feature)) - , m_entries(extractNamedEntries(feature)) + : AbstractGeoPolygonGraphicsItem(placemark, ring) + , m_buildingHeight(extractBuildingHeight(*placemark)) + , m_buildingLabel(extractBuildingLabel(*placemark)) + , m_entries(extractNamedEntries(*placemark)) { setZValue(this->zValue() + m_buildingHeight); Q_ASSERT(m_buildingHeight > 0.0); @@ -134,71 +134,64 @@ QPointF BuildingGeoPolygonGraphicsItem::buildingOffse= t(const QPointF &point, con return QPointF(shiftX, shiftY); } = -double BuildingGeoPolygonGraphicsItem::extractBuildingHeight(const GeoData= Feature *feature) +double BuildingGeoPolygonGraphicsItem::extractBuildingHeight(const GeoData= Placemark &placemark) { double height =3D 8.0; = - if (feature->nodeType() =3D=3D GeoDataTypes::GeoDataPlacemarkType) { - const GeoDataPlacemark *placemark =3D static_cast(feature); - const OsmPlacemarkData &osmData =3D placemark->osmData(); - QHash::const_iterator tagIter; - if ((tagIter =3D osmData.findTag(QStringLiteral("height"))) !=3D o= smData.tagsEnd()) { - /** @todo Also parse non-SI units, see https://wiki.openstreet= map.org/wiki/Key:height#Height_of_buildings */ - QString const heightValue =3D QString(tagIter.value()).remove(= QStringLiteral(" meters")).remove(QStringLiteral(" m")); - bool extracted =3D false; - double extractedHeight =3D heightValue.toDouble(&extracted); - if (extracted) { - height =3D extractedHeight; - } - } else if ((tagIter =3D osmData.findTag(QStringLiteral("building:l= evels"))) !=3D osmData.tagsEnd()) { - int const levels =3D tagIter.value().toInt(); - int const skipLevels =3D osmData.tagValue(QStringLiteral("buil= ding:min_level")).toInt(); - /** @todo Is 35 as an upper bound for the number of levels san= e? */ - height =3D 3.0 * qBound(1, 1+levels-skipLevels, 35); + const OsmPlacemarkData &osmData =3D placemark.osmData(); + + QHash::const_iterator tagIter; + if ((tagIter =3D osmData.findTag(QStringLiteral("height"))) !=3D osmDa= ta.tagsEnd()) { + /** @todo Also parse non-SI units, see https://wiki.openstreetmap.= org/wiki/Key:height#Height_of_buildings */ + QString const heightValue =3D QString(tagIter.value()).remove(QStr= ingLiteral(" meters")).remove(QStringLiteral(" m")); + bool extracted =3D false; + double extractedHeight =3D heightValue.toDouble(&extracted); + if (extracted) { + height =3D extractedHeight; } + } else if ((tagIter =3D osmData.findTag(QStringLiteral("building:level= s"))) !=3D osmData.tagsEnd()) { + int const levels =3D tagIter.value().toInt(); + int const skipLevels =3D osmData.tagValue(QStringLiteral("building= :min_level")).toInt(); + /** @todo Is 35 as an upper bound for the number of levels sane? */ + height =3D 3.0 * qBound(1, 1+levels-skipLevels, 35); } = return qBound(1.0, height, 1000.0); } = -QString BuildingGeoPolygonGraphicsItem::extractBuildingLabel(const GeoData= Feature *feature) +QString BuildingGeoPolygonGraphicsItem::extractBuildingLabel(const GeoData= Placemark &placemark) { - if (feature->nodeType() =3D=3D GeoDataTypes::GeoDataPlacemarkType) { - const GeoDataPlacemark *placemark =3D static_cast(feature); + if (!placemark.name().isEmpty()) { + return placemark.name(); + } = - if (!placemark->name().isEmpty()) { - return placemark->name(); - } - const OsmPlacemarkData &osmData =3D placemark->osmData(); - auto tagIter =3D osmData.findTag(QStringLiteral("addr:housename")); - if (tagIter !=3D osmData.tagsEnd()) { - return tagIter.value(); - } - tagIter =3D osmData.findTag(QStringLiteral("addr:housenumber")); - if (tagIter !=3D osmData.tagsEnd()) { - return tagIter.value(); - } + const OsmPlacemarkData &osmData =3D placemark.osmData(); + + auto tagIter =3D osmData.findTag(QStringLiteral("addr:housename")); + if (tagIter !=3D osmData.tagsEnd()) { + return tagIter.value(); + } + + tagIter =3D osmData.findTag(QStringLiteral("addr:housenumber")); + if (tagIter !=3D osmData.tagsEnd()) { + return tagIter.value(); } = return QString(); } = -QVector BuildingGeoPolygonGrap= hicsItem::extractNamedEntries(const GeoDataFeature *feature) +QVector BuildingGeoPolygonGrap= hicsItem::extractNamedEntries(const GeoDataPlacemark &placemark) { QVector entries; = - if (feature->nodeType() =3D=3D GeoDataTypes::GeoDataPlacemarkType) { - const GeoDataPlacemark *placemark =3D static_cast(feature); - - const auto end =3D placemark->osmData().nodeReferencesEnd(); - for (auto iter =3D placemark->osmData().nodeReferencesBegin(); ite= r !=3D end; ++iter) { - const auto tagIter =3D iter.value().findTag(QStringLiteral("ad= dr:housenumber")); - if (tagIter !=3D iter.value().tagsEnd()) { - NamedEntry entry; - entry.point =3D iter.key(); - entry.label =3D tagIter.value(); - entries.push_back(entry); - } + const auto end =3D placemark.osmData().nodeReferencesEnd(); + for (auto iter =3D placemark.osmData().nodeReferencesBegin(); iter != =3D end; ++iter) { + const auto tagIter =3D iter.value().findTag(QStringLiteral("addr:h= ousenumber")); + if (tagIter !=3D iter.value().tagsEnd()) { + NamedEntry entry; + entry.point =3D iter.key(); + entry.label =3D tagIter.value(); + entries.push_back(entry); } } = diff --git a/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphics= Item.h b/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem= .h index c243bfc..8514cc5 100644 --- a/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.h +++ b/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.h @@ -22,8 +22,8 @@ namespace Marble class MARBLE_EXPORT BuildingGeoPolygonGraphicsItem : public AbstractGeoPol= ygonGraphicsItem { public: - explicit BuildingGeoPolygonGraphicsItem(const GeoDataFeature *feature,= const GeoDataPolygon* polygon); - explicit BuildingGeoPolygonGraphicsItem(const GeoDataFeature *feature,= const GeoDataLinearRing* ring); + explicit BuildingGeoPolygonGraphicsItem(const GeoDataPlacemark *placem= ark, const GeoDataPolygon *polygon); + explicit BuildingGeoPolygonGraphicsItem(const GeoDataPlacemark *placem= ark, const GeoDataLinearRing *ring); = public: virtual void paint(GeoPainter* painter, const ViewportParams *viewport= , const QString &layer); @@ -46,9 +46,9 @@ private: static QPointF centroid(const QPolygonF &polygon, double &area); static void screenPolygons(const ViewportParams *viewport, const GeoDa= taPolygon* polygon, QVector &polygons, QVector &outlines); - static double extractBuildingHeight(const GeoDataFeature *feature); - static QString extractBuildingLabel(const GeoDataFeature *feature); - static QVector extractNamedEntries(const GeoDataFeature *f= eature); + static double extractBuildingHeight(const GeoDataPlacemark &placemark); + static QString extractBuildingLabel(const GeoDataPlacemark &placemark); + static QVector extractNamedEntries(const GeoDataPlacemark = &placemark); = private: const double m_buildingHeight; diff --git a/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.= cpp b/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp index bcc72ad..907b8fe 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp +++ b/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp @@ -10,10 +10,10 @@ = #include "GeoLineStringGraphicsItem.h" = -#include "GeoDataFeature.h" #include "GeoDataLineString.h" #include "GeoDataLineStyle.h" #include "GeoDataLabelStyle.h" +#include "GeoDataPlacemark.h" #include "GeoDataPolyStyle.h" #include "GeoPainter.h" #include "StyleBuilder.h" @@ -26,12 +26,12 @@ namespace Marble { = -GeoLineStringGraphicsItem::GeoLineStringGraphicsItem( const GeoDataFeature= *feature, - const GeoDataLineStr= ing* lineString ) - : GeoGraphicsItem( feature ), - m_lineString( lineString ) +GeoLineStringGraphicsItem::GeoLineStringGraphicsItem(const GeoDataPlacemar= k *placemark, + const GeoDataLineStri= ng *lineString) : + GeoGraphicsItem(placemark), + m_lineString(lineString) { - QString const category =3D StyleBuilder::visualCategoryName(feature->v= isualCategory()); + QString const category =3D StyleBuilder::visualCategoryName(placemark-= >visualCategory()); QStringList paintLayers; paintLayers << QLatin1String("LineString/") + category + QLatin1String= ("/outline"); paintLayers << QLatin1String("LineString/") + category + QLatin1String= ("/inline"); diff --git a/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.= h b/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.h index 404ee5a..f79a20c 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.h +++ b/src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.h @@ -19,11 +19,12 @@ namespace Marble { = class GeoDataLineString; +class GeoDataPlacemark; = class MARBLE_EXPORT GeoLineStringGraphicsItem : public GeoGraphicsItem { public: - explicit GeoLineStringGraphicsItem( const GeoDataFeature *feature, con= st GeoDataLineString *lineString ); + explicit GeoLineStringGraphicsItem(const GeoDataPlacemark *placemark, = const GeoDataLineString *lineString); = void setLineString( const GeoDataLineString* lineString ); = diff --git a/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.cpp b= /src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.cpp index c9e46a1..a4bdf5e 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.cpp +++ b/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.cpp @@ -10,7 +10,7 @@ = #include "GeoPointGraphicsItem.h" = -#include "GeoDataFeature.h" +#include "GeoDataPlacemark.h" #include "GeoDataPoint.h" #include "GeoPainter.h" #include "StyleBuilder.h" @@ -18,12 +18,12 @@ namespace Marble { = -GeoPointGraphicsItem::GeoPointGraphicsItem(const GeoDataFeature *feature ,= const GeoDataPoint *point) : - GeoGraphicsItem(feature), +GeoPointGraphicsItem::GeoPointGraphicsItem(const GeoDataPlacemark *placema= rk, const GeoDataPoint *point) : + GeoGraphicsItem(placemark), m_point(point) { - if (feature) { - QString const paintLayer =3D QLatin1String("Point/") + StyleBuilde= r::visualCategoryName(feature->visualCategory()); + if (placemark) { + QString const paintLayer =3D QLatin1String("Point/") + StyleBuilde= r::visualCategoryName(placemark->visualCategory()); setPaintLayers(QStringList() << paintLayer); } } diff --git a/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.h b/s= rc/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.h index cba189f..0c87dc1 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.h +++ b/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.h @@ -17,12 +17,13 @@ namespace Marble { = +class GeoDataPlacemark; class GeoDataPoint; = class MARBLE_EXPORT GeoPointGraphicsItem : public GeoGraphicsItem { public: - explicit GeoPointGraphicsItem(const GeoDataFeature *feature, const Geo= DataPoint *point); + explicit GeoPointGraphicsItem(const GeoDataPlacemark *placemark, const= GeoDataPoint *point); = virtual void paint(GeoPainter* painter, const ViewportParams *viewport= , const QString &layer); = diff --git a/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp= b/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp index 085b08d..6496a6c 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp +++ b/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.cpp @@ -11,46 +11,47 @@ #include "GeoPolygonGraphicsItem.h" = #include "BuildingGeoPolygonGraphicsItem.h" +#include "GeoDataPlacemark.h" #include "StyleBuilder.h" = namespace Marble { = -AbstractGeoPolygonGraphicsItem* GeoPolygonGraphicsItem::createGraphicsItem= (const GeoDataFeature *feature, const GeoDataPolygon *polygon) +AbstractGeoPolygonGraphicsItem *GeoPolygonGraphicsItem::createGraphicsItem= (const GeoDataPlacemark *placemark, const GeoDataPolygon *polygon) { - if (feature->visualCategory() =3D=3D GeoDataFeature::Building) { - return new BuildingGeoPolygonGraphicsItem(feature, polygon); + if (placemark->visualCategory() =3D=3D GeoDataFeature::Building) { + return new BuildingGeoPolygonGraphicsItem(placemark, polygon); } - return new GeoPolygonGraphicsItem(feature, polygon); + return new GeoPolygonGraphicsItem(placemark, polygon); } = -AbstractGeoPolygonGraphicsItem* GeoPolygonGraphicsItem::createGraphicsItem= (const GeoDataFeature *feature, const GeoDataLinearRing *ring) +AbstractGeoPolygonGraphicsItem *GeoPolygonGraphicsItem::createGraphicsItem= (const GeoDataPlacemark *placemark, const GeoDataLinearRing *ring) { - if (feature->visualCategory() =3D=3D GeoDataFeature::Building) { - return new BuildingGeoPolygonGraphicsItem(feature, ring); + if (placemark->visualCategory() =3D=3D GeoDataFeature::Building) { + return new BuildingGeoPolygonGraphicsItem(placemark, ring); } - return new GeoPolygonGraphicsItem(feature, ring); + return new GeoPolygonGraphicsItem(placemark, ring); } = = -GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataFeature *featu= re, const GeoDataPolygon *polygon) : - AbstractGeoPolygonGraphicsItem(feature, polygon) +GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataPlacemark *pla= cemark, const GeoDataPolygon *polygon) : + AbstractGeoPolygonGraphicsItem(placemark, polygon) { - const int elevation =3D extractElevation(*feature); + const int elevation =3D extractElevation(*placemark); setZValue(zValue() + elevation); = - const GeoDataFeature::GeoDataVisualCategory visualCategory =3D feature= ->visualCategory(); + const GeoDataFeature::GeoDataVisualCategory visualCategory =3D placema= rk->visualCategory(); const QString paintLayer =3D QLatin1String("Polygon/") + StyleBuilder:= :visualCategoryName(visualCategory); setPaintLayers(QStringList(paintLayer)); } = -GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataFeature *featu= re, const GeoDataLinearRing *ring) : - AbstractGeoPolygonGraphicsItem(feature, ring) +GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataPlacemark *pla= cemark, const GeoDataLinearRing *ring) : + AbstractGeoPolygonGraphicsItem(placemark, ring) { - const int elevation =3D extractElevation(*feature); + const int elevation =3D extractElevation(*placemark); setZValue(zValue() + elevation); = - const GeoDataFeature::GeoDataVisualCategory visualCategory =3D feature= ->visualCategory(); + const GeoDataFeature::GeoDataVisualCategory visualCategory =3D placema= rk->visualCategory(); const QString paintLayer =3D QLatin1String("Polygon/") + StyleBuilder:= :visualCategoryName(visualCategory); setPaintLayers(QStringList(paintLayer)); } diff --git a/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.h b= /src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.h index b518259..bc93c54 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.h +++ b/src/lib/marble/geodata/graphicsitem/GeoPolygonGraphicsItem.h @@ -22,11 +22,11 @@ class GeoDataPolygon; class MARBLE_EXPORT GeoPolygonGraphicsItem : public AbstractGeoPolygonGrap= hicsItem { public: - static AbstractGeoPolygonGraphicsItem* createGraphicsItem(const GeoDat= aFeature *feature, const GeoDataPolygon *polygon); - static AbstractGeoPolygonGraphicsItem* createGraphicsItem(const GeoDat= aFeature *feature, const GeoDataLinearRing* ring); + static AbstractGeoPolygonGraphicsItem *createGraphicsItem(const GeoDat= aPlacemark *placemark, const GeoDataPolygon *polygon); + static AbstractGeoPolygonGraphicsItem *createGraphicsItem(const GeoDat= aPlacemark *placemark, const GeoDataLinearRing *ring); = - explicit GeoPolygonGraphicsItem( const GeoDataFeature *feature, const = GeoDataPolygon* polygon ); - explicit GeoPolygonGraphicsItem( const GeoDataFeature *feature, const = GeoDataLinearRing* ring ); + explicit GeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, con= st GeoDataPolygon *polygon); + explicit GeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, con= st GeoDataLinearRing *ring); }; = } diff --git a/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.cpp b= /src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.cpp index 289d9e9..23572f9 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.cpp +++ b/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.cpp @@ -11,19 +11,19 @@ #include "GeoTrackGraphicsItem.h" = #include "GeoDataLineString.h" +#include "GeoDataPlacemark.h" #include "GeoDataTrack.h" -#include "GeoDataFeature.h" #include "MarbleDebug.h" #include "StyleBuilder.h" = using namespace Marble; = -GeoTrackGraphicsItem::GeoTrackGraphicsItem( const GeoDataFeature *feature,= const GeoDataTrack *track ) - : GeoLineStringGraphicsItem( feature, track->lineString() ) +GeoTrackGraphicsItem::GeoTrackGraphicsItem(const GeoDataPlacemark *placema= rk, const GeoDataTrack *track) : + GeoLineStringGraphicsItem(placemark, track->lineString()) { setTrack( track ); - if (feature) { - QString const paintLayer =3D QLatin1String("Track/") + StyleBuilde= r::visualCategoryName(feature->visualCategory()); + if (placemark) { + QString const paintLayer =3D QLatin1String("Track/") + StyleBuilde= r::visualCategoryName(placemark->visualCategory()); setPaintLayers(QStringList() << paintLayer); } } diff --git a/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.h b/s= rc/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.h index e80a610..9c0af4e 100644 --- a/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.h +++ b/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.h @@ -16,19 +16,20 @@ namespace Marble { = +class GeoDataPlacemark; class GeoDataTrack; = class MARBLE_EXPORT GeoTrackGraphicsItem : public GeoLineStringGraphicsItem { = public: - explicit GeoTrackGraphicsItem( const GeoDataFeature *feature, const Ge= oDataTrack *track ); - - void setTrack( const GeoDataTrack *track ); + explicit GeoTrackGraphicsItem(const GeoDataPlacemark *placemark, const= GeoDataTrack *track); = virtual void paint(GeoPainter *painter, const ViewportParams *viewport= , const QString &layer); = private: + void setTrack(const GeoDataTrack *track); + const GeoDataTrack *m_track; void update(); };