From c761a1078e6fb49713e93c7790af7fcf472a72f4 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Fri, 17 Aug 2012 18:19:14 +0200 Subject: [PATCH] same fillMode behavior as Image --- declarativeimports/qtextracomponents/qimageitem.cpp | 11 ++++++----- declarativeimports/qtextracomponents/qpixmapitem.cpp | 9 +++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/declarativeimports/qtextracomponents/qimageitem.cpp b/declarativeimports/qtextracomponents/qimageitem.cpp index 45505e5cb..dc28ee5ee 100644 --- a/declarativeimports/qtextracomponents/qimageitem.cpp +++ b/declarativeimports/qtextracomponents/qimageitem.cpp @@ -105,6 +105,7 @@ void QImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option painter->setRenderHint(QPainter::Antialiasing, m_smooth); painter->setRenderHint(QPainter::SmoothPixmapTransform, m_smooth); + QRect sourceRect = m_image.rect(); QRect destRect; switch (m_fillMode) { case PreserveAspectFit: { @@ -112,13 +113,13 @@ void QImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option scaled.scale(boundingRect().size().toSize(), Qt::KeepAspectRatio); destRect = QRect(QPoint(0, 0), scaled); + destRect.moveCenter(boundingRect().center().toPoint()); break; } case PreserveAspectCrop: { - painter->setClipRect(boundingRect(), Qt::IntersectClip); - QSize scaled = m_image.size(); - scaled.scale(boundingRect().size().toSize(), Qt::KeepAspectRatioByExpanding); - destRect = QRect(QPoint(0, 0), scaled); + destRect = boundingRect().toRect(); + sourceRect = destRect; + sourceRect.moveCenter(m_image.rect().center()); break; } case TileVertically: { @@ -142,7 +143,7 @@ void QImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option if (m_fillMode >= Tile) { painter->drawTiledPixmap(destRect, QPixmap::fromImage(m_image)); } else { - painter->drawImage(destRect, m_image, m_image.rect()); + painter->drawImage(destRect, m_image, sourceRect); } painter->restore(); diff --git a/declarativeimports/qtextracomponents/qpixmapitem.cpp b/declarativeimports/qtextracomponents/qpixmapitem.cpp index 38a01de6f..9ef552136 100644 --- a/declarativeimports/qtextracomponents/qpixmapitem.cpp +++ b/declarativeimports/qtextracomponents/qpixmapitem.cpp @@ -105,6 +105,7 @@ void QPixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio painter->setRenderHint(QPainter::Antialiasing, m_smooth); painter->setRenderHint(QPainter::SmoothPixmapTransform, m_smooth); + QRect sourceRect = m_pixmap.rect(); QRect destRect; switch (m_fillMode) { case PreserveAspectFit: { @@ -112,13 +113,13 @@ void QPixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio scaled.scale(boundingRect().size().toSize(), Qt::KeepAspectRatio); destRect = QRect(QPoint(0, 0), scaled); + destRect.moveCenter(boundingRect().center().toPoint()); break; } case PreserveAspectCrop: { - painter->setClipRect(boundingRect(), Qt::IntersectClip); - QSize scaled = m_pixmap.size(); - scaled.scale(boundingRect().size().toSize(), Qt::KeepAspectRatioByExpanding); - destRect = QRect(QPoint(0, 0), scaled); + destRect = boundingRect().toRect(); + sourceRect = destRect; + sourceRect.moveCenter(m_pixmap.rect().center()); break; } case TileVertically: {