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
4
#
include
"qquickimagepreviewprovider_p.h"
5
#
include
<
QtCore
/
qmutex
.
h
>
6
#
include
<
QtCore
/
qdebug
.
h
>
7
8
#
include
<
mutex
>
9
10
QT_BEGIN_NAMESPACE
11
12
namespace
{
13
14
struct
QQuickImagePreviewProviderPrivate
15
{
16
void
clear
()
17
{
18
std
::lock_guard guard(mutex);
19
records.clear();
20
}
21
22
void
registerImage
(QUuid instance, QString id, QImage preview)
23
{
24
// we only keep the most recent preview for each instances
25
std
::lock_guard guard(mutex);
26
records.insert_or_assign(instance, Record{ std::move(id), std::move(preview) });
27
}
28
29
QImage
getImage
(
const
QString &id, QSize *size,
const
QSize &requestedSize)
30
{
31
QImage preview = [&] {
32
std
::lock_guard guard(mutex);
33
for
(
const
auto
&record : records) {
34
if
(record.second.id == id)
35
return
record.second.image;
36
}
37
return
QImage();
38
}();
39
40
if
(preview.isNull())
41
return
QImage();
42
43
if
(requestedSize.isValid())
44
preview = preview.scaled(requestedSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
45
46
if
(size)
47
*size = preview.size();
48
49
return
preview;
50
}
51
52
void
cleanupInstance
(QUuid instance)
53
{
54
std
::lock_guard guard(mutex);
55
records.erase(instance);
56
}
57
58
struct
Record
59
{
60
QString
id
;
61
QImage
image
;
62
};
63
64
QMutex
mutex
;
65
std
::
map
<
QUuid
,
Record
>
records
;
66
};
67
68
Q_GLOBAL_STATIC(QQuickImagePreviewProviderPrivate, previewProviderSingleton)
69
70
}
// namespace
71
72
QQuickImagePreviewProvider::QQuickImagePreviewProvider()
73
: QQuickImageProvider(QQuickImageProvider::Image)
74
{
75
}
76
77
QQuickImagePreviewProvider::~QQuickImagePreviewProvider()
78
{
79
previewProviderSingleton()->clear();
80
}
81
82
QImage QQuickImagePreviewProvider::requestImage(
const
QString &id, QSize *size,
const
QSize& requestedSize)
83
{
84
return
previewProviderSingleton()->getImage(id, size, requestedSize);
85
}
86
87
void
QQuickImagePreviewProvider::registerPreview(QUuid captureInstance, QString id, QImage preview)
88
{
89
previewProviderSingleton()->registerImage(captureInstance, std::move(id), std::move(preview));
90
}
91
92
void
QQuickImagePreviewProvider::cleanupInstance(QUuid captureInstance)
93
{
94
previewProviderSingleton()->cleanupInstance(captureInstance);
95
}
96
97
QT_END_NAMESPACE
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::Record
Definition
qquickimagepreviewprovider.cpp:59
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::Record::id
QString id
Definition
qquickimagepreviewprovider.cpp:60
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::Record::image
QImage image
Definition
qquickimagepreviewprovider.cpp:61
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate
Definition
qquickimagepreviewprovider.cpp:15
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::getImage
QImage getImage(const QString &id, QSize *size, const QSize &requestedSize)
Definition
qquickimagepreviewprovider.cpp:29
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::registerImage
void registerImage(QUuid instance, QString id, QImage preview)
Definition
qquickimagepreviewprovider.cpp:22
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::cleanupInstance
void cleanupInstance(QUuid instance)
Definition
qquickimagepreviewprovider.cpp:52
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::mutex
QMutex mutex
Definition
qquickimagepreviewprovider.cpp:64
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::clear
void clear()
Definition
qquickimagepreviewprovider.cpp:16
QT_BEGIN_NAMESPACE::QQuickImagePreviewProviderPrivate::records
std::map< QUuid, Record > records
Definition
qquickimagepreviewprovider.cpp:65
qtmultimedia
src
multimediaquick
qquickimagepreviewprovider.cpp
Generated on
for Qt by
1.16.1