aboutsummaryrefslogtreecommitdiffstats
path: root/src/qtquick1/graphicsitems
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2011-07-20 12:56:38 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-26 04:46:56 +0200
commit245b16b4fb50620aaf49683eb85a93807defea6a (patch)
treeec29ba72f65871f9b855ba063b354d77e24f834a /src/qtquick1/graphicsitems
parent6d2c0aa9f6a0c3e1f21d3ab2abbe2b7e4e778cc4 (diff)
Bounding rectangle for image is wrong for PreserveAspectCrop
Task-number: QTBUG-20300 Change-Id: I8aa84ec64f7be536e56cdc1c04a6c2f204e06c26 Reviewed-on: http://codereview.qt.nokia.com/1859 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/qtquick1/graphicsitems')
-rw-r--r--src/qtquick1/graphicsitems/qdeclarativeimage.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/qtquick1/graphicsitems/qdeclarativeimage.cpp b/src/qtquick1/graphicsitems/qdeclarativeimage.cpp
index 89df7abf08..4e2cd10218 100644
--- a/src/qtquick1/graphicsitems/qdeclarativeimage.cpp
+++ b/src/qtquick1/graphicsitems/qdeclarativeimage.cpp
@@ -446,7 +446,22 @@ void QDeclarative1Image::geometryChanged(const QRectF &newGeometry, const QRectF
QRectF QDeclarative1Image::boundingRect() const
{
Q_D(const QDeclarative1Image);
- return QRectF(0, 0, qMax(d->mWidth, d->paintedWidth), qMax(d->mHeight, d->paintedHeight));
+ QRectF boundingRect(0, 0, qMax(d->mWidth, d->paintedWidth), qMax(d->mHeight, d->paintedHeight));
+
+ if (d->fillMode == PreserveAspectCrop) {
+ if (!d->pix.width() || !d->pix.height())
+ return boundingRect;
+ qreal widthScale = width() / qreal(d->pix.width());
+ qreal heightScale = height() / qreal(d->pix.height());
+ if (widthScale < heightScale) {
+ widthScale = heightScale;
+ boundingRect.moveTo((width() - widthScale * d->pix.width()) / 2, 0);
+ } else if (heightScale < widthScale) {
+ heightScale = widthScale;
+ boundingRect.moveTo(0, (height() - heightScale * d->pix.height()) / 2);
+ }
+ }
+ return boundingRect;
}
/*!