diff options
author | Joni Poikelin <joni.poikelin@digia.com> | 2014-11-20 14:10:03 +0200 |
---|---|---|
committer | Joni Poikelin <joni.poikelin@digia.com> | 2014-11-21 11:14:34 +0100 |
commit | a758382b93ba83a68da8aaf695f52bb2263bb19b (patch) | |
tree | 07d9861cca558009e00c8230dc93c557d23fe22d /src/quick/items/qquickanimatedsprite.cpp | |
parent | a29337be6ea54557498202ee99df1325238ea19a (diff) |
Fix multirow spritesheet rendering in paused state
Task-number: QTBUG-42777
Change-Id: I8027f100c593ae7c57df7c952e66cc2b3fae1dd9
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/quick/items/qquickanimatedsprite.cpp')
-rw-r--r-- | src/quick/items/qquickanimatedsprite.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/quick/items/qquickanimatedsprite.cpp b/src/quick/items/qquickanimatedsprite.cpp index f1201cf549..5ca17aecec 100644 --- a/src/quick/items/qquickanimatedsprite.cpp +++ b/src/quick/items/qquickanimatedsprite.cpp @@ -625,8 +625,25 @@ void QQuickAnimatedSprite::prepareNextFrame() qreal w = m_spriteEngine->spriteWidth() / m_sheetSize.width(); qreal h = m_spriteEngine->spriteHeight() / m_sheetSize.height(); - qreal x1 = m_spriteEngine->spriteX() / m_sheetSize.width() + frameAt * w; - qreal y1 = m_spriteEngine->spriteY() / m_sheetSize.height(); + qreal x1; + qreal y1; + if (m_paused) { + int spriteY = m_spriteEngine->spriteY(); + if (reverse) { + int rows = m_spriteEngine->maxFrames() * m_spriteEngine->spriteWidth() / m_sheetSize.width(); + spriteY -= rows * m_spriteEngine->spriteHeight(); + frameAt = (frameCount - 1) - frameAt; + } + + int position = frameAt * m_spriteEngine->spriteWidth() + m_spriteEngine->spriteX(); + int row = position / m_sheetSize.width(); + + x1 = (position - (row * m_sheetSize.width())) / m_sheetSize.width(); + y1 = (row * m_spriteEngine->spriteHeight() + spriteY) / m_sheetSize.height(); + } else { + x1 = m_spriteEngine->spriteX() / m_sheetSize.width() + frameAt * w; + y1 = m_spriteEngine->spriteY() / m_sheetSize.height(); + } //### hard-coded 0/1 work because we are the only // images in the sprite sheet (without this we cannot assume |