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

List:       kde-commits
Subject:    KDE/kdegames/granatier/src
From:       Mathias Kraus <k.hias () gmx ! de>
Date:       2011-04-03 20:55:20
Message-ID: 20110403205520.DA796AC8D1 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1226984 by mkraus:

fix visual bug in the infosidebar introduced with the port to KGameRenderer

 M  +0 -2      arenaitem.cpp  
 M  +0 -2      bombexplosionitem.cpp  
 M  +0 -2      elementitem.cpp  
 M  +2 -0      gamescene.cpp  
 M  +164 -1    infosidebar.cpp  
 M  +9 -0      infosidebar.h  


--- trunk/KDE/kdegames/granatier/src/arenaitem.cpp #1226983:1226984
@@ -49,8 +49,6 @@
     svgSize.setHeight(bottomRight.y() - topLeft.y());
     svgSize.setWidth(bottomRight.x() - topLeft.x());
     
-    //TODO: squeeze into a hard pixel grid
-    //m_arenaItem[i][j]->setRenderSize(QSize(Cell::SIZE / m_SvgScaleFactor, \
Cell::SIZE / m_SvgScaleFactor));  setRenderSize(svgSize);
     setScale(svgScaleFactor);
 }
--- trunk/KDE/kdegames/granatier/src/bombexplosionitem.cpp #1226983:1226984
@@ -138,8 +138,6 @@
     svgSize.setHeight(bottomRight.y() - topLeft.y());
     svgSize.setWidth(bottomRight.x() - topLeft.x());
     
-    //TODO: squeeze into a hard pixel grid
-    //m_arenaItem[i][j]->setRenderSize(QSize(Cell::SIZE / m_SvgScaleFactor, \
Cell::SIZE / m_SvgScaleFactor));  setRenderSize(svgSize);
     setScale(svgScaleFactor);
 }
--- trunk/KDE/kdegames/granatier/src/elementitem.cpp #1226983:1226984
@@ -81,8 +81,6 @@
     svgSize.setHeight(bottomRight.y() - topLeft.y());
     svgSize.setWidth(bottomRight.x() - topLeft.x());
     
-    //TODO: squeeze into a hard pixel grid
-    //m_arenaItem[i][j]->setRenderSize(QSize(Cell::SIZE / m_SvgScaleFactor, \
Cell::SIZE / m_SvgScaleFactor));  setRenderSize(svgSize);
     setScale(svgScaleFactor);
 }
--- trunk/KDE/kdegames/granatier/src/gamescene.cpp #1226983:1226984
@@ -192,6 +192,8 @@
     
     // create the info sidebar
     m_infoSidebar = new InfoSidebar(m_game, this);
+    connect(this, SIGNAL(resizeGraphics(qreal)), m_infoSidebar, \
SLOT(updateGraphics(qreal))); +    
     //update the sceneRect
     QRectF oldSceneRect = sceneRect();
     QRectF sidebarRect = m_infoSidebar->rect();
--- trunk/KDE/kdegames/granatier/src/infosidebar.cpp #1226983:1226984
@@ -23,6 +23,7 @@
 #include "cell.h"
 
 #include <QGraphicsScene>
+#include <QGraphicsView>
 #include <QGraphicsRectItem>
 #include <QTimer>
 #include <KLocale>
