[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