Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquickimagepreviewprovider.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5#include <QtCore/qmutex.h>
6#include <QtCore/qdebug.h>
7
9
16
17Q_GLOBAL_STATIC(QQuickImagePreviewProviderPrivate, priv)
18
19QQuickImagePreviewProvider::QQuickImagePreviewProvider()
20: QQuickImageProvider(QQuickImageProvider::Image)
21{
22}
23
24QQuickImagePreviewProvider::~QQuickImagePreviewProvider()
25{
26 QQuickImagePreviewProviderPrivate *d = priv();
27 QMutexLocker lock(&d->mutex);
28 d->id.clear();
29 d->image = QImage();
30}
31
32QImage QQuickImagePreviewProvider::requestImage(const QString &id, QSize *size, const QSize& requestedSize)
33{
34 QQuickImagePreviewProviderPrivate *d = priv();
35 QMutexLocker lock(&d->mutex);
36
37 if (d->id != id)
38 return QImage();
39
40 QImage res = d->image;
41 if (!requestedSize.isEmpty())
42 res = res.scaled(requestedSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
43
44 if (size)
45 *size = res.size();
46
47 return res;
48}
49
50void QQuickImagePreviewProvider::registerPreview(const QString &id, const QImage &preview)
51{
52 //only the last preview is kept
53 QQuickImagePreviewProviderPrivate *d = priv();
54 QMutexLocker lock(&d->mutex);
55 d->id = id;
56 d->image = preview;
57}
58
59QT_END_NAMESPACE