@@ -35,6 +36,7 @@
 {
     m_game = p_game;
     m_gameScene = p_scene;
+    m_svgScaleFactor = 1;
     
     QList <Player*> playerList = m_game->getPlayers();
     int nMaxPlayerNameLength = 0;
@@ -447,15 +449,176 @@
                     
                     //hide the dimm overlay
                     m_mapBadBonusDimm.value(player)->setVisible(false);
+                    
+                    //calculate graphics size
+                    QSize svgSize;
+                    QPoint topLeft(0, 0);
+                    topLeft = m_gameScene->views().at(0)->mapFromScene(topLeft);
+                    QGraphicsRectItem* rectItem;
+                    QRectF rect;
+                    
+                    svgSize = \
renderer->boundsOnSprite(m_mapBadBonusSvgs.value(player)->spriteKey()).size().toSize();
 +                    
+                    QPoint bottomRight(svgSize.width(), svgSize.height()); 
+                    bottomRight = \
m_gameScene->views().at(0)->mapFromScene(bottomRight); +                    
+                    svgSize.setHeight(bottomRight.y() - topLeft.y());
+                    svgSize.setWidth(bottomRight.x() - topLeft.x());
+                    
+                    m_mapBadBonusSvgs.value(player)->setRenderSize(svgSize * 0.5);
+                    m_mapBadBonusSvgs.value(player)->setScale(m_svgScaleFactor);
+                    
+                    rectItem = m_mapBadBonusDimm.value(player);
+                    rect = rectItem->rect();
+                    rect.setWidth(svgSize.width() * 0.5 * m_svgScaleFactor +1);
+                    rect.setHeight(svgSize.height() * 0.5 * m_svgScaleFactor +1);
+                    rectItem->setRect(rect);
                 }
             }
             else
             {
                 m_mapBadBonusDimm.value(player)->setVisible(true);
                 QRectF rect = m_mapBadBonusDimm.value(player)->rect();
-                rect.setHeight((m_mapBadBonusSvgs.value(player)->boundingRect().height()/2.0+1) \
* percentageElapsed/100.0); +                rect.setHeight(rect.width() * \
percentageElapsed/100.0);  m_mapBadBonusDimm.value(player)->setRect(rect);
             }
             break;
     }
 }
