[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [marble] src/lib/marble/geodata/graphicsitem: accept GeoDataPlacemark rather than GeoDataFeature
From:       Bernhard Beschow <bbeschow () cs ! tu-berlin ! de>
Date:       2016-10-03 14:10:49
Message-ID: E1br3xB-0005FV-By () code ! kde ! org
[Download RAW message or body]

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/AbstractGeoPolygonGraphicsItem.cpp
M  +4    -4    src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.h
M  +49   -56   src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.cpp
M  +5    -5    src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.h
M  +6    -6    src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.cpp
M  +2    -1    src/lib/marble/geodata/graphicsitem/GeoLineStringGraphicsItem.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.cpp
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/AbstractGeoPolygonGraphicsItem.cpp \
b/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.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 GeoDataFeature \
                *feature, const GeoDataPolygon *polygon) :
-    GeoGraphicsItem(feature),
+AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const \
GeoDataPlacemark *placemark, const GeoDataPolygon *polygon) : +    \
GeoGraphicsItem(placemark),  m_polygon(polygon),
     m_ring(0)
 {
 }
 
-AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const GeoDataFeature \
                *feature, const GeoDataLinearRing *ring) :
-    GeoGraphicsItem(feature),
+AbstractGeoPolygonGraphicsItem::AbstractGeoPolygonGraphicsItem(const \
GeoDataPlacemark *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 GeoDataPlacemark \
&placemark)  {
     int elevation = 0;
 
-    if (feature.nodeType() == GeoDataTypes::GeoDataPlacemarkType) {
-        const GeoDataPlacemark *placemark = static_cast<const GeoDataPlacemark \
                *>(&feature);
-        const OsmPlacemarkData &osmData = placemark->osmData();
+    const OsmPlacemarkData &osmData = placemark.osmData();
 
-        const auto tagIter = osmData.findTag(QStringLiteral("ele"));
-        if (tagIter != osmData.tagsEnd()) {
-            elevation = tagIter.value().toInt();
-        }
+    const auto tagIter = osmData.findTag(QStringLiteral("ele"));
+    if (tagIter != osmData.tagsEnd()) {
+        elevation = tagIter.value().toInt();
     }
 
     return elevation;
diff --git a/src/lib/marble/geodata/graphicsitem/AbstractGeoPolygonGraphicsItem.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 *placemark, const GeoDataPolygon *polygon); +    explicit \
AbstractGeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, 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/BuildingGeoPolygonGraphicsItem.cpp \
b/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.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 GeoDataFeature \
*feature, +BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const \
                GeoDataPlacemark *placemark,
                                                                const GeoDataPolygon \
                *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::BuildingGeoPolygonGraphicsItem(const \
GeoDataFeat  setPaintLayers(paintLayers);
 }
 
-BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const GeoDataFeature \
*feature, +BuildingGeoPolygonGraphicsItem::BuildingGeoPolygonGraphicsItem(const \
                GeoDataPlacemark *placemark,
                                                                const \
                GeoDataLinearRing* 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::buildingOffset(const \
QPointF &point, con  return QPointF(shiftX, shiftY);
 }
 
-double BuildingGeoPolygonGraphicsItem::extractBuildingHeight(const GeoDataFeature \
*feature) +double BuildingGeoPolygonGraphicsItem::extractBuildingHeight(const \
GeoDataPlacemark &placemark)  {
     double height = 8.0;
 
-    if (feature->nodeType() == GeoDataTypes::GeoDataPlacemarkType) {
-        const GeoDataPlacemark *placemark = static_cast<const GeoDataPlacemark \
                *>(feature);
-        const OsmPlacemarkData &osmData = placemark->osmData();
-        QHash<QString, QString>::const_iterator tagIter;
-        if ((tagIter = osmData.findTag(QStringLiteral("height"))) != \
                osmData.tagsEnd()) {
-            /** @todo Also parse non-SI units, see \
                https://wiki.openstreetmap.org/wiki/Key:height#Height_of_buildings */
-            QString const heightValue = \
QString(tagIter.value()).remove(QStringLiteral(" meters")).remove(QStringLiteral(" \
                m"));
-            bool extracted = false;
-            double extractedHeight = heightValue.toDouble(&extracted);
-            if (extracted) {
-                height = extractedHeight;
-            }
-        } else if ((tagIter = osmData.findTag(QStringLiteral("building:levels"))) != \
                osmData.tagsEnd()) {
-            int const levels = tagIter.value().toInt();
-            int const skipLevels = \
                osmData.tagValue(QStringLiteral("building:min_level")).toInt();
-            /** @todo Is 35 as an upper bound for the number of levels sane? */
-            height = 3.0 * qBound(1, 1+levels-skipLevels, 35);
+    const OsmPlacemarkData &osmData = placemark.osmData();
+
+    QHash<QString, QString>::const_iterator tagIter;
+    if ((tagIter = osmData.findTag(QStringLiteral("height"))) != osmData.tagsEnd()) \
{ +        /** @todo Also parse non-SI units, see \
https://wiki.openstreetmap.org/wiki/Key:height#Height_of_buildings */ +        \
QString const heightValue = QString(tagIter.value()).remove(QStringLiteral(" \
meters")).remove(QStringLiteral(" m")); +        bool extracted = false;
+        double extractedHeight = heightValue.toDouble(&extracted);
+        if (extracted) {
+            height = extractedHeight;
         }
+    } else if ((tagIter = osmData.findTag(QStringLiteral("building:levels"))) != \
osmData.tagsEnd()) { +        int const levels = tagIter.value().toInt();
+        int const skipLevels = \
osmData.tagValue(QStringLiteral("building:min_level")).toInt(); +        /** @todo Is \
35 as an upper bound for the number of levels sane? */ +        height = 3.0 * \
qBound(1, 1+levels-skipLevels, 35);  }
 
     return qBound(1.0, height, 1000.0);
 }
 
-QString BuildingGeoPolygonGraphicsItem::extractBuildingLabel(const GeoDataFeature \
*feature) +QString BuildingGeoPolygonGraphicsItem::extractBuildingLabel(const \
GeoDataPlacemark &placemark)  {
-    if (feature->nodeType() == GeoDataTypes::GeoDataPlacemarkType) {
-        const GeoDataPlacemark *placemark = static_cast<const GeoDataPlacemark \
*>(feature); +    if (!placemark.name().isEmpty()) {
+        return placemark.name();
+    }
 
-        if (!placemark->name().isEmpty()) {
-            return placemark->name();
-        }
-        const OsmPlacemarkData &osmData = placemark->osmData();
-        auto tagIter = osmData.findTag(QStringLiteral("addr:housename"));
-        if (tagIter != osmData.tagsEnd()) {
-            return tagIter.value();
-        }
-        tagIter = osmData.findTag(QStringLiteral("addr:housenumber"));
-        if (tagIter != osmData.tagsEnd()) {
-            return tagIter.value();
-        }
+    const OsmPlacemarkData &osmData = placemark.osmData();
+
+    auto tagIter = osmData.findTag(QStringLiteral("addr:housename"));
+    if (tagIter != osmData.tagsEnd()) {
+        return tagIter.value();
+    }
+
+    tagIter = osmData.findTag(QStringLiteral("addr:housenumber"));
+    if (tagIter != osmData.tagsEnd()) {
+        return tagIter.value();
     }
 
     return QString();
 }
 
-QVector<BuildingGeoPolygonGraphicsItem::NamedEntry> \
BuildingGeoPolygonGraphicsItem::extractNamedEntries(const GeoDataFeature *feature) \
+QVector<BuildingGeoPolygonGraphicsItem::NamedEntry> \
BuildingGeoPolygonGraphicsItem::extractNamedEntries(const GeoDataPlacemark \
&placemark)  {
     QVector<NamedEntry> entries;
 
-    if (feature->nodeType() == GeoDataTypes::GeoDataPlacemarkType) {
-        const GeoDataPlacemark *placemark = static_cast<const GeoDataPlacemark \
                *>(feature);
-
-        const auto end = placemark->osmData().nodeReferencesEnd();
-        for (auto iter = placemark->osmData().nodeReferencesBegin(); iter != end; \
                ++iter) {
-            const auto tagIter = \
                iter.value().findTag(QStringLiteral("addr:housenumber"));
-            if (tagIter != iter.value().tagsEnd()) {
-                NamedEntry entry;
-                entry.point = iter.key();
-                entry.label = tagIter.value();
-                entries.push_back(entry);
-            }
+    const auto end = placemark.osmData().nodeReferencesEnd();
+    for (auto iter = placemark.osmData().nodeReferencesBegin(); iter != end; ++iter) \
{ +        const auto tagIter = \
iter.value().findTag(QStringLiteral("addr:housenumber")); +        if (tagIter != \
iter.value().tagsEnd()) { +            NamedEntry entry;
+            entry.point = iter.key();
+            entry.label = tagIter.value();
+            entries.push_back(entry);
         }
     }
 
diff --git a/src/lib/marble/geodata/graphicsitem/BuildingGeoPolygonGraphicsItem.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 \
AbstractGeoPolygonGraphicsItem  {
 public:
-    explicit BuildingGeoPolygonGraphicsItem(const GeoDataFeature *feature, const \
                GeoDataPolygon* polygon);
-    explicit BuildingGeoPolygonGraphicsItem(const GeoDataFeature *feature, const \
GeoDataLinearRing* ring); +    explicit BuildingGeoPolygonGraphicsItem(const \
GeoDataPlacemark *placemark, const GeoDataPolygon *polygon); +    explicit \
BuildingGeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, 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 GeoDataPolygon* \
                polygon,
                                QVector<QPolygonF*> &polygons,  QVector<QPolygonF*> \
                &outlines);
-    static double extractBuildingHeight(const GeoDataFeature *feature);
-    static QString extractBuildingLabel(const GeoDataFeature *feature);
-    static QVector<NamedEntry> extractNamedEntries(const GeoDataFeature *feature);
+    static double extractBuildingHeight(const GeoDataPlacemark &placemark);
+    static QString extractBuildingLabel(const GeoDataPlacemark &placemark);
+    static QVector<NamedEntry> 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 GeoDataLineString* \
                lineString )
-        : GeoGraphicsItem( feature ),
-          m_lineString( lineString )
+GeoLineStringGraphicsItem::GeoLineStringGraphicsItem(const GeoDataPlacemark \
*placemark, +                                                     const \
GeoDataLineString *lineString) : +    GeoGraphicsItem(placemark),
+    m_lineString(lineString)
 {
-    QString const category = \
StyleBuilder::visualCategoryName(feature->visualCategory()); +    QString const \
category = 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, const \
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 *placemark, const \
GeoDataPoint *point) : +    GeoGraphicsItem(placemark),
     m_point(point)
 {
-    if (feature) {
-        QString const paintLayer = QLatin1String("Point/") + \
StyleBuilder::visualCategoryName(feature->visualCategory()); +    if (placemark) {
+        QString const paintLayer = QLatin1String("Point/") + \
StyleBuilder::visualCategoryName(placemark->visualCategory());  \
setPaintLayers(QStringList() << paintLayer);  }
 }
diff --git a/src/lib/marble/geodata/graphicsitem/GeoPointGraphicsItem.h \
b/src/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 GeoDataPoint \
*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() == GeoDataFeature::Building) {
-        return new BuildingGeoPolygonGraphicsItem(feature, polygon);
+    if (placemark->visualCategory() == 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() == GeoDataFeature::Building) {
-        return new BuildingGeoPolygonGraphicsItem(feature, ring);
+    if (placemark->visualCategory() == GeoDataFeature::Building) {
+        return new BuildingGeoPolygonGraphicsItem(placemark, ring);
     }
-    return new GeoPolygonGraphicsItem(feature, ring);
+    return new GeoPolygonGraphicsItem(placemark, ring);
 }
 
 
-GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataFeature *feature, const \
                GeoDataPolygon *polygon) :
-    AbstractGeoPolygonGraphicsItem(feature, polygon)
+GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, \
const GeoDataPolygon *polygon) : +    AbstractGeoPolygonGraphicsItem(placemark, \
polygon)  {
-    const int elevation = extractElevation(*feature);
+    const int elevation = extractElevation(*placemark);
     setZValue(zValue() + elevation);
 
-    const GeoDataFeature::GeoDataVisualCategory visualCategory = \
feature->visualCategory(); +    const GeoDataFeature::GeoDataVisualCategory \
                visualCategory = placemark->visualCategory();
     const QString paintLayer = QLatin1String("Polygon/") + \
StyleBuilder::visualCategoryName(visualCategory);  \
setPaintLayers(QStringList(paintLayer));  }
 
-GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataFeature *feature, const \
                GeoDataLinearRing *ring) :
-    AbstractGeoPolygonGraphicsItem(feature, ring)
+GeoPolygonGraphicsItem::GeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, \
const GeoDataLinearRing *ring) : +    AbstractGeoPolygonGraphicsItem(placemark, ring)
 {
-    const int elevation = extractElevation(*feature);
+    const int elevation = extractElevation(*placemark);
     setZValue(zValue() + elevation);
 
-    const GeoDataFeature::GeoDataVisualCategory visualCategory = \
feature->visualCategory(); +    const GeoDataFeature::GeoDataVisualCategory \
                visualCategory = placemark->visualCategory();
     const QString paintLayer = 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 AbstractGeoPolygonGraphicsItem
 {
 public:
-    static AbstractGeoPolygonGraphicsItem* createGraphicsItem(const GeoDataFeature \
                *feature, const GeoDataPolygon *polygon);
-    static AbstractGeoPolygonGraphicsItem* createGraphicsItem(const GeoDataFeature \
*feature, const GeoDataLinearRing* ring); +    static AbstractGeoPolygonGraphicsItem \
*createGraphicsItem(const GeoDataPlacemark *placemark, const GeoDataPolygon \
*polygon); +    static AbstractGeoPolygonGraphicsItem *createGraphicsItem(const \
GeoDataPlacemark *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, const GeoDataPolygon *polygon); +    explicit \
GeoPolygonGraphicsItem(const GeoDataPlacemark *placemark, const 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 *placemark, const \
GeoDataTrack *track) : +    GeoLineStringGraphicsItem(placemark, track->lineString())
 {
     setTrack( track );
-    if (feature) {
-        QString const paintLayer = QLatin1String("Track/") + \
StyleBuilder::visualCategoryName(feature->visualCategory()); +    if (placemark) {
+        QString const paintLayer = QLatin1String("Track/") + \
StyleBuilder::visualCategoryName(placemark->visualCategory());  \
setPaintLayers(QStringList() << paintLayer);  }
 }
diff --git a/src/lib/marble/geodata/graphicsitem/GeoTrackGraphicsItem.h \
b/src/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 GeoDataTrack \
                *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();
 };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic