Modified MapEngine::removeStackedTiles.
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Fri, 16 Apr 2010 13:03:11 +0000 (16:03 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Fri, 16 Apr 2010 13:03:11 +0000 (16:03 +0300)
src/map/mapengine.cpp
src/map/mapengine.h

index 4751e40..d07bf47 100644 (file)
@@ -103,7 +103,7 @@ void MapEngine::mapImageReceived(const QUrl &url, const QPixmap &pixmap)
         mapTilesInScene.insert(tilePath(zoom, x, y), mapTile);
         m_mapScene->addMapTile(mapTile);
 
-//        removeStackedTiles(mapTile);
+        removeStackedTiles(mapTile);
    }
 }
 
@@ -209,34 +209,31 @@ void MapEngine::removeOldTiles()
          if (allTiles.contains(i.value()) && mapTilesInScene.contains(i.key())) {
              MapTile *tile = i.value();
              if (tile) {
-                 mapTilesInScene.remove(i.key());
-                 m_mapScene->removeItem(tile);
-                 delete tile;
+                mapTilesInScene.remove(i.key());
+                m_mapScene->removeItem(tile);
+                delete tile;
              }
          }
      }
 }
 
-void MapEngine::removeStackedTiles(MapTile *tile)
+void MapEngine::removeStackedTiles(MapTile *newTile)
 {
-    QList<QGraphicsItem *> collidingItems = tile->collidingItems(Qt::IntersectsItemBoundingRect);
-
-    foreach (QGraphicsItem *item, collidingItems) {
-        if (item != tile) {
-            QRectF itemSceneRect = item->mapRectToScene(item->boundingRect());
-            QList<QGraphicsItem *> stackedItems = m_mapScene->items(itemSceneRect, Qt::IntersectsItemBoundingRect);
-
-            foreach(QGraphicsItem *stackedItem, stackedItems) {
-                if (item != stackedItem) {
-                    MapTile *tmp = dynamic_cast<MapTile *>(item);
-                    if (tmp) {
-                        m_mapScene->removeItem(tmp);
-                        mapTilesInScene.remove(tilePath(tmp->zoomLevel(), tmp->x(), tmp->y()));
-                    }
-                }
-            }
+    QRectF newTileSceneRect = newTile->mapRectToScene(newTile->boundingRect());
+
+    QList<QGraphicsItem *> collidingItems = newTile->collidingItems(Qt::IntersectsItemBoundingRect);
+
+    foreach (QGraphicsItem *collidingItem, collidingItems) {
+
+        QRectF collidingItemSceneRect = collidingItem->mapRectToScene(collidingItem->boundingRect());
+
+        if (collidingItem->isObscured(collidingItemSceneRect)) {
+            qDebug() << "Hep";
         }
+
     }
+//    qDebug() << "mapTilesInScene: " << mapTilesInScene.count();
+//    qDebug() << "m_mapScene: " << m_mapScene->items().count();
 }
 
 void MapEngine::viewResized(const QSize &size)
index f42ad2a..53ec32f 100644 (file)
@@ -210,9 +210,9 @@ private:
     * Iterate through tiles which are under this map tile and remove obscured
     * tiles.
     *
-    * @param tile new tile covering old tiles
+    * @param newTile new tile covering old tiles
     */
-    void removeStackedTiles(MapTile *tile);
+    void removeStackedTiles(MapTile *newTile);
 
     /**
     * @brief Check if center tile has changed.