digiKam
Loading...
Searching...
No Matches
facetagseditor.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 : 2010-08-08
7 * Description : Faces tags editor allowing easy manipulation of face tags
8 *
9 * SPDX-FileCopyrightText: 2010-2011 by Aditya Bhatt <adityabhatt1991 at gmail dot com>
10 * SPDX-FileCopyrightText: 2010-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2024 by Michael Miller <michael underscore miller at msn dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QFlags>
22#include <QMap>
23#include <QList>
24#include <QRect>
25#include <QString>
26#include <QVariant>
27
28// Local includes
29
30#include "facetagsiface.h"
31#include "digikam_export.h"
32#include "facetags.h"
33
34namespace Digikam
35{
36
37class ItemTagPair;
38class ItemInfo;
39
40class DIGIKAM_DATABASE_EXPORT FaceTagsEditor
41{
42public:
43
44 FaceTagsEditor() = default;
45 virtual ~FaceTagsEditor() = default;
46
47 // --- Read from database ----
48
52 int numberOfFaces(qlonglong imageid) const;
53
57 int faceCountForPersonInImage(qlonglong imageid, int tagId) const;
58
62 QList<FaceTagsIface> databaseFaces(qlonglong imageid) const;
63
68 QList<FaceTagsIface> unconfirmedFaceTagsIfaces(qlonglong imageid) const;
69
74 QList<FaceTagsIface> unconfirmedNameFaceTagsIfaces(qlonglong imageid) const;
75
76 QList<FaceTagsIface> databaseFacesForTraining(qlonglong imageid) const;
77 QList<FaceTagsIface> confirmedFaceTagsIfaces(qlonglong imageid) const;
78 QList<FaceTagsIface> ignoredFaceTagsIfaces(qlonglong imageid) const;
79
84 QList<QRect> getTagRects(qlonglong imageid) const;
85
86 // --- Add / Confirm ---
87
94 void add(const FaceTagsIface& face, bool trainFace = true);
95 FaceTagsIface add(qlonglong imageid, int tagId, const TagRegion& region, bool trainFace = true);
96 FaceTagsIface addManually(const FaceTagsIface& face);
97
101 FaceTagsIface changeSuggestedName(const FaceTagsIface& previousEntry, int unconfirmedNameTagId);
102
110 QMap<QString, QString> getSuggestedNames(qlonglong id) const;
111
121 FaceTagsIface confirmName(const FaceTagsIface& face, int tagId = -1,
122 const TagRegion& confirmedRegion = TagRegion());
123
127 static FaceTagsIface confirmedEntry(const FaceTagsIface& face, int tagId = -1,
128 const TagRegion& confirmedRegion = TagRegion());
129
134 static FaceTagsIface unconfirmedEntry(qlonglong imageId, int tagId, const TagRegion& region);
135 static FaceTagsIface unknownPersonEntry(qlonglong imageId, const TagRegion& region);
136
137 // --- Remove entries ---
138
143 void removeFace(const FaceTagsIface& face, bool touchTags = true);
144 void removeFaces(const QList<FaceTagsIface>& faces);
145
149 void removeAllFaces(qlonglong imageid);
150
154 void removeFace(qlonglong imageid, const QRect& rect);
155
156 // --- Edit entry ---
157
161 FaceTagsIface changeRegion(const FaceTagsIface& face, const TagRegion& newRegion);
162
166 FaceTagsIface changeTag(const FaceTagsIface& face, int newTagId);
167
171 bool rotateFaces(qlonglong imageId, const QSize& size,
172 int oldOrientation, int newOrientation);
173
174 // --- Utilities ---
175
176 QList<FaceTagsIface> databaseFaces(qlonglong imageId, FaceTagsIface::TypeFlags flags) const;
177 QList<ItemTagPair> faceItemTagPairs(qlonglong imageid, FaceTagsIface::TypeFlags flags) const;
178
179protected:
180
181 void addFaceAndTag(ItemTagPair& pair, const FaceTagsIface& face, const QStringList& properties, bool addTag);
182 void removeFaceAndTag(ItemTagPair& pair, const FaceTagsIface& face, bool touchTags);
183
184 virtual void addNormalTag(qlonglong imageId, int tagId);
185 virtual void removeNormalTag(qlonglong imageId, int tagId);
186 virtual void removeNormalTags(qlonglong imageId, const QList<int>& tagIds);
187
188private:
189
190 Q_DISABLE_COPY(FaceTagsEditor)
191};
192
193} // namespace Digikam
Definition facetagseditor.h:41
virtual ~FaceTagsEditor()=default
Definition facetagsiface.h:34
Definition itemtagpair.h:36
Definition tagregion.h:36
Definition datefolderview.cpp:34