File indexing completed on 2025-03-09 03:56:54

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2010-06-21
0007  * Description : Demo test program for FacesEngine
0008  *
0009  * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  * SPDX-FileCopyrightText:      2010 by Alex Jironkin <alexjironkin at gmail dot com>
0011  * SPDX-FileCopyrightText:      2010 by Aditya Bhatt <adityabhatt1991 at gmail dot com>
0012  *
0013  * SPDX-License-Identifier: GPL-2.0-or-later
0014  *
0015  * ============================================================ */
0016 
0017 #ifndef DIGIKAM_FACE_ENGINE_DEMO_FACE_ITEM_H
0018 #define DIGIKAM_FACE_ENGINE_DEMO_FACE_ITEM_H
0019 
0020 // Qt includes
0021 
0022 #include <QtGlobal>
0023 #include <QObject>
0024 #include <QGraphicsObject>
0025 #include <QGraphicsRectItem>
0026 #include <QBrush>
0027 #include <QFont>
0028 
0029 // Local includes
0030 
0031 #include "demobutton.h"
0032 
0033 namespace FaceEngineDemo
0034 {
0035 
0036 class FaceItem : public QGraphicsObject
0037 {
0038     Q_OBJECT
0039 
0040 public:
0041 
0042     explicit FaceItem(QGraphicsItem* const parent = nullptr,
0043                       QGraphicsScene* const scene = nullptr,
0044                       const QRect& rect = QRect(0, 0, 0, 0),
0045                       double scale = 1,
0046                       const QString& name = QString(),
0047                       double originalscale = 1);
0048     ~FaceItem() override;
0049 
0050     QRectF boundingRect() const override;
0051     void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
0052 
0053     void setText(const QString& newName);
0054     QString text() const;
0055 
0056     QRect originalRect()   const;
0057     double originalScale() const ;
0058 
0059     void setVisible(bool);
0060     void setControlsVisible(bool);
0061 
0062 Q_SIGNALS:
0063 
0064     void acceptButtonClicked(const QString&, const QRect&);
0065     void rejectButtonClicked(const QString&, const QRect&);
0066 
0067     void suggestionAcceptButtonClicked(const QString&, const QRect&);
0068     void suggestionRejectButtonClicked(const QString&, const QRect&);
0069 
0070 public Q_SLOTS:
0071 
0072     void update();
0073     void clearText();
0074     void clearAndHide();
0075     void accepted();
0076     void reject();
0077 
0078     void suggest(const QString& name);
0079     void switchToEditMode();
0080     void switchToSuggestionMode();
0081 
0082     void slotSuggestionAccepted();
0083     void slotSuggestionRejected();
0084 
0085 private:
0086 
0087     class Private;
0088     Private* const d;
0089 };
0090 
0091 } // namespace FaceEngineDemo
0092 
0093 #endif // DIGIKAM_FACE_ENGINE_DEMO_FACE_ITEM_H