digiKam
Loading...
Searching...
No Matches
haariface_p.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 : 2003-01-17
7 * Description : Haar Database interface
8 *
9 * SPDX-FileCopyrightText: 2016-2018 by Mario Frank <mario dot frank at uni minus potsdam dot de>
10 * SPDX-FileCopyrightText: 2003 by Ricardo Niederberger Cabral <nieder at mail dot ru>
11 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
12 * SPDX-FileCopyrightText: 2009-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
13 * SPDX-FileCopyrightText: 2009-2011 by Andi Clemens <andi dot clemens at gmail dot com>
14 *
15 * SPDX-License-Identifier: GPL-2.0-or-later
16 *
17 * ============================================================ */
18
19#pragma once
20
21#include "haariface.h"
22
23// C++ includes
24
25#include <fstream>
26#include <cmath>
27#include <cstring>
28#include <functional>
29
30// Qt includes
31
32#include <QByteArray>
33#include <QDataStream>
34#include <QImage>
35#include <QImageReader>
36#include <QMap>
37
38// Local includes
39
40#include "digikam_debug.h"
41#include "digikam_globals_p.h"
42#include "jpegutils.h"
43#include "dimg.h"
44#include "iteminfo.h"
45#include "coredbaccess.h"
46#include "coredbtransaction.h"
47#include "coredb.h"
48#include "coredbbackend.h"
49#include "coredbsearchxml.h"
50#include "dbenginesqlquery.h"
51#include "similaritydb.h"
52#include "similaritydbaccess.h"
53
54using namespace std;
55
56// TODO: Always store similarities in the similaritydb
57
58namespace Digikam
59{
60
61typedef QMap<qlonglong, Haar::SignatureData> SignatureCache;
62typedef QMap<qlonglong, int> AlbumCache;
63
71class Q_DECL_HIDDEN DatabaseBlob
72{
73public:
74
75 enum
76 {
77 Version = 1
78 };
79
80public:
81
82 DatabaseBlob() = default;
83
87 void read(const QByteArray& array, Haar::SignatureData& data);
88
89 QByteArray write(const Haar::SignatureData& data);
90};
91
92// -----------------------------------------------------------------------------------------------------
93
94class Q_DECL_HIDDEN HaarIface::Private
95{
96public:
97
98 Private();
99 ~Private() = default;
100
101public:
102
103 void rebuildSignatureCache(const QSet<qlonglong>& imageIds = {});
104 bool hasSignatureCache() const;
105
106 bool retrieveSignatureFromCache(qlonglong imageId, Haar::SignatureData& data);
107
108 void setImageDataFromImage(const QImage& image);
109 void setImageDataFromImage(const DImg& image);
110
111 SignatureCache* signatureCache() const;
112 AlbumCache* albumCache() const;
113 Haar::ImageData* imageData() const;
114
115 void setAlbumRootsToSearch(const QSet<int>& albumRootIds);
116 const QSet<int>& albumRootsToSearch() const;
117
118public:
119
120 const QString signatureQuery = QString::fromUtf8("SELECT imageid, matrix FROM ImageHaarMatrix;");
122
123private:
124
125 QScopedPointer<SignatureCache> m_signatureCache;
126 QScopedPointer<AlbumCache> m_albumCache;
127
128 QScopedPointer<Haar::ImageData> m_data;
129
130 QSet<int> m_albumRootsToSearch;
131};
132
133} // namespace Digikam
Definition dimg.h:52
Definition haariface_p.h:72
Definition haariface_p.h:95
const Haar::WeightBin weightBin
Definition haariface_p.h:121
Definition haariface.h:65
Definition haar.h:99
Definition haar.h:113
Definition haar.h:196
Definition datefolderview.cpp:34
QMap< qlonglong, Haar::SignatureData > SignatureCache
Definition haariface_p.h:61
QMap< qlonglong, int > AlbumCache
Definition haariface_p.h:62