+
+void InfoSidebar::updateGraphics(qreal svgScaleFactor)
+{
+    if(m_gameScene->views().isEmpty())
+    {
+        return;
+    }
+    
+    KGameRenderer* renderer;
+    QSize svgSize;
+    QPoint topLeft(0, 0);
+    topLeft = m_gameScene->views().at(0)->mapFromScene(topLeft);
+    QGraphicsRectItem* rectItem;
+    QRectF rect;
+    
+    m_svgScaleFactor = svgScaleFactor;
+    
+    //update player
+    QMap <Player*, KGameRenderedItem*>::iterator i = m_mapPlayerSvgs.begin();
+    while (i != m_mapPlayerSvgs.end())
+    {
+        renderer = m_gameScene->renderer(Element::PLAYER, i.key());
+    
+        svgSize = renderer->boundsOnSprite(i.value()->spriteKey()).size().toSize();
+        
+        QPoint bottomRight(svgSize.width(), svgSize.height()); 
+        bottomRight = m_gameScene->views().at(0)->mapFromScene(bottomRight);
+        
+        svgSize.setHeight(bottomRight.y() - topLeft.y());
+        svgSize.setWidth(bottomRight.x() - topLeft.x());
+        
+        i.value()->setRenderSize(svgSize * 0.5);
+        i.value()->setScale(m_svgScaleFactor);
+        
+        i++;
+    }
+    
+    //update bonus throw
+    i = m_mapBonusThrowSvgs.begin();
+    while (i != m_mapBonusThrowSvgs.end())
+    {
+        renderer = m_gameScene->renderer(Element::BONUS);
+        
+        svgSize = renderer->boundsOnSprite(i.value()->spriteKey()).size().toSize();
+        
+        QPoint bottomRight(svgSize.width(), svgSize.height()); 
+        bottomRight = m_gameScene->views().at(0)->mapFromScene(bottomRight);
+        
+        svgSize.setHeight(bottomRight.y() - topLeft.y());
+        svgSize.setWidth(bottomRight.x() - topLeft.x());
+        
+        i.value()->setRenderSize(svgSize * 0.5);
+        i.value()->setScale(m_svgScaleFactor);
+        
+        rectItem = m_mapBonusThrowDimm.value(i.key());
+        rect = rectItem->rect();
+        rect.setWidth(svgSize.width() * 0.5 * m_svgScaleFactor +1);
+        rect.setHeight(svgSize.height() * 0.5 * m_svgScaleFactor +1);
+        rectItem->setRect(rect);
+        i++;
+    }
+    
+    //update bonus kick
+    i = m_mapBonusKickSvgs.begin();
+    while (i != m_mapBonusKickSvgs.end())
+    {
+        renderer = m_gameScene->renderer(Element::BONUS);
+    
+        svgSize = renderer->boundsOnSprite(i.value()->spriteKey()).size().toSize();
+        
+        QPoint bottomRight(svgSize.width(), svgSize.height()); 
+        bottomRight = m_gameScene->views().at(0)->mapFromScene(bottomRight);
+        
+        svgSize.setHeight(bottomRight.y() - topLeft.y());
+        svgSize.setWidth(bottomRight.x() - topLeft.x());
+        
+        i.value()->setRenderSize(svgSize * 0.5);
+        i.value()->setScale(m_svgScaleFactor);
+        
+        rectItem = m_mapBonusKickDimm.value(i.key());
+        rect = rectItem->rect();
+        rect.setWidth(svgSize.width() * 0.5 * m_svgScaleFactor +1);
+        rect.setHeight(svgSize.height() * 0.5 * m_svgScaleFactor +1);
+        rectItem->setRect(rect);
+        i++;
+    }
+    
+    //update bonus shield
+    i = m_mapBonusShieldSvgs.begin();
+    while (i != m_mapBonusShieldSvgs.end())
+    {
+        renderer = m_gameScene->renderer(Element::BONUS);
+    
+        svgSize = renderer->boundsOnSprite(i.value()->spriteKey()).size().toSize();
+        
+        QPoint bottomRight(svgSize.width(), svgSize.height()); 
+        bottomRight = m_gameScene->views().at(0)->mapFromScene(bottomRight);
+        
+        svgSize.setHeight(bottomRight.y() - topLeft.y());
+        svgSize.setWidth(bottomRight.x() - topLeft.x());
+        
+        i.value()->setRenderSize(svgSize * 0.5);
+        i.value()->setScale(m_svgScaleFactor);
+        
+        rectItem = m_mapBonusShieldDimm.value(i.key());
+        rect = rectItem->rect();
+        rect.setWidth(svgSize.width() * 0.5 * m_svgScaleFactor +1);
+        rect.setHeight(svgSize.height() * 0.5 * m_svgScaleFactor +1);
+        rectItem->setRect(rect);
+        i++;
+    }
+    
+    //update bad bonus
+    i = m_mapBadBonusSvgs.begin();
+    while (i != m_mapBadBonusSvgs.end())
+    {
+        renderer = m_gameScene->renderer(Element::BONUS);
+    
+        svgSize = renderer->boundsOnSprite(i.value()->spriteKey()).size().toSize();
+        
+        QPoint bottomRight(svgSize.width(), svgSize.height()); 
+        bottomRight = m_gameScene->views().at(0)->mapFromScene(bottomRight);
+        
+        svgSize.setHeight(bottomRight.y() - topLeft.y());
+        svgSize.setWidth(bottomRight.x() - topLeft.x());
+        
+        i.value()->setRenderSize(svgSize * 0.5);
+        i.value()->setScale(m_svgScaleFactor);
+        
+        rectItem = m_mapBadBonusDimm.value(i.key());
+        rect = rectItem->rect();
+        rect.setWidth(svgSize.width() * 0.5 * m_svgScaleFactor +1);
+        rect.setHeight(svgSize.height() * 0.5 * m_svgScaleFactor +1);
+        rectItem->setRect(rect);
+        i++;
+    }
+}
--- trunk/KDE/kdegames/granatier/src/infosidebar.h #1226983:1226984
@@ -59,6 +59,8 @@
     
     QGraphicsRectItem* m_background;
 
+    qreal m_svgScaleFactor;
+
 public:
 
     /**
@@ -92,6 +94,13 @@
       * @param percentageElapsed the bad bonus time that has elapsed
       */
     void bonusInfoChanged(Player* player, Bonus::BonusType bonusType, int \
percentageElapsed); +    
+public slots:
+    /**
+     * Updates the graphics after a resize
+     * @param svgScaleFactor the scaling factor between svg and rendered pixmap
+     */
+    virtual void updateGraphics(qreal svgScaleFactor);
 };
 
 #endif


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

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