diff options
Diffstat (limited to 'src/quick/items/qquickimagebase.cpp')
-rw-r--r-- | src/quick/items/qquickimagebase.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/quick/items/qquickimagebase.cpp b/src/quick/items/qquickimagebase.cpp index b54c34765f..8fba6e3d12 100644 --- a/src/quick/items/qquickimagebase.cpp +++ b/src/quick/items/qquickimagebase.cpp @@ -195,6 +195,10 @@ void QQuickImageBase::load() d->oldSourceSize = sourceSize(); emit sourceSizeChanged(); } + if (autoTransform() != d->oldAutoTransform) { + d->oldAutoTransform = autoTransform(); + emit autoTransformBaseChanged(); + } update(); } else { @@ -223,7 +227,7 @@ void QQuickImageBase::load() resolve2xLocalFile(d->url, targetDevicePixelRatio, &loadUrl, &d->devicePixelRatio); } - d->pix.load(qmlEngine(this), loadUrl, d->sourcesize * d->devicePixelRatio, options); + d->pix.load(qmlEngine(this), loadUrl, d->sourcesize * d->devicePixelRatio, options, d->autoTransform); if (d->pix.isLoading()) { if (d->progress != 0.0) { @@ -278,6 +282,10 @@ void QQuickImageBase::requestFinished() d->oldSourceSize = sourceSize(); emit sourceSizeChanged(); } + if (autoTransform() != d->oldAutoTransform) { + d->oldAutoTransform = autoTransform(); + emit autoTransformBaseChanged(); + } update(); } @@ -368,4 +376,21 @@ void QQuickImageBase::resolve2xLocalFile(const QUrl &url, qreal targetDevicePixe *sourceDevicePixelRatio = qreal(2.0); } +bool QQuickImageBase::autoTransform() const +{ + Q_D(const QQuickImageBase); + if (d->autoTransform == UsePluginDefault) + return d->pix.autoTransform() == ApplyTransform; + return d->autoTransform == ApplyTransform; +} + +void QQuickImageBase::setAutoTransform(bool transform) +{ + Q_D(QQuickImageBase); + if (d->autoTransform != UsePluginDefault && transform == (d->autoTransform == ApplyTransform)) + return; + d->autoTransform = transform ? ApplyTransform : DoNotApplyTransform; + emit autoTransformBaseChanged(); +} + QT_END_NAMESPACE |