digiKam
Loading...
Searching...
No Matches
similaritydb.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2017-07-07
7 * Description : Similarity database interface.
8 *
9 * SPDX-FileCopyrightText: 2009 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 * SPDX-FileCopyrightText: 2017 by Swati Lodha <swatilodha27 at gmail dot com>
12 * SPDX-FileCopyrightText: 2018 by Mario Frank <mario dot frank at uni minus potsdam dot de>
13 *
14 * SPDX-License-Identifier: GPL-2.0-or-later
15 *
16 * ============================================================ */
17
18#pragma once
19
20// Qt includes
21
22#include <QStringList>
23#include <QString>
24#include <QList>
25#include <QPair>
26#include <QSet>
27
28// Local includes
29
30#include "dbenginesqlquery.h"
31#include "similaritydbbackend.h"
32#include "similaritydbaccess.h"
33#include "digikam_export.h"
34#include "iteminfo.h"
35
36namespace Digikam
37{
38
40{
41 Unknown = 0,
42 Haar = 1,
43 TfIdf = 2
44};
45
46
47class DIGIKAM_DATABASE_EXPORT SimilarityDb
48{
49public:
50
57 bool setSetting(const QString& keyword, const QString& value);
58
64 QString getSetting(const QString& keyword);
65
71 QString getLegacySetting(const QString& keyword);
72
77 QSet<qlonglong> registeredImageIds() const;
78
79 // ----------- Methods for fingerprint (ImageHaarMatrix) table access ----------
80
88 bool hasFingerprint(qlonglong imageId, FuzzyAlgorithm algorithm) const;
89
94 bool hasFingerprints();
95
101 bool hasFingerprints(FuzzyAlgorithm algorithm) const;
102
110 bool hasDirtyOrMissingFingerprint(const ItemInfo& imageInfo,
111 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar) const;
112
121 QList<qlonglong> getDirtyOrMissingFingerprints(const QList<ItemInfo>& imageInfos,
122 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
123
132 QStringList getDirtyOrMissingFingerprintURLs(const QList<ItemInfo>& imageInfos,
133 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
134
142 void removeImageFingerprint(qlonglong imageID,
143 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
144
148 void copySimilarityAttributes(qlonglong srcId,
149 qlonglong destId);
150
151 // ----------- Methods for image similarity table access ----------
152
158 double getImageSimilarity(qlonglong imageID1,
159 qlonglong imageID2,
160 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
161
162 void setImageSimilarity(qlonglong imageID1,
163 qlonglong imageID2,
164 double value,
165 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
166
172 void removeImageSimilarity(qlonglong imageID,
173 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
174
181 void removeImageSimilarity(qlonglong imageID1,
182 qlonglong imageID2,
183 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
184
189 void clearImageSimilarity(FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
190
197 QList<FuzzyAlgorithm> getImageSimilarityAlgorithms(qlonglong imageID1,
198 qlonglong imageID2);
199
200 // ----------- Database shrinking and integrity check methods ----------
201
206 bool integrityCheck();
207
211 void vacuum();
212
213private:
214
222 QString getImageSimilarityOrdered(qlonglong imageID1,
223 qlonglong imageID2,
224 FuzzyAlgorithm algorithm = FuzzyAlgorithm::Haar);
225
233 QPair<qlonglong, qlonglong> orderIds(qlonglong id1, qlonglong id2);
234
239 explicit SimilarityDb(SimilarityDbBackend* const backend);
240
245
246private:
247
248 // Disable
249 SimilarityDb(const SimilarityDb&) = delete;
250 SimilarityDb& operator=(const SimilarityDb&) = delete;
251
252 class Private;
253 Private* const d = nullptr;
254
255 friend class SimilarityDbAccess;
256};
257
258} // namespace Digikam
Definition iteminfo.h:68
Definition similaritydbaccess.h:35
Definition similaritydbbackend.h:30
Definition similaritydb.h:48
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34
FuzzyAlgorithm
Definition similaritydb.h:40