diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2019-12-23 08:39:26 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-01-30 19:16:48 +0100 |
commit | f7647d5adaaed4c651cb2e65c7ce66d7ef6639f1 (patch) | |
tree | a121b8cb94b63e5b871f5b329e621707114c0cdd /src/quick/items/qquickimagebase.cpp | |
parent | 9cc4568de330e0075c960a5431ecd69a1f9a761d (diff) |
Add Image.sourceClipRect property
Since we set sourceSize, we expect to use that coordinate system in
sourceClipRect too. Therefore we use QImageReader::setScaledClipRect(),
not setClipRect().
[ChangeLog][QtQuick][Image] Image now has a sourceClipRect property
to render a clipped image from a region of the sourceSize.
Change-Id: If08277df772c2ab1063dd88572e49de41b97bca4
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'src/quick/items/qquickimagebase.cpp')
-rw-r--r-- | src/quick/items/qquickimagebase.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/quick/items/qquickimagebase.cpp b/src/quick/items/qquickimagebase.cpp index 20454fb919..2118f67387 100644 --- a/src/quick/items/qquickimagebase.cpp +++ b/src/quick/items/qquickimagebase.cpp @@ -167,6 +167,29 @@ void QQuickImageBase::resetSourceSize() setSourceSize(QSize()); } +QRectF QQuickImageBase::sourceClipRect() const +{ + Q_D(const QQuickImageBase); + return d->sourceClipRect; +} + +void QQuickImageBase::setSourceClipRect(const QRectF &r) +{ + Q_D(QQuickImageBase); + if (d->sourceClipRect == r) + return; + + d->sourceClipRect = r; + emit sourceClipRectChanged(); + if (isComponentComplete()) + load(); +} + +void QQuickImageBase::resetSourceClipRect() +{ + setSourceClipRect(QRect()); +} + bool QQuickImageBase::cache() const { Q_D(const QQuickImageBase); @@ -295,7 +318,7 @@ void QQuickImageBase::loadPixmap(const QUrl &url, LoadPixmapOptions loadOptions) d->pix.load(qmlEngine(this), loadUrl, - QRect(), + d->sourceClipRect.toRect(), (loadOptions & HandleDPR) ? d->sourcesize * d->devicePixelRatio : QSize(), options, (loadOptions & UseProviderOptions) ? d->providerOptions : QQuickImageProviderOptions(), |