Example #1
0
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);
}
Example #2
0
File: view.cpp Project: KDE/kpat
void PatienceView::resizeEvent( QResizeEvent * e )
{
    QGraphicsView::resizeEvent( e );
    setRenderSize( e->size() );
    resetCachedContent();
    updateSceneSize();
}
Example #3
0
void MessageBox::setSize( const QSize & size )
{
    if ( size != renderSize() )
    {
        setRenderSize( size );
        m_fontCached = false;
    }
}
Example #4
0
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)));
}
Example #6
0
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)));
}
Example #8
0
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();
}
Example #9
0
void Tagaro::Scene::Private::updateRenderSize(const QSize& sceneSize)
{
	setRenderSize(m_renderSize.isValid() ? m_renderSize : sceneSize);
}