void BombExplosionItem::updateGraphics(qreal svgScaleFactor) { if(scene()->views().isEmpty()) { return; } //calculate the size of the item on the view QPoint viewTopLeft = scene()->views().first()->mapFromScene(0, 0); QPoint viewBottomRight = scene()->views().first()->mapFromScene(m_itemSizeSet.width(), m_itemSizeSet.height()); int viewWidth = viewBottomRight.x() - viewTopLeft.x(); int viewHeight = viewBottomRight.y() - viewTopLeft.y(); //for better alignment, if the item size is different from the cell size, make the difference between the cell size and item size always even if(m_itemSizeSet.width() != Granatier::CellSize || m_itemSizeSet.height() != Granatier::CellSize) { viewBottomRight = scene()->views().first()->mapFromScene(Granatier::CellSize, Granatier::CellSize); int viewCellWidth = viewBottomRight.x() - viewTopLeft.x(); int viewCellHeight = viewBottomRight.y() - viewTopLeft.y(); if((viewCellWidth - viewWidth) % 2 != 0) { viewWidth--; } if((viewCellHeight - viewHeight) % 2 != 0) { viewHeight--; } //calculate the real item size after change of the render size QPointF sceneTopLeft = scene()->views().first()->mapToScene(0, 0); QPointF sceneBottomRight = scene()->views().first()->mapToScene(viewWidth, viewHeight); qreal sceneWidth = sceneBottomRight.x() - sceneTopLeft.x(); qreal sceneHeight = sceneBottomRight.y() - sceneTopLeft.y(); m_itemSizeReal = QSize(sceneWidth, sceneHeight); } setRenderSize(QSize(viewWidth, viewHeight)); setScale(svgScaleFactor); m_svgScaleFactor = svgScaleFactor; QTransform transform; transform.translate(m_itemSizeSet.width() / 2.0, m_itemSizeSet.height() / 2.0); setRenderSize(renderSize()); transform.translate(-m_itemSizeReal.width() / 2.0, -m_itemSizeReal.height() / 2.0); setTransform(transform); }
void PatienceView::resizeEvent( QResizeEvent * e ) { QGraphicsView::resizeEvent( e ); setRenderSize( e->size() ); resetCachedContent(); updateSceneSize(); }
void MessageBox::setSize( const QSize & size ) { if ( size != renderSize() ) { setRenderSize( size ); m_fontCached = false; } }
void KBounceBall::resize( const QSize& tileSize ) { qDebug() << "New size:" << tileSize; m_size.setWidth( static_cast<int>( BALL_RELATIVE_SIZE * tileSize.width() ) ); m_size.setHeight( static_cast<int> ( BALL_RELATIVE_SIZE * tileSize.height() ) ); setRenderSize(m_size); setPos( m_board->mapPosition( QPointF( m_xPos, m_yPos ) ) ); }
void Explodable::resize(const QSize& tileSize) { m_lastSize = tileSize; if (m_state == Moving) { setRenderSize(QSize( m_relativeWidth * tileSize.width(), m_relativeHeight * tileSize.height() )); } else { setRenderSize(QSize( EXPLOSION_RELATIVE_SIZE_W * tileSize.width(), EXPLOSION_RELATIVE_SIZE_H * tileSize.height() )); } setPos(m_board->mapPosition(QPointF(m_xPos, m_yPos))); }
BombExplosionItem::BombExplosionItem(Bomb* p_model, Granatier::Direction::Type direction, int bombPower, KGameRenderer* renderer, qreal svgScaleFactor) : KGameRenderedItem(renderer, QStringLiteral("")) { m_direction = direction; m_explosionID = p_model->explosionID(); m_svgScaleFactor = svgScaleFactor; QString strElemetId; int width = 1; int height = 1; switch(m_direction) { case Granatier::Direction::NORTH: setSpriteKey(QStringLiteral("bomb_blast_north_0")); width = Granatier::CellSize * 0.5; height = Granatier::CellSize * 1.5; break; case Granatier::Direction::EAST: setSpriteKey(QStringLiteral("bomb_blast_east_0")); width = Granatier::CellSize * 1.5; height = Granatier::CellSize * 0.5; break; case Granatier::Direction::SOUTH: setSpriteKey(QStringLiteral("bomb_blast_south_0")); width = Granatier::CellSize * 0.5; height = Granatier::CellSize * 1.5; break; case Granatier::Direction::WEST: setSpriteKey(QStringLiteral("bomb_blast_west_0")); width = Granatier::CellSize * 1.5; height = Granatier::CellSize * 0.5; break; } if((static_cast<int>(Granatier::CellSize) - width) % 2 != 0) { width--; } if((static_cast<int>(Granatier::CellSize) - height) % 2 != 0) { height--; } m_itemSizeSet = QSize(width, height); QSize svgSize = m_itemSizeSet / m_svgScaleFactor; setRenderSize(svgSize); setScale(m_svgScaleFactor); setZValue(303 + bombPower); }
Explodable::Explodable(const QString& mainSvg, const QString& explosionSvg, qreal relativeWidth, qreal relativeHeight, KGameRenderer *renderer, BomberBoard *board) : KGameRenderedItem(renderer, mainSvg), m_board(board), m_mainSvg( mainSvg), m_explosionSvg(explosionSvg) { setRenderSize(QSize(32, 64)); m_relativeWidth = relativeWidth; m_relativeHeight = relativeHeight; resetPixmaps(); m_state = Moving; m_nextBoundingRect.setSize(QSizeF(m_relativeWidth, m_relativeHeight)); setPos(m_board->mapPosition(QPointF(m_xPos, m_yPos))); }
void TextItem::loadSprite() { updateScale(); setRenderSize(QSize(qRound(m_scale*width), qRound(m_scale*height))); int w = qRound(m_scale*width); int h = qRound(m_scale*height); QPixmap pixmap(QSize(w, h)); pixmap.fill(Qt::transparent); QPainter p(&pixmap); int fontSize = fontUtils::fontSize(p, m_text, qRound(w*0.8), h, fontUtils::DoNotAllowWordWrap); p.setPen(QColor(255, 255, 255, 220)); p.setFont(QFont("Helvetica", fontSize, QFont::Bold)); p.drawText(QRectF(0, 0, w, h), Qt::AlignCenter, m_text); m_textPixmap.setPixmap(pixmap); repaint(); }
void Tagaro::Scene::Private::updateRenderSize(const QSize& sceneSize) { setRenderSize(m_renderSize.isValid() ? m_renderSize : sceneSize); }