From 3dee491df2d2ed23f1826823466d2ba81beacdb1 Mon Sep 17 00:00:00 2001 From: Scott Klum Date: Wed, 10 Sep 2014 17:38:35 -0400 Subject: [PATCH] Working subject viewers --- openbr/gui/faceviewer.cpp | 3 +-- openbr/gui/subjectviewer.cpp | 28 +++++++++++++++++++++++++++- openbr/gui/subjectviewer.h | 23 +++++++++++++++++++++-- openbr/gui/subjectviewergrid.cpp | 39 ++++++++++++++++++++++++++++++++++++++- openbr/gui/subjectviewergrid.h | 22 +++++++++++++++++++--- 5 files changed, 106 insertions(+), 9 deletions(-) diff --git a/openbr/gui/faceviewer.cpp b/openbr/gui/faceviewer.cpp index a9f901b..064a692 100644 --- a/openbr/gui/faceviewer.cpp +++ b/openbr/gui/faceviewer.cpp @@ -73,8 +73,7 @@ void FaceViewer::setFile(const File &file_) landmarks.append(QPointF()); nearestLandmark = -1; - FaceViewer::refreshImage(); - //QtConcurrent::run(this, &FaceViewer::refreshImage); + QtConcurrent::run(this, &FaceViewer::refreshImage); } void FaceViewer::refreshImage() diff --git a/openbr/gui/subjectviewer.cpp b/openbr/gui/subjectviewer.cpp index 14362d8..d3861da 100644 --- a/openbr/gui/subjectviewer.cpp +++ b/openbr/gui/subjectviewer.cpp @@ -1,5 +1,31 @@ #include "subjectviewer.h" -SubjectViewer::SubjectViewer() +using namespace br; + +SubjectViewer::SubjectViewer(QWidget *parent) + : TemplateViewer(parent) +{ + files = FileList(); + currentIndex = 0; +} + +void SubjectViewer::setFiles(const FileList &files) +{ + if (files.isEmpty()) return; + + currentIndex = 0; + this->files = files; + TemplateViewer::setFile(this->files[currentIndex]); +} + +void SubjectViewer::wheelEvent(QWheelEvent *event) { + QPoint numDegrees = event->angleDelta(); + + if (numDegrees.y() < 0 && currentIndex > 0) + TemplateViewer::setFile(this->files[--currentIndex]); + else if (numDegrees.y() > 0 && currentIndex < files.size()-1) + TemplateViewer::setFile(this->files[++currentIndex]); + + event->accept(); } diff --git a/openbr/gui/subjectviewer.h b/openbr/gui/subjectviewer.h index 9f5354b..083c64f 100644 --- a/openbr/gui/subjectviewer.h +++ b/openbr/gui/subjectviewer.h @@ -1,10 +1,29 @@ #ifndef SUBJECTVIEWER_H #define SUBJECTVIEWER_H -class SubjectViewer : public FaceViewer +#include + +#include +#include + +namespace br +{ + +class BR_EXPORT SubjectViewer : public TemplateViewer { + FileList files; + int currentIndex; + public: - SubjectViewer(); + explicit SubjectViewer(QWidget *parent = 0); + +public slots: + void setFiles(const FileList &files); + +protected slots: + void wheelEvent(QWheelEvent *); }; +} + #endif // SUBJECTVIEWER_H diff --git a/openbr/gui/subjectviewergrid.cpp b/openbr/gui/subjectviewergrid.cpp index 3e57465..b6bd96e 100644 --- a/openbr/gui/subjectviewergrid.cpp +++ b/openbr/gui/subjectviewergrid.cpp @@ -1,6 +1,43 @@ #include "subjectviewergrid.h" +using namespace br; + SubjectViewerGrid::SubjectViewerGrid(QWidget *parent) : - TemplateViewerGrid(parent) + QWidget(parent) +{ + setLayout(&gridLayout); +} + +void SubjectViewerGrid::setFiles(const QList &files) { + const int size = std::max(1, (int)ceil(sqrt((float)files.size()))); + while (subjectViewers.size() < size*size) { + subjectViewers.append(QSharedPointer(new SubjectViewer())); + connect(subjectViewers.last().data(), SIGNAL(newInput(br::File)), this, SIGNAL(newInput(br::File))); + connect(subjectViewers.last().data(), SIGNAL(newInput(QImage)), this, SIGNAL(newInput(QImage))); + connect(subjectViewers.last().data(), SIGNAL(newMousePoint(QPointF)), this, SIGNAL(newMousePoint(QPointF))); + connect(subjectViewers.last().data(), SIGNAL(selectedInput(br::File)), this, SIGNAL(selectedInput(br::File))); + } + + { // Clear layout + QLayoutItem *child; + while ((child = gridLayout.takeAt(0)) != 0) + child->widget()->setVisible(false); + } + + for (int i=0; isetVisible(true); + } + + if (i < files.size()) { + subjectViewers[i]->setFiles(files[i]); + } else { + subjectViewers[i]->setDefaultText(""+ (size > 1 ? QString() : QString("Drag Photo or Folder Here")) +""); + subjectViewers[i]->setFiles(FileList()); + } + + subjectViewers[i]->setEditable(files.size() == 1); + } } diff --git a/openbr/gui/subjectviewergrid.h b/openbr/gui/subjectviewergrid.h index 423508f..966b0f6 100644 --- a/openbr/gui/subjectviewergrid.h +++ b/openbr/gui/subjectviewergrid.h @@ -1,16 +1,32 @@ #ifndef SUBJECTVIEWERGRID_H #define SUBJECTVIEWERGRID_H -class SubjectViewerGrid : public TemplateViewerGrid +#include +#include +#include + +#include + +#include "subjectviewer.h" + +namespace br +{ + +class BR_EXPORT SubjectViewerGrid : public QWidget { Q_OBJECT + + QGridLayout gridLayout; + QList< QSharedPointer >subjectViewers; + public: explicit SubjectViewerGrid(QWidget *parent = 0); -signals: - public slots: + void setFiles(const QList &file); }; +} + #endif // SUBJECTVIEWERGRID_H -- libgit2 0.21.4