From a802fd74e010a6d8ebfc2243232e0373d67f3df6 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 29 Aug 2019 17:22:29 -0500 Subject: Minor fixes for QSprite* classes * Fix off-by-one errors * Allow non-integer cell sizes Change-Id: I081cb5050a6805cbc9183fb2a7a1ee07b5594187 Reviewed-by: Mike Krus --- src/extras/defaults/qspritegrid.cpp | 6 +++--- src/extras/defaults/qspritegrid_p.h | 2 +- src/extras/defaults/qspritesheet.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/extras/defaults/qspritegrid.cpp b/src/extras/defaults/qspritegrid.cpp index 31d4dd5c0..15016a891 100644 --- a/src/extras/defaults/qspritegrid.cpp +++ b/src/extras/defaults/qspritegrid.cpp @@ -57,7 +57,7 @@ QSpriteGridPrivate::QSpriteGridPrivate() int QSpriteGridPrivate::maxIndex() const { - return m_numColumns * m_numRows; + return m_numColumns * m_numRows - 1; } void QSpriteGridPrivate::updateSizes() @@ -65,10 +65,10 @@ void QSpriteGridPrivate::updateSizes() Q_Q(QSpriteGrid); if (m_texture && m_numColumns && m_numRows) { m_textureSize = QSize(m_texture->width(), m_texture->height()); - m_cellSize = QSize(m_texture->width() / m_numColumns, m_texture->height() / m_numRows); + m_cellSize = QSizeF((float) m_texture->width() / m_numColumns, (float) m_texture->height() / m_numRows); } else { m_textureSize = QSize(); - m_cellSize = QSize(); + m_cellSize = QSizeF(); } if (m_cellSize.isEmpty() || m_numColumns == 0 || m_numRows == 0) { diff --git a/src/extras/defaults/qspritegrid_p.h b/src/extras/defaults/qspritegrid_p.h index 6135ebf0d..8d05b2bcc 100644 --- a/src/extras/defaults/qspritegrid_p.h +++ b/src/extras/defaults/qspritegrid_p.h @@ -69,7 +69,7 @@ class QSpriteGridPrivate : public QAbstractSpriteSheetPrivate int m_numColumns; int m_numRows; - QSize m_cellSize; + QSizeF m_cellSize; Q_DECLARE_PUBLIC(QSpriteGrid) }; diff --git a/src/extras/defaults/qspritesheet.cpp b/src/extras/defaults/qspritesheet.cpp index 87f664ce4..8eb1e33e6 100644 --- a/src/extras/defaults/qspritesheet.cpp +++ b/src/extras/defaults/qspritesheet.cpp @@ -56,7 +56,7 @@ QSpriteSheetPrivate::QSpriteSheetPrivate() int QSpriteSheetPrivate::maxIndex() const { - return m_sprites.count(); + return m_sprites.count() - 1; } void QSpriteSheetPrivate::updateSizes() @@ -77,7 +77,7 @@ void QSpriteSheetPrivate::updateSizes() return; } - if (m_currentIndex < 0 || m_currentIndex > m_sprites.size()) { + if (m_currentIndex < 0 || m_currentIndex >= m_sprites.size()) { m_currentIndex = 0; emit q->currentIndexChanged(m_currentIndex); } -- cgit v1.2.3