From bfa9bbe3330815ace3f87edc043e525bc21c86a4 Mon Sep 17 00:00:00 2001 From: anjoer Date: Thu, 22 Sep 2016 08:44:31 +0200 Subject: [PATCH 1/8] Added View Classes --- biotracker/BioTracker3MainWindow.h | 53 ++ biotracker/BioTracker3VideoControllWidget.h | 42 ++ biotracker/BioTracker3VideoView.h | 42 ++ biotracker/src/BioTracker3MainWindow.cpp | 52 ++ biotracker/src/BioTracker3MainWindow.ui | 375 +++++++++++++ .../src/BioTracker3VideoControllWidget.cpp | 53 ++ .../src/BioTracker3VideoControllWidget.ui | 511 ++++++++++++++++++ biotracker/src/BioTracker3VideoView.cpp | 51 ++ 8 files changed, 1179 insertions(+) create mode 100644 biotracker/BioTracker3MainWindow.h create mode 100644 biotracker/BioTracker3VideoControllWidget.h create mode 100644 biotracker/BioTracker3VideoView.h create mode 100644 biotracker/src/BioTracker3MainWindow.cpp create mode 100644 biotracker/src/BioTracker3MainWindow.ui create mode 100644 biotracker/src/BioTracker3VideoControllWidget.cpp create mode 100644 biotracker/src/BioTracker3VideoControllWidget.ui create mode 100644 biotracker/src/BioTracker3VideoView.cpp diff --git a/biotracker/BioTracker3MainWindow.h b/biotracker/BioTracker3MainWindow.h new file mode 100644 index 0000000..d5f4dd5 --- /dev/null +++ b/biotracker/BioTracker3MainWindow.h @@ -0,0 +1,53 @@ +#ifndef BIOTRACKER3MAINWINDOW_H +#define BIOTRACKER3MAINWINDOW_H + +#include + +#include +#include "Interfaces/iview.h" + +// delete +#include "BioTracker3VideoView.h" + +namespace Ui { +class BioTracker3MainWindow; +} + +class IController; +class BioTracker3MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit BioTracker3MainWindow(QWidget *parent = 0); + ~BioTracker3MainWindow(); + + // Add the Controller + void addController(IController * controller); + + // Add Views + void addVideoControllWidget(QWidget *widget); + + // change to IView + void addVideoView(BioTracker3VideoView *videoView); + +public Q_SLOTS: + + +private Q_SLOTS: + void on_actionOpen_Video_triggered(); + +private: + Ui::BioTracker3MainWindow *ui; + + // The BioTrackerController of this View + IController *mController; + + // This ist the VideoControllWidget + QWidget *m_videoControlWidget; + + // change to IVIEW + BioTracker3VideoView *m_videoView; +}; + +#endif // BIOTRACKER3MAINWINDOW_H diff --git a/biotracker/BioTracker3VideoControllWidget.h b/biotracker/BioTracker3VideoControllWidget.h new file mode 100644 index 0000000..2022602 --- /dev/null +++ b/biotracker/BioTracker3VideoControllWidget.h @@ -0,0 +1,42 @@ +#ifndef BIOTRACKER3VIDEOCONTROLLWIDGET_H +#define BIOTRACKER3VIDEOCONTROLLWIDGET_H + +#include +#include "Interfaces/iview.h" + + +namespace Ui { +class BioTracker3VideoControllWidget; +} + +class BioTracker3VideoControllWidget : public IView +{ + Q_OBJECT + +public: + explicit BioTracker3VideoControllWidget(IController *controller, IModel *model); + ~BioTracker3VideoControllWidget(); + + void setModel(IModel *model); + + ///// Must implement from Base Class ///// + +private: + void setupView(); + +public Q_SLOTS: + void getNotified(); + +private Q_SLOTS: + void on_button_playPause_clicked(); + void on_sld_speed_sliderPressed(); + + void on_button_playPause_pressed(); + + void on_button_stop_clicked(); + +private: + Ui::BioTracker3VideoControllWidget *ui; +}; + +#endif // BIOTRACKER3VIDEOCONTROLLWIDGET_H diff --git a/biotracker/BioTracker3VideoView.h b/biotracker/BioTracker3VideoView.h new file mode 100644 index 0000000..b63804f --- /dev/null +++ b/biotracker/BioTracker3VideoView.h @@ -0,0 +1,42 @@ +#ifndef BIOTRACKER3VIDEOVIEW_H +#define BIOTRACKER3VIDEOVIEW_H + +#include +#include +#include +#include "QPainter" + +#include "Interfaces/iview.h" + +#include "TextureObject.h" + + + +class BioTracker3VideoView: public QOpenGLWidget, protected QOpenGLFunctions +{ +public: + BioTracker3VideoView(IController *controller = 0, BioTracker::Core::TextureObject *model = 0); + + void setModel(IModel *model); + +private: + void setupView(); + + void paintGL() override; + void initializeGL() override; + + + +public Q_SLOTS: + + virtual void getNotified(); + + BioTracker::Core::TextureObject m_TextureObject(); + + IController *m_Controller; + BioTracker::Core::TextureObject *m_Model; + + +}; + +#endif // BIOTRACKER3VIDEOVIEW_H diff --git a/biotracker/src/BioTracker3MainWindow.cpp b/biotracker/src/BioTracker3MainWindow.cpp new file mode 100644 index 0000000..2806094 --- /dev/null +++ b/biotracker/src/BioTracker3MainWindow.cpp @@ -0,0 +1,52 @@ +#include "BioTracker3MainWindow.h" +#include "ui_BioTracker3MainWindow.h" + +#include "BioTrackerController.h" +#include "BioTracker3VideoControllWidget.h" +#include "qfiledialog.h" +#include "QLayout" + +BioTracker3MainWindow::BioTracker3MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::BioTracker3MainWindow) +{ + ui->setupUi(this); +} + +BioTracker3MainWindow::~BioTracker3MainWindow() +{ + delete ui; +} + +void BioTracker3MainWindow::addController(IController *controller) +{ + mController = controller; +} + +void BioTracker3MainWindow::addVideoControllWidget(QWidget *widget) +{ + QLayout *layout = new QGridLayout(this); + layout->addWidget(widget); + ui->videoControls->setLayout(layout); +} + +// change to IView +void BioTracker3MainWindow::addVideoView(BioTracker3VideoView *videoView) +{ + m_videoView = videoView; + m_videoView->setParent(ui->trackingArea); + ui->videoViewLayout->addWidget(m_videoView); +} + +void BioTracker3MainWindow::on_actionOpen_Video_triggered() +{ + static const QString videoFilter("Video files (*.avi *.wmv *.mp4 *.mkv *.mov)"); + std::vector files; + + QString filename = QFileDialog::getOpenFileName(this, + "Open video", "", videoFilter); + + if (!filename.isEmpty()) { + dynamic_cast (mController)->loadVideo(filename); + } +} diff --git a/biotracker/src/BioTracker3MainWindow.ui b/biotracker/src/BioTracker3MainWindow.ui new file mode 100644 index 0000000..69ba964 --- /dev/null +++ b/biotracker/src/BioTracker3MainWindow.ui @@ -0,0 +1,375 @@ + + + BioTracker3MainWindow + + + + 0 + 0 + 982 + 818 + + + + BioTracker + + + true + + + false + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 0 + 150 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + true + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + + + + + + + + + + 0 + 0 + 982 + 23 + + + + + &File + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + 200 + 207 + + + + + 0 + 0 + + + + + 0 + 0 + + + + A&lgorithm + + + 2 + + + + + 0 + 0 + + + + + 2 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Tools + + + false + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + QFrame::Plain + + + 0 + + + Qt::ScrollBarAsNeeded + + + Qt::ScrollBarAlwaysOff + + + true + + + + + 0 + 0 + 178 + 594 + + + + + 0 + 0 + + + + + + + + + + + + + + false + + + &Notifications + + + 2 + + + + + 0 + 0 + + + + + + + Open &Video... + + + + + Open &Picture... + + + + + &Load tracking data... + + + + + &Save tracking data... + + + + + E&xit + + + + + L&oad Tracker... + + + + + Open &Camera... + + + + + + + diff --git a/biotracker/src/BioTracker3VideoControllWidget.cpp b/biotracker/src/BioTracker3VideoControllWidget.cpp new file mode 100644 index 0000000..8ac42d5 --- /dev/null +++ b/biotracker/src/BioTracker3VideoControllWidget.cpp @@ -0,0 +1,53 @@ +#include "BioTracker3VideoControllWidget.h" +#include "ui_BioTracker3VideoControllWidget.h" + +#include "BioTrackerController.h" + +BioTracker3VideoControllWidget::BioTracker3VideoControllWidget(IController *controller, IModel *model) : + IView(0, controller, model), + ui(new Ui::BioTracker3VideoControllWidget) +{ + ui->setupUi(this); +} + +BioTracker3VideoControllWidget::~BioTracker3VideoControllWidget() +{ + delete ui; +} + +void BioTracker3VideoControllWidget::setModel(IModel *model) +{ + mModel = model; +} + +void BioTracker3VideoControllWidget::setupView() +{ + +} + +void BioTracker3VideoControllWidget::getNotified() +{ + +} + +void BioTracker3VideoControllWidget::on_button_playPause_clicked() +{ + BioTrackerController *controller = dynamic_cast(getController()); + controller->startTracking(); +} + +void BioTracker3VideoControllWidget::on_sld_speed_sliderPressed() +{ + BioTrackerController *controller = dynamic_cast(getController()); + controller->startTracking(); +} + +void BioTracker3VideoControllWidget::on_button_playPause_pressed() +{ + BioTrackerController *controller = dynamic_cast(getController()); + controller->startTracking(); +} + +void BioTracker3VideoControllWidget::on_button_stop_clicked() +{ +} diff --git a/biotracker/src/BioTracker3VideoControllWidget.ui b/biotracker/src/BioTracker3VideoControllWidget.ui new file mode 100644 index 0000000..308d52e --- /dev/null +++ b/biotracker/src/BioTracker3VideoControllWidget.ui @@ -0,0 +1,511 @@ + + + BioTracker3VideoControllWidget + + + + 0 + 0 + 775 + 193 + + + + + 0 + 0 + + + + Form + + + + + + false + + + + 0 + 0 + + + + false + + + 2500 + + + 25 + + + Qt::Horizontal + + + false + + + false + + + QSlider::TicksAbove + + + 25 + + + + + + + + 0 + 0 + + + + Video Controls + + + false + + + + 3 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + false + + + Previous Frame + + + + + + + + + + :/BioTracker/resources/arrows-skip-back.png:/BioTracker/resources/arrows-skip-back.png + + + + 32 + 32 + + + + + + + + true + + + Play + + + + + + + + + + :/BioTracker/resources/arrow-forward1.png:/BioTracker/resources/arrow-forward1.png + + + + 32 + 32 + + + + + + + + true + + + Stop + + + + + + + + + + + + + :/BioTracker/resources/stop.png:/BioTracker/resources/stop.png + + + + 32 + 32 + + + + + + + + false + + + Next Frame + + + + + + + + + + + + + :/BioTracker/resources/arrows-skip-forward.png:/BioTracker/resources/arrows-skip-forward.png + + + + 32 + 32 + + + + + + + + true + + + + 16 + 75 + false + true + + + + Screenshot + + + + + + + + + + :/BioTracker/resources/screenshot.png:/BioTracker/resources/screenshot.png + + + + 30 + 30 + + + + + + + + Current frame: + + + + + + + false + + + + 0 + 0 + + + + + 60 + 30 + + + + 0 + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 40 + 20 + + + + + + + + View: + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + + 0 + 0 + + + + + Original + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + + 16 + 75 + false + true + + + + Pan/Zoom Mode + + + + + + + :/BioTracker/resources/panZoom.png:/BioTracker/resources/panZoom.png + + + + 30 + 30 + + + + true + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Playback Speed + + + + + + 5 + + + + + true + + + slow + + + + + + + + 0 + 0 + + + + 1 + + + 61 + + + 30 + + + 30 + + + Qt::Horizontal + + + + + + + fast + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + target fps: + + + + + + + 30 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + measured fps: + + + + + + + + 60 + 0 + + + + + + + + + + + + + + + + + diff --git a/biotracker/src/BioTracker3VideoView.cpp b/biotracker/src/BioTracker3VideoView.cpp new file mode 100644 index 0000000..7c388c0 --- /dev/null +++ b/biotracker/src/BioTracker3VideoView.cpp @@ -0,0 +1,51 @@ +#include "BioTracker3VideoView.h" + +#include +#include "Interfaces/icontroller.h" + + + +// change : IView +BioTracker3VideoView::BioTracker3VideoView(IController *controller, BioTracker::Core::TextureObject *model): + // IView(0, controller, model) + m_Controller(controller), m_Model(model) +{ + +} + +void BioTracker3VideoView::paintGL() +{ + QImage img = m_Model->get(); + + QRectF target(0, 0 , this->width(), this->height()); + QRectF source(0, 0, m_Model->width(), m_Model->height()); + + + QPainter painter(this); + painter.drawImage(target, img, source); + QPainter p(this); + + update(); + +} + +void BioTracker3VideoView::initializeGL() +{ +} + + +void BioTracker3VideoView::getNotified() +{ + +} + +void BioTracker3VideoView::setModel(IModel *model) +{ + // change + //mModel = model; +} + +void BioTracker3VideoView::setupView() +{ + +} From 8435f56f819e2b7f2ae077068fc5f3d03ac3d058 Mon Sep 17 00:00:00 2001 From: anjoer Date: Tue, 1 Nov 2016 08:54:08 +0100 Subject: [PATCH 2/8] added new structure --- biotracker/BioTracker3MainWindow.h | 53 ------------ biotracker/BioTracker3VideoView.h | 42 --------- .../{src => View}/BioTracker3MainWindow.cpp | 25 ++---- biotracker/View/BioTracker3MainWindow.h | 33 +++++++ .../{src => View}/BioTracker3MainWindow.ui | 0 .../View/BioTracker3VideoControllWidget.cpp | 85 +++++++++++++++++++ .../BioTracker3VideoControllWidget.h | 28 +++--- .../BioTracker3VideoControllWidget.ui | 4 +- biotracker/View/BioTracker3VideoView.cpp | 58 +++++++++++++ biotracker/View/BioTracker3VideoView.h | 25 ++++++ biotracker/View/TrackedImageView.cpp | 57 +++++++++++++ biotracker/View/TrackedImageView.h | 25 ++++++ .../src/BioTracker3VideoControllWidget.cpp | 53 ------------ biotracker/src/BioTracker3VideoView.cpp | 51 ----------- biotracker/src/Gui.cpp | 2 + biotracker/src/VideoControlWidget.cpp | 5 +- biotracker/src/main.cpp | 65 ++++++++------ 17 files changed, 352 insertions(+), 259 deletions(-) delete mode 100644 biotracker/BioTracker3MainWindow.h delete mode 100644 biotracker/BioTracker3VideoView.h rename biotracker/{src => View}/BioTracker3MainWindow.cpp (54%) create mode 100644 biotracker/View/BioTracker3MainWindow.h rename biotracker/{src => View}/BioTracker3MainWindow.ui (100%) create mode 100644 biotracker/View/BioTracker3VideoControllWidget.cpp rename biotracker/{ => View}/BioTracker3VideoControllWidget.h (50%) rename biotracker/{src => View}/BioTracker3VideoControllWidget.ui (99%) create mode 100644 biotracker/View/BioTracker3VideoView.cpp create mode 100644 biotracker/View/BioTracker3VideoView.h create mode 100644 biotracker/View/TrackedImageView.cpp create mode 100644 biotracker/View/TrackedImageView.h delete mode 100644 biotracker/src/BioTracker3VideoControllWidget.cpp delete mode 100644 biotracker/src/BioTracker3VideoView.cpp diff --git a/biotracker/BioTracker3MainWindow.h b/biotracker/BioTracker3MainWindow.h deleted file mode 100644 index d5f4dd5..0000000 --- a/biotracker/BioTracker3MainWindow.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef BIOTRACKER3MAINWINDOW_H -#define BIOTRACKER3MAINWINDOW_H - -#include - -#include -#include "Interfaces/iview.h" - -// delete -#include "BioTracker3VideoView.h" - -namespace Ui { -class BioTracker3MainWindow; -} - -class IController; -class BioTracker3MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - explicit BioTracker3MainWindow(QWidget *parent = 0); - ~BioTracker3MainWindow(); - - // Add the Controller - void addController(IController * controller); - - // Add Views - void addVideoControllWidget(QWidget *widget); - - // change to IView - void addVideoView(BioTracker3VideoView *videoView); - -public Q_SLOTS: - - -private Q_SLOTS: - void on_actionOpen_Video_triggered(); - -private: - Ui::BioTracker3MainWindow *ui; - - // The BioTrackerController of this View - IController *mController; - - // This ist the VideoControllWidget - QWidget *m_videoControlWidget; - - // change to IVIEW - BioTracker3VideoView *m_videoView; -}; - -#endif // BIOTRACKER3MAINWINDOW_H diff --git a/biotracker/BioTracker3VideoView.h b/biotracker/BioTracker3VideoView.h deleted file mode 100644 index b63804f..0000000 --- a/biotracker/BioTracker3VideoView.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef BIOTRACKER3VIDEOVIEW_H -#define BIOTRACKER3VIDEOVIEW_H - -#include -#include -#include -#include "QPainter" - -#include "Interfaces/iview.h" - -#include "TextureObject.h" - - - -class BioTracker3VideoView: public QOpenGLWidget, protected QOpenGLFunctions -{ -public: - BioTracker3VideoView(IController *controller = 0, BioTracker::Core::TextureObject *model = 0); - - void setModel(IModel *model); - -private: - void setupView(); - - void paintGL() override; - void initializeGL() override; - - - -public Q_SLOTS: - - virtual void getNotified(); - - BioTracker::Core::TextureObject m_TextureObject(); - - IController *m_Controller; - BioTracker::Core::TextureObject *m_Model; - - -}; - -#endif // BIOTRACKER3VIDEOVIEW_H diff --git a/biotracker/src/BioTracker3MainWindow.cpp b/biotracker/View/BioTracker3MainWindow.cpp similarity index 54% rename from biotracker/src/BioTracker3MainWindow.cpp rename to biotracker/View/BioTracker3MainWindow.cpp index 2806094..5601137 100644 --- a/biotracker/src/BioTracker3MainWindow.cpp +++ b/biotracker/View/BioTracker3MainWindow.cpp @@ -1,13 +1,13 @@ #include "BioTracker3MainWindow.h" #include "ui_BioTracker3MainWindow.h" -#include "BioTrackerController.h" +#include "Controller/BioTrackerController.h" #include "BioTracker3VideoControllWidget.h" #include "qfiledialog.h" #include "QLayout" -BioTracker3MainWindow::BioTracker3MainWindow(QWidget *parent) : - QMainWindow(parent), +BioTracker3MainWindow::BioTracker3MainWindow(QWidget *parent, IController *controller) : + IViewMainWindow(parent, controller), ui(new Ui::BioTracker3MainWindow) { ui->setupUi(this); @@ -18,24 +18,17 @@ BioTracker3MainWindow::~BioTracker3MainWindow() delete ui; } -void BioTracker3MainWindow::addController(IController *controller) -{ - mController = controller; -} - -void BioTracker3MainWindow::addVideoControllWidget(QWidget *widget) +void BioTracker3MainWindow::addVideoControllWidget(IView *widget) { QLayout *layout = new QGridLayout(this); - layout->addWidget(widget); + layout->addWidget(dynamic_cast(widget)); ui->videoControls->setLayout(layout); } -// change to IView -void BioTracker3MainWindow::addVideoView(BioTracker3VideoView *videoView) +void BioTracker3MainWindow::addVideoView(IView *videoView) { - m_videoView = videoView; - m_videoView->setParent(ui->trackingArea); - ui->videoViewLayout->addWidget(m_videoView); + dynamic_cast(videoView)->setParent(ui->trackingArea); + ui->videoViewLayout->addWidget(dynamic_cast(videoView)); } void BioTracker3MainWindow::on_actionOpen_Video_triggered() @@ -47,6 +40,6 @@ void BioTracker3MainWindow::on_actionOpen_Video_triggered() "Open video", "", videoFilter); if (!filename.isEmpty()) { - dynamic_cast (mController)->loadVideo(filename); + dynamic_cast (getController())->loadVideo(filename); } } diff --git a/biotracker/View/BioTracker3MainWindow.h b/biotracker/View/BioTracker3MainWindow.h new file mode 100644 index 0000000..8d3579c --- /dev/null +++ b/biotracker/View/BioTracker3MainWindow.h @@ -0,0 +1,33 @@ +#ifndef BIOTRACKER3MAINWINDOW_H +#define BIOTRACKER3MAINWINDOW_H + +#include +#include "Interfaces/IViewMainWindow.h" + +// delete +#include "BioTracker3VideoView.h" + +namespace Ui { +class BioTracker3MainWindow; +} + +class IController; +class BioTracker3MainWindow : public IViewMainWindow +{ + Q_OBJECT + +public: + explicit BioTracker3MainWindow(QWidget *parent = 0, IController *controller = 0); + ~BioTracker3MainWindow(); + + void addVideoControllWidget(IView *widget); + void addVideoView(IView *videoView); + +private Q_SLOTS: + void on_actionOpen_Video_triggered(); + +private: + Ui::BioTracker3MainWindow *ui; +}; + +#endif // BIOTRACKER3MAINWINDOW_H diff --git a/biotracker/src/BioTracker3MainWindow.ui b/biotracker/View/BioTracker3MainWindow.ui similarity index 100% rename from biotracker/src/BioTracker3MainWindow.ui rename to biotracker/View/BioTracker3MainWindow.ui diff --git a/biotracker/View/BioTracker3VideoControllWidget.cpp b/biotracker/View/BioTracker3VideoControllWidget.cpp new file mode 100644 index 0000000..a9c2874 --- /dev/null +++ b/biotracker/View/BioTracker3VideoControllWidget.cpp @@ -0,0 +1,85 @@ +#include "BioTracker3VideoControllWidget.h" +#include "ui_BioTracker3VideoControllWidget.h" + +#include "Controller/BioTrackerController.h" +#include "Interfaces/IPlayerState.h" + +BioTracker3VideoControllWidget::BioTracker3VideoControllWidget(IController *controller, IModel *model) : + IViewWidget(0, controller, model), + ui(new Ui::BioTracker3VideoControllWidget) +{ + ui->setupUi(this); + + m_iconPause.addFile(QStringLiteral(":/BioTracker/resources/pause-sign.png"), + QSize(), QIcon::Normal, QIcon::Off); + m_iconPlay.addFile(QStringLiteral(":/BioTracker/resources/arrow-forward1.png"), + QSize(), QIcon::Normal, QIcon::Off); +} + +BioTracker3VideoControllWidget::~BioTracker3VideoControllWidget() +{ + delete ui; +} + +void BioTracker3VideoControllWidget::getNotified() +{ + ui->button_nextFrame->setEnabled(dynamic_cast(getModel())->getStateOfStepForward()); + ui->button_playPause->setEnabled(dynamic_cast(getModel())->getStateOfPlay()); + ui->button_previousFrame->setEnabled(dynamic_cast(getModel())->getStateOfStepBack()); + ui->button_stop->setEnabled(dynamic_cast(getModel())->getStateOfStop()); + + bool isPaused = dynamic_cast(getModel())->getStateOfPause(); + if (isPaused) { + ui->button_playPause->setIcon(m_iconPause); + } + else { + ui->button_playPause->setIcon(m_iconPlay); + } +} + +void BioTracker3VideoControllWidget::on_button_nextFrame_clicked() +{ + BioTrackerController *controller = dynamic_cast(getController()); + controller->nextFrame(); +} + +void BioTracker3VideoControllWidget::on_button_playPause_clicked() +{ + bool isPaused = dynamic_cast(getModel())->getStateOfPause(); + + BioTrackerController *controller = dynamic_cast(getController()); + + if (isPaused) { + controller->pause(); + } + else { + controller->play(); + } +} + +void BioTracker3VideoControllWidget::on_button_stop_clicked() +{ + BioTrackerController *controller = dynamic_cast(getController()); + controller->stop(); +} + +void BioTracker3VideoControllWidget::on_button_previousFrame_clicked() +{ + BioTrackerController *controller = dynamic_cast(getController()); + controller->prevFrame(); +} + +void BioTracker3VideoControllWidget::on_sld_video_sliderMoved(int position) +{ + +} + +void BioTracker3VideoControllWidget::on_DurationChanged(int position) +{ + +} + +void BioTracker3VideoControllWidget::on_PositionChanged(int position) +{ + +} diff --git a/biotracker/BioTracker3VideoControllWidget.h b/biotracker/View/BioTracker3VideoControllWidget.h similarity index 50% rename from biotracker/BioTracker3VideoControllWidget.h rename to biotracker/View/BioTracker3VideoControllWidget.h index 2022602..83d11e9 100644 --- a/biotracker/BioTracker3VideoControllWidget.h +++ b/biotracker/View/BioTracker3VideoControllWidget.h @@ -2,14 +2,15 @@ #define BIOTRACKER3VIDEOCONTROLLWIDGET_H #include -#include "Interfaces/iview.h" +#include "QIcon" +#include "Interfaces/IViewWidget.h" namespace Ui { class BioTracker3VideoControllWidget; } -class BioTracker3VideoControllWidget : public IView +class BioTracker3VideoControllWidget : public IViewWidget { Q_OBJECT @@ -17,26 +18,27 @@ class BioTracker3VideoControllWidget : public IView explicit BioTracker3VideoControllWidget(IController *controller, IModel *model); ~BioTracker3VideoControllWidget(); - void setModel(IModel *model); - - ///// Must implement from Base Class ///// - -private: - void setupView(); - public Q_SLOTS: void getNotified(); private Q_SLOTS: - void on_button_playPause_clicked(); - void on_sld_speed_sliderPressed(); + void on_sld_video_sliderMoved(int position); + void on_DurationChanged(int position); + void on_PositionChanged(int position); - void on_button_playPause_pressed(); +private Q_SLOTS: + void on_button_nextFrame_clicked(); + void on_button_playPause_clicked(); + + void on_button_stop_clicked(); - void on_button_stop_clicked(); + void on_button_previousFrame_clicked(); private: Ui::BioTracker3VideoControllWidget *ui; + + QIcon m_iconPause; + QIcon m_iconPlay; }; #endif // BIOTRACKER3VIDEOCONTROLLWIDGET_H diff --git a/biotracker/src/BioTracker3VideoControllWidget.ui b/biotracker/View/BioTracker3VideoControllWidget.ui similarity index 99% rename from biotracker/src/BioTracker3VideoControllWidget.ui rename to biotracker/View/BioTracker3VideoControllWidget.ui index 308d52e..c1a2ae7 100644 --- a/biotracker/src/BioTracker3VideoControllWidget.ui +++ b/biotracker/View/BioTracker3VideoControllWidget.ui @@ -116,7 +116,7 @@ - true + false Play @@ -142,7 +142,7 @@ - true + false Stop diff --git a/biotracker/View/BioTracker3VideoView.cpp b/biotracker/View/BioTracker3VideoView.cpp new file mode 100644 index 0000000..ebc1c3b --- /dev/null +++ b/biotracker/View/BioTracker3VideoView.cpp @@ -0,0 +1,58 @@ +#include "BioTracker3VideoView.h" + +#include +#include "Interfaces/icontroller.h" + +#include "Model/BioTracker3TextureObject.h" + + +BioTracker3VideoView::BioTracker3VideoView(QWidget *parent, IController *controller, IModel *model): + IViewOpenGLWidget(parent, controller, model) +{ +} + +BioTracker3VideoView::~BioTracker3VideoView() +{ + +} + +void BioTracker3VideoView::paintGL() +{ + BioTracker::Core::BioTracker3TextureObject *textureObject = dynamic_cast(getModel()); + QImage img = textureObject->get(); + + + QPainter painter(this); + + painter.setBrush(QColor(0, 0, 0)); + painter.drawRect(QRect(0, 0, this->width(), this->height())); + painter.setBrush(QColor(0, 0, 0, 0)); + + QRect window; + QRect viewport; + const float viewport_skew = BioTracker::Core::ScreenHelper::calculate_viewport( + textureObject->width(), + textureObject->height(), + this->width(), + this->height(), + window, + viewport + ); + + painter.setWindow(window); + painter.setViewport(viewport); + + QRectF target(0, 0 , textureObject->width(), textureObject->height()); + QRectF source(0, 0, textureObject->width(), textureObject->height()); + + + + painter.drawImage(target, img, source); + QPainter p(this); + +} + +void BioTracker3VideoView::getNotified() +{ + this->update(); +} diff --git a/biotracker/View/BioTracker3VideoView.h b/biotracker/View/BioTracker3VideoView.h new file mode 100644 index 0000000..e36f8e4 --- /dev/null +++ b/biotracker/View/BioTracker3VideoView.h @@ -0,0 +1,25 @@ +#ifndef BIOTRACKER3VIDEOVIEW_H +#define BIOTRACKER3VIDEOVIEW_H + +#include "Interfaces/IViewOpenGLWidget.h" + +#include "QPainter" +#include "Interfaces/IViewWidget.h" +#include "TextureObject.h" + + + +class BioTracker3VideoView: public IViewOpenGLWidget +{ +public: + BioTracker3VideoView(QWidget *parent, IController *controller = 0, IModel *model = 0); + ~BioTracker3VideoView(); + +private: + void paintGL() override; + +public Q_SLOTS: + void getNotified(); +}; + +#endif // BIOTRACKER3VIDEOVIEW_H diff --git a/biotracker/View/TrackedImageView.cpp b/biotracker/View/TrackedImageView.cpp new file mode 100644 index 0000000..114d112 --- /dev/null +++ b/biotracker/View/TrackedImageView.cpp @@ -0,0 +1,57 @@ +#include "TrackedImageView.h" + +#include +#include "Interfaces/icontroller.h" + +#include "Model/BioTracker3TextureObject.h" + +TrackedImageView::TrackedImageView(QWidget *parent, IController *controller, IModel *model): + IViewOpenGLWidget(parent, controller, model) +{ + +} + +TrackedImageView::~TrackedImageView() +{ + +} + +void TrackedImageView::paintGL() +{ + BioTracker::Core::BioTracker3TextureObject *textureObject = dynamic_cast(getModel()); + QImage img = textureObject->get(); + + + QPainter painter(this); + + painter.setBrush(QColor(0, 0, 0)); + painter.drawRect(QRect(0, 0, this->width(), this->height())); + painter.setBrush(QColor(0, 0, 0, 0)); + + QRect window; + QRect viewport; + const float viewport_skew = BioTracker::Core::ScreenHelper::calculate_viewport( + textureObject->width(), + textureObject->height(), + this->width(), + this->height(), + window, + viewport + ); + + painter.setWindow(window); + painter.setViewport(viewport); + + QRectF target(0, 0 , textureObject->width(), textureObject->height()); + QRectF source(0, 0, textureObject->width(), textureObject->height()); + + + + painter.drawImage(target, img, source); + QPainter p(this); +} + +void TrackedImageView::getNotified() +{ + this->update(); +} diff --git a/biotracker/View/TrackedImageView.h b/biotracker/View/TrackedImageView.h new file mode 100644 index 0000000..6eec9fa --- /dev/null +++ b/biotracker/View/TrackedImageView.h @@ -0,0 +1,25 @@ +#ifndef TRACKEDIMAGEVIEW_H +#define TRACKEDIMAGEVIEW_H + +#include "Interfaces/IViewOpenGLWidget.h" + +#include "QPainter" +#include "Interfaces/IViewWidget.h" +#include "TextureObject.h" + +class TrackedImageView : public IViewOpenGLWidget +{ +public: + TrackedImageView(QWidget *parent, IController *controller, IModel *model); + ~TrackedImageView(); + + // QOpenGLWidget interface +protected: + void paintGL() override; + + // IViewOpenGLWidget interface +public Q_SLOTS: + void getNotified() override; +}; + +#endif // TRACKEDIMAGEVIEW_H diff --git a/biotracker/src/BioTracker3VideoControllWidget.cpp b/biotracker/src/BioTracker3VideoControllWidget.cpp deleted file mode 100644 index 8ac42d5..0000000 --- a/biotracker/src/BioTracker3VideoControllWidget.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "BioTracker3VideoControllWidget.h" -#include "ui_BioTracker3VideoControllWidget.h" - -#include "BioTrackerController.h" - -BioTracker3VideoControllWidget::BioTracker3VideoControllWidget(IController *controller, IModel *model) : - IView(0, controller, model), - ui(new Ui::BioTracker3VideoControllWidget) -{ - ui->setupUi(this); -} - -BioTracker3VideoControllWidget::~BioTracker3VideoControllWidget() -{ - delete ui; -} - -void BioTracker3VideoControllWidget::setModel(IModel *model) -{ - mModel = model; -} - -void BioTracker3VideoControllWidget::setupView() -{ - -} - -void BioTracker3VideoControllWidget::getNotified() -{ - -} - -void BioTracker3VideoControllWidget::on_button_playPause_clicked() -{ - BioTrackerController *controller = dynamic_cast(getController()); - controller->startTracking(); -} - -void BioTracker3VideoControllWidget::on_sld_speed_sliderPressed() -{ - BioTrackerController *controller = dynamic_cast(getController()); - controller->startTracking(); -} - -void BioTracker3VideoControllWidget::on_button_playPause_pressed() -{ - BioTrackerController *controller = dynamic_cast(getController()); - controller->startTracking(); -} - -void BioTracker3VideoControllWidget::on_button_stop_clicked() -{ -} diff --git a/biotracker/src/BioTracker3VideoView.cpp b/biotracker/src/BioTracker3VideoView.cpp deleted file mode 100644 index 7c388c0..0000000 --- a/biotracker/src/BioTracker3VideoView.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "BioTracker3VideoView.h" - -#include -#include "Interfaces/icontroller.h" - - - -// change : IView -BioTracker3VideoView::BioTracker3VideoView(IController *controller, BioTracker::Core::TextureObject *model): - // IView(0, controller, model) - m_Controller(controller), m_Model(model) -{ - -} - -void BioTracker3VideoView::paintGL() -{ - QImage img = m_Model->get(); - - QRectF target(0, 0 , this->width(), this->height()); - QRectF source(0, 0, m_Model->width(), m_Model->height()); - - - QPainter painter(this); - painter.drawImage(target, img, source); - QPainter p(this); - - update(); - -} - -void BioTracker3VideoView::initializeGL() -{ -} - - -void BioTracker3VideoView::getNotified() -{ - -} - -void BioTracker3VideoView::setModel(IModel *model) -{ - // change - //mModel = model; -} - -void BioTracker3VideoView::setupView() -{ - -} diff --git a/biotracker/src/Gui.cpp b/biotracker/src/Gui.cpp index f39c9cc..9b833a0 100644 --- a/biotracker/src/Gui.cpp +++ b/biotracker/src/Gui.cpp @@ -59,6 +59,8 @@ void Gui::initConnects() { m_mainWindow.getVideoControl(), &VideoControlWidget::fileOpened); } + +// NOTE andi this part is in new MainWindow void Gui::browseVideo() { static const QString videoFilter("Video files (*.avi *.wmv *.mp4 *.mkv *.mov)"); std::vector files; diff --git a/biotracker/src/VideoControlWidget.cpp b/biotracker/src/VideoControlWidget.cpp index 821ca15..4ce5285 100644 --- a/biotracker/src/VideoControlWidget.cpp +++ b/biotracker/src/VideoControlWidget.cpp @@ -172,8 +172,8 @@ void VideoControlWidget::nextFrame() { void VideoControlWidget::fileOpened(const std::string filename, const size_t totalFrames, const double targetFps) { - (void)filename; // "un-use" filename. FileOpen is a generic event, but we dont - // need the filename at this place + (void)filename; /* @bug "un-used" filename. FileOpen is a generic event, but we dont + // need the filename at this place */ assert(totalFrames > 0); m_ui.sld_video->setMaximum(static_cast(totalFrames - 1)); m_ui.fps_label->setText(QString::number(targetFps)); @@ -239,6 +239,7 @@ void VideoControlWidget::onRequestRepaint() { } void VideoControlWidget::registerViews(const std::vector views) { + /** @bug What is the sense this fuction?? VideoControlWidget::registerViews() */ m_ui.comboBoxSelectedView->clear(); m_ui.comboBoxSelectedView->addItem("Original"); for (auto view : views) { diff --git a/biotracker/src/main.cpp b/biotracker/src/main.cpp index b1ceab6..df44ff3 100644 --- a/biotracker/src/main.cpp +++ b/biotracker/src/main.cpp @@ -9,34 +9,45 @@ #include "../Gui.h" #include "biotracker/util/stdext.h" +/// NOTE edit by Andi +#include "Controller/BioTrackerController.h" +/// till here. + int main(int argc, char *argv[]) { QApplication app(argc, argv); - // workaround for cereal issue 144 - // see: https://github.com/USCiLab/cereal/issues/144 - std::setlocale(LC_NUMERIC, "C"); - - // meta types - qRegisterMetaType("cv::Mat"); - qRegisterMetaType("BioTracker::Core::Messages::MessageType"); - qRegisterMetaType("MessageType"); - qRegisterMetaType("std::string"); - qRegisterMetaType("std::size_t"); - qRegisterMetaType("size_t"); - qRegisterMetaType("TrackerType"); - - if (SystemCompatibilityCheck::checkOpenGLSupport()) { - app.setOrganizationName("Biorobotics Lab / FU Berlin"); - app.setApplicationName("BioTracker"); - - BioTracker::Gui::Gui w; - return app.exec(); - } else { - static const std::string title = BioTracker::Core::Messages::System::APPLICATION_CANNOT_START; - static const std::string msg = BioTracker::Core::Messages::System::NO_OPENGL; - QMessageBox::critical(nullptr, - QString::fromStdString(title), - QString::fromStdString(msg)); - } - return EXIT_FAILURE; + + /// NOTE edit by Andi + BioTrackerController mController; + + app.exec(); + /// till here. + +// // workaround for cereal issue 144 +// // see: https://github.com/USCiLab/cereal/issues/144 +// std::setlocale(LC_NUMERIC, "C"); + +// // meta types +// qRegisterMetaType("cv::Mat"); +// qRegisterMetaType("BioTracker::Core::Messages::MessageType"); +// qRegisterMetaType("MessageType"); +// qRegisterMetaType("std::string"); +// qRegisterMetaType("std::size_t"); +// qRegisterMetaType("size_t"); +// qRegisterMetaType("TrackerType"); + +// if (SystemCompatibilityCheck::checkOpenGLSupport()) { +// app.setOrganizationName("Biorobotics Lab / FU Berlin"); +// app.setApplicationName("BioTracker"); + +// BioTracker::Gui::Gui w; +// return app.exec(); +// } else { +// static const std::string title = BioTracker::Core::Messages::System::APPLICATION_CANNOT_START; +// static const std::string msg = BioTracker::Core::Messages::System::NO_OPENGL; +// QMessageBox::critical(nullptr, +// QString::fromStdString(title), +// QString::fromStdString(msg)); +// } +// return EXIT_FAILURE; } From 67cde7e559018d53a3e1ddaddc0a5391be755782 Mon Sep 17 00:00:00 2001 From: anjoer Date: Mon, 14 Nov 2016 14:02:44 +0100 Subject: [PATCH 3/8] Added multiple TextureViews --- biotracker/View/BioTracker3MainWindow.cpp | 8 +- biotracker/View/BioTracker3MainWindow.h | 2 +- .../View/BioTracker3VideoControllWidget.cpp | 79 +++++++++++++++---- .../View/BioTracker3VideoControllWidget.h | 30 ++++++- .../View/BioTracker3VideoControllWidget.ui | 14 ++-- biotracker/View/BioTracker3VideoView.cpp | 2 +- biotracker/View/TrackedImageView.cpp | 2 +- biotracker/src/main.cpp | 17 +++- 8 files changed, 118 insertions(+), 36 deletions(-) diff --git a/biotracker/View/BioTracker3MainWindow.cpp b/biotracker/View/BioTracker3MainWindow.cpp index 5601137..577bce8 100644 --- a/biotracker/View/BioTracker3MainWindow.cpp +++ b/biotracker/View/BioTracker3MainWindow.cpp @@ -1,13 +1,13 @@ #include "BioTracker3MainWindow.h" #include "ui_BioTracker3MainWindow.h" -#include "Controller/BioTrackerController.h" +#include "Controller/ControllerMainWindow.h" #include "BioTracker3VideoControllWidget.h" #include "qfiledialog.h" #include "QLayout" -BioTracker3MainWindow::BioTracker3MainWindow(QWidget *parent, IController *controller) : - IViewMainWindow(parent, controller), +BioTracker3MainWindow::BioTracker3MainWindow(QWidget *parent, IController *controller, IModel *model) : + IViewMainWindow(parent, controller, model), ui(new Ui::BioTracker3MainWindow) { ui->setupUi(this); @@ -40,6 +40,6 @@ void BioTracker3MainWindow::on_actionOpen_Video_triggered() "Open video", "", videoFilter); if (!filename.isEmpty()) { - dynamic_cast (getController())->loadVideo(filename); + dynamic_cast (getController())->loadVideo(filename); } } diff --git a/biotracker/View/BioTracker3MainWindow.h b/biotracker/View/BioTracker3MainWindow.h index 8d3579c..e9eef7e 100644 --- a/biotracker/View/BioTracker3MainWindow.h +++ b/biotracker/View/BioTracker3MainWindow.h @@ -17,7 +17,7 @@ class BioTracker3MainWindow : public IViewMainWindow Q_OBJECT public: - explicit BioTracker3MainWindow(QWidget *parent = 0, IController *controller = 0); + explicit BioTracker3MainWindow(QWidget *parent = 0, IController *controller = 0, IModel *model = 0); ~BioTracker3MainWindow(); void addVideoControllWidget(IView *widget); diff --git a/biotracker/View/BioTracker3VideoControllWidget.cpp b/biotracker/View/BioTracker3VideoControllWidget.cpp index a9c2874..3505170 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.cpp +++ b/biotracker/View/BioTracker3VideoControllWidget.cpp @@ -1,11 +1,11 @@ #include "BioTracker3VideoControllWidget.h" #include "ui_BioTracker3VideoControllWidget.h" +#include "Controller/ControllerPlayer.h" -#include "Controller/BioTrackerController.h" #include "Interfaces/IPlayerState.h" -BioTracker3VideoControllWidget::BioTracker3VideoControllWidget(IController *controller, IModel *model) : - IViewWidget(0, controller, model), +BioTracker3VideoControllWidget::BioTracker3VideoControllWidget(QWidget *parent, IController *controller, IModel *model) : + IViewWidget(parent, controller, model), ui(new Ui::BioTracker3VideoControllWidget) { ui->setupUi(this); @@ -21,15 +21,28 @@ BioTracker3VideoControllWidget::~BioTracker3VideoControllWidget() delete ui; } +void BioTracker3VideoControllWidget::setSelectedView(QString str) +{ + if (!ui->comboBoxSelectedView->findText(str)) { + ui->comboBoxSelectedView->addItem(str); + } + ui->comboBoxSelectedView->setCurrentText(str); +} + +void BioTracker3VideoControllWidget::setVideoViewComboboxModel(QStringListModel *comboboxModel) +{ + ui->comboBoxSelectedView->setModel(comboboxModel); +} + void BioTracker3VideoControllWidget::getNotified() { - ui->button_nextFrame->setEnabled(dynamic_cast(getModel())->getStateOfStepForward()); - ui->button_playPause->setEnabled(dynamic_cast(getModel())->getStateOfPlay()); - ui->button_previousFrame->setEnabled(dynamic_cast(getModel())->getStateOfStepBack()); - ui->button_stop->setEnabled(dynamic_cast(getModel())->getStateOfStop()); + ui->button_nextFrame->setEnabled(m_Forw); + ui->button_playPause->setEnabled(m_Play); + ui->button_previousFrame->setEnabled(m_Back); + ui->button_stop->setEnabled(m_Stop); - bool isPaused = dynamic_cast(getModel())->getStateOfPause(); - if (isPaused) { + + if (m_Paus) { ui->button_playPause->setIcon(m_iconPause); } else { @@ -37,19 +50,44 @@ void BioTracker3VideoControllWidget::getNotified() } } +void BioTracker3VideoControllWidget::receiveTotalNumbFrames(size_t numb) +{ + m_TotalNumbFrames = numb; +} + +void BioTracker3VideoControllWidget::receiveCurrentFrameNumber(size_t numb) +{ + m_CurrentFrameNumber = numb; + ui->frame_num_edit->setText(QString::number(m_CurrentFrameNumber)); +} + +void BioTracker3VideoControllWidget::receiveFPS(double fps) +{ + ui->fps_label->setText(QString::number(fps)); +} + +void BioTracker3VideoControllWidget::receiveVideoControllsStates(QVector states) +{ + + m_Back = states.at(0); + m_Forw = states.at(1); + m_Paus = states.at(2); + m_Play = states.at(3); + m_Stop = states.at(4); + +} + void BioTracker3VideoControllWidget::on_button_nextFrame_clicked() { - BioTrackerController *controller = dynamic_cast(getController()); + ControllerPlayer *controller = dynamic_cast(getController()); controller->nextFrame(); } void BioTracker3VideoControllWidget::on_button_playPause_clicked() { - bool isPaused = dynamic_cast(getModel())->getStateOfPause(); - - BioTrackerController *controller = dynamic_cast(getController()); + ControllerPlayer *controller = dynamic_cast(getController()); - if (isPaused) { + if (m_Paus) { controller->pause(); } else { @@ -59,13 +97,13 @@ void BioTracker3VideoControllWidget::on_button_playPause_clicked() void BioTracker3VideoControllWidget::on_button_stop_clicked() { - BioTrackerController *controller = dynamic_cast(getController()); + ControllerPlayer *controller = dynamic_cast(getController()); controller->stop(); } void BioTracker3VideoControllWidget::on_button_previousFrame_clicked() { - BioTrackerController *controller = dynamic_cast(getController()); + ControllerPlayer *controller = dynamic_cast(getController()); controller->prevFrame(); } @@ -83,3 +121,12 @@ void BioTracker3VideoControllWidget::on_PositionChanged(int position) { } + + +void BioTracker3VideoControllWidget::on_comboBoxSelectedView_currentTextChanged(const QString &arg1) +{ + QString name = arg1; + ControllerPlayer *controller = dynamic_cast(getController()); + + controller->changeImageView(name); +} diff --git a/biotracker/View/BioTracker3VideoControllWidget.h b/biotracker/View/BioTracker3VideoControllWidget.h index 83d11e9..0f6533b 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.h +++ b/biotracker/View/BioTracker3VideoControllWidget.h @@ -4,6 +4,9 @@ #include #include "QIcon" #include "Interfaces/IViewWidget.h" +#include "QMap" +#include "QMetaEnum" +#include "QStringListModel" namespace Ui { @@ -15,18 +18,25 @@ class BioTracker3VideoControllWidget : public IViewWidget Q_OBJECT public: - explicit BioTracker3VideoControllWidget(IController *controller, IModel *model); + explicit BioTracker3VideoControllWidget(QWidget *parent = 0, IController *controller = 0, IModel *model = 0); ~BioTracker3VideoControllWidget(); + void setSelectedView(QString str); + + void setVideoViewComboboxModel(QStringListModel *comboboxModel); + + public Q_SLOTS: void getNotified(); + void receiveTotalNumbFrames(size_t numb); + void receiveCurrentFrameNumber(size_t numb); + void receiveFPS(double fps); + void receiveVideoControllsStates(QVector states); private Q_SLOTS: void on_sld_video_sliderMoved(int position); void on_DurationChanged(int position); void on_PositionChanged(int position); - -private Q_SLOTS: void on_button_nextFrame_clicked(); void on_button_playPause_clicked(); @@ -34,11 +44,25 @@ private Q_SLOTS: void on_button_previousFrame_clicked(); + + void on_comboBoxSelectedView_currentTextChanged(const QString &arg1); + + private: Ui::BioTracker3VideoControllWidget *ui; QIcon m_iconPause; QIcon m_iconPlay; + + bool m_Play; + bool m_Forw; + bool m_Back; + bool m_Stop; + bool m_Paus; + + size_t m_TotalNumbFrames; + size_t m_CurrentFrameNumber; + double m_fps; }; #endif // BIOTRACKER3VIDEOCONTROLLWIDGET_H diff --git a/biotracker/View/BioTracker3VideoControllWidget.ui b/biotracker/View/BioTracker3VideoControllWidget.ui index c1a2ae7..5f4f4a6 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.ui +++ b/biotracker/View/BioTracker3VideoControllWidget.ui @@ -102,7 +102,7 @@ - + :/BioTracker/resources/arrows-skip-back.png:/BioTracker/resources/arrows-skip-back.png @@ -128,7 +128,7 @@ - + :/BioTracker/resources/arrow-forward1.png:/BioTracker/resources/arrow-forward1.png @@ -157,7 +157,7 @@ - + :/BioTracker/resources/stop.png:/BioTracker/resources/stop.png @@ -186,7 +186,7 @@ - + :/BioTracker/resources/arrows-skip-forward.png:/BioTracker/resources/arrows-skip-forward.png @@ -220,7 +220,7 @@ - + :/BioTracker/resources/screenshot.png:/BioTracker/resources/screenshot.png @@ -343,7 +343,7 @@ - + :/BioTracker/resources/panZoom.png:/BioTracker/resources/panZoom.png @@ -505,7 +505,7 @@ - + diff --git a/biotracker/View/BioTracker3VideoView.cpp b/biotracker/View/BioTracker3VideoView.cpp index ebc1c3b..2edc113 100644 --- a/biotracker/View/BioTracker3VideoView.cpp +++ b/biotracker/View/BioTracker3VideoView.cpp @@ -18,7 +18,7 @@ BioTracker3VideoView::~BioTracker3VideoView() void BioTracker3VideoView::paintGL() { - BioTracker::Core::BioTracker3TextureObject *textureObject = dynamic_cast(getModel()); + BioTracker3TextureObject *textureObject = dynamic_cast(getModel()); QImage img = textureObject->get(); diff --git a/biotracker/View/TrackedImageView.cpp b/biotracker/View/TrackedImageView.cpp index 114d112..390941d 100644 --- a/biotracker/View/TrackedImageView.cpp +++ b/biotracker/View/TrackedImageView.cpp @@ -18,7 +18,7 @@ TrackedImageView::~TrackedImageView() void TrackedImageView::paintGL() { - BioTracker::Core::BioTracker3TextureObject *textureObject = dynamic_cast(getModel()); + BioTracker3TextureObject *textureObject = dynamic_cast(getModel()); QImage img = textureObject->get(); diff --git a/biotracker/src/main.cpp b/biotracker/src/main.cpp index df44ff3..fd19aef 100644 --- a/biotracker/src/main.cpp +++ b/biotracker/src/main.cpp @@ -10,15 +10,26 @@ #include "biotracker/util/stdext.h" /// NOTE edit by Andi -#include "Controller/BioTrackerController.h" -/// till here. +#include "BioTracker3App.h" +#include "biotracker/Controller/ControllerStrategies/GuiContext.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); + qRegisterMetaType("cv::Mat"); + qRegisterMetaType("std::size_t"); + qRegisterMetaType("size_t"); + + + /// NOTE edit by Andi - BioTrackerController mController; + //BioTrackerController mController; + + BioTracker3App bioTracker3(&app); + GuiContext context(&bioTracker3); + bioTracker3.setBioTrackerContext(&context); + bioTracker3.runBioTracker(); app.exec(); /// till here. From bec14be42fb20dfbdcc394e84acd1591b903cf61 Mon Sep 17 00:00:00 2001 From: anjoer Date: Tue, 15 Nov 2016 11:53:04 +0100 Subject: [PATCH 4/8] Added ability for multiple imagevies --- biotracker/View/BioTracker3VideoControllWidget.cpp | 8 ++++---- biotracker/View/BioTracker3VideoControllWidget.h | 9 +++++---- biotracker/View/BioTracker3VideoView.cpp | 7 +++++++ biotracker/View/BioTracker3VideoView.h | 8 ++++++++ 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/biotracker/View/BioTracker3VideoControllWidget.cpp b/biotracker/View/BioTracker3VideoControllWidget.cpp index 3505170..bef8f06 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.cpp +++ b/biotracker/View/BioTracker3VideoControllWidget.cpp @@ -50,23 +50,23 @@ void BioTracker3VideoControllWidget::getNotified() } } -void BioTracker3VideoControllWidget::receiveTotalNumbFrames(size_t numb) +void BioTracker3VideoControllWidget::setTotalNumbFrames(size_t numb) { m_TotalNumbFrames = numb; } -void BioTracker3VideoControllWidget::receiveCurrentFrameNumber(size_t numb) +void BioTracker3VideoControllWidget::setCurrentFrameNumber(size_t numb) { m_CurrentFrameNumber = numb; ui->frame_num_edit->setText(QString::number(m_CurrentFrameNumber)); } -void BioTracker3VideoControllWidget::receiveFPS(double fps) +void BioTracker3VideoControllWidget::setFPS(double fps) { ui->fps_label->setText(QString::number(fps)); } -void BioTracker3VideoControllWidget::receiveVideoControllsStates(QVector states) +void BioTracker3VideoControllWidget::setVideoControllsStates(QVector states) { m_Back = states.at(0); diff --git a/biotracker/View/BioTracker3VideoControllWidget.h b/biotracker/View/BioTracker3VideoControllWidget.h index 0f6533b..8d2a95f 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.h +++ b/biotracker/View/BioTracker3VideoControllWidget.h @@ -25,13 +25,14 @@ class BioTracker3VideoControllWidget : public IViewWidget void setVideoViewComboboxModel(QStringListModel *comboboxModel); + void setTotalNumbFrames(size_t numb); + void setCurrentFrameNumber(size_t numb); + void setFPS(double fps); + void setVideoControllsStates(QVector states); + public Q_SLOTS: void getNotified(); - void receiveTotalNumbFrames(size_t numb); - void receiveCurrentFrameNumber(size_t numb); - void receiveFPS(double fps); - void receiveVideoControllsStates(QVector states); private Q_SLOTS: void on_sld_video_sliderMoved(int position); diff --git a/biotracker/View/BioTracker3VideoView.cpp b/biotracker/View/BioTracker3VideoView.cpp index 2edc113..7ebba58 100644 --- a/biotracker/View/BioTracker3VideoView.cpp +++ b/biotracker/View/BioTracker3VideoView.cpp @@ -56,3 +56,10 @@ void BioTracker3VideoView::getNotified() { this->update(); } + +bool BioTracker3VideoView::event(QEvent *event) +{ +// if (event->type() == QEvent::Gesture) +// return gestureEvent(static_cast(event)); + return QWidget::event(event); +} diff --git a/biotracker/View/BioTracker3VideoView.h b/biotracker/View/BioTracker3VideoView.h index e36f8e4..67a2301 100644 --- a/biotracker/View/BioTracker3VideoView.h +++ b/biotracker/View/BioTracker3VideoView.h @@ -15,11 +15,19 @@ class BioTracker3VideoView: public IViewOpenGLWidget BioTracker3VideoView(QWidget *parent, IController *controller = 0, IModel *model = 0); ~BioTracker3VideoView(); + + // QObject interface +public: + bool event(QEvent *event) override; + private: void paintGL() override; + public Q_SLOTS: void getNotified(); + + }; #endif // BIOTRACKER3VIDEOVIEW_H From c9051630f61ab677eeda3f23195020451d27090e Mon Sep 17 00:00:00 2001 From: anjoer Date: Wed, 16 Nov 2016 12:30:06 +0100 Subject: [PATCH 5/8] added Views for TrackedComponents --- biotracker/View/BioTracker3VideoView.cpp | 9 ++++++++- biotracker/View/BioTracker3VideoView.h | 5 +++++ biotracker/View/TrackedElementView.cpp | 22 ++++++++++++++++++++++ biotracker/View/TrackedElementView.h | 22 ++++++++++++++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 biotracker/View/TrackedElementView.cpp create mode 100644 biotracker/View/TrackedElementView.h diff --git a/biotracker/View/BioTracker3VideoView.cpp b/biotracker/View/BioTracker3VideoView.cpp index 7ebba58..6a18b88 100644 --- a/biotracker/View/BioTracker3VideoView.cpp +++ b/biotracker/View/BioTracker3VideoView.cpp @@ -5,6 +5,8 @@ #include "Model/BioTracker3TextureObject.h" +#include "Model/TrackedComponents/TrackedElement.h" + BioTracker3VideoView::BioTracker3VideoView(QWidget *parent, IController *controller, IModel *model): IViewOpenGLWidget(parent, controller, model) @@ -61,5 +63,10 @@ bool BioTracker3VideoView::event(QEvent *event) { // if (event->type() == QEvent::Gesture) // return gestureEvent(static_cast(event)); - return QWidget::event(event); + return QWidget::event(event); +} + +void BioTracker3VideoView::addRect(IModel *model) +{ + myRect = model; } diff --git a/biotracker/View/BioTracker3VideoView.h b/biotracker/View/BioTracker3VideoView.h index 67a2301..596a1f0 100644 --- a/biotracker/View/BioTracker3VideoView.h +++ b/biotracker/View/BioTracker3VideoView.h @@ -20,6 +20,8 @@ class BioTracker3VideoView: public IViewOpenGLWidget public: bool event(QEvent *event) override; + void addRect(IModel *model); + private: void paintGL() override; @@ -27,6 +29,9 @@ class BioTracker3VideoView: public IViewOpenGLWidget public Q_SLOTS: void getNotified(); +private: + IModel *myRect; + }; diff --git a/biotracker/View/TrackedElementView.cpp b/biotracker/View/TrackedElementView.cpp new file mode 100644 index 0000000..21d424a --- /dev/null +++ b/biotracker/View/TrackedElementView.cpp @@ -0,0 +1,22 @@ +#include "TrackedElementView.h" + +TrackedElementView::TrackedElementView(QGraphicsItem *parent, IController *controller, IModel *model) : + IViewTrackedComponent(parent, controller, model) +{ + +} + +QRectF TrackedElementView::boundingRect() const +{ + return QRectF(0,0,0,0); +} + +void TrackedElementView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + +} + +void TrackedElementView::getNotified() +{ + +} diff --git a/biotracker/View/TrackedElementView.h b/biotracker/View/TrackedElementView.h new file mode 100644 index 0000000..9d2cf37 --- /dev/null +++ b/biotracker/View/TrackedElementView.h @@ -0,0 +1,22 @@ +#ifndef TRACKEDELEMENTVIEW_H +#define TRACKEDELEMENTVIEW_H + +#include "../biotracker/Interfaces/IViewTrackedComponent.h" + +class TrackedElementView : public IViewTrackedComponent +{ + Q_OBJECT +public: + TrackedElementView(QGraphicsItem *parent = 0, IController *controller = 0, IModel *model = 0); + + // QGraphicsItem interface +public: + QRectF boundingRect() const override; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; + + // IViewTrackedComponent interface +public Q_SLOTS: + void getNotified() override; +}; + +#endif // TRACKEDELEMENTVIEW_H From 3ee8e0c4a072a2b9aac004191aafdd0ccceaa0ee Mon Sep 17 00:00:00 2001 From: anjoer Date: Thu, 17 Nov 2016 13:14:29 +0100 Subject: [PATCH 6/8] sorted interfaced --- biotracker/View/BioTracker3MainWindow.h | 2 +- .../View/BioTracker3VideoControllWidget.cpp | 2 +- .../View/BioTracker3VideoControllWidget.h | 2 +- biotracker/View/BioTracker3VideoView.cpp | 16 +------ biotracker/View/BioTracker3VideoView.h | 14 +----- biotracker/View/TrackedElementView.cpp | 46 ++++++++++++++++++- biotracker/View/TrackedElementView.h | 10 +++- biotracker/View/TrackedImageView.cpp | 2 +- biotracker/View/TrackedImageView.h | 4 +- 9 files changed, 62 insertions(+), 36 deletions(-) diff --git a/biotracker/View/BioTracker3MainWindow.h b/biotracker/View/BioTracker3MainWindow.h index e9eef7e..2518f8a 100644 --- a/biotracker/View/BioTracker3MainWindow.h +++ b/biotracker/View/BioTracker3MainWindow.h @@ -2,7 +2,7 @@ #define BIOTRACKER3MAINWINDOW_H #include -#include "Interfaces/IViewMainWindow.h" +#include "Interfaces/IView/IViewMainWindow.h" // delete #include "BioTracker3VideoView.h" diff --git a/biotracker/View/BioTracker3VideoControllWidget.cpp b/biotracker/View/BioTracker3VideoControllWidget.cpp index bef8f06..ad75e6c 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.cpp +++ b/biotracker/View/BioTracker3VideoControllWidget.cpp @@ -2,7 +2,7 @@ #include "ui_BioTracker3VideoControllWidget.h" #include "Controller/ControllerPlayer.h" -#include "Interfaces/IPlayerState.h" +#include "Interfaces/IStates/IPlayerState.h" BioTracker3VideoControllWidget::BioTracker3VideoControllWidget(QWidget *parent, IController *controller, IModel *model) : IViewWidget(parent, controller, model), diff --git a/biotracker/View/BioTracker3VideoControllWidget.h b/biotracker/View/BioTracker3VideoControllWidget.h index 8d2a95f..f5586c5 100644 --- a/biotracker/View/BioTracker3VideoControllWidget.h +++ b/biotracker/View/BioTracker3VideoControllWidget.h @@ -3,7 +3,7 @@ #include #include "QIcon" -#include "Interfaces/IViewWidget.h" +#include "Interfaces/IView/IViewWidget.h" #include "QMap" #include "QMetaEnum" #include "QStringListModel" diff --git a/biotracker/View/BioTracker3VideoView.cpp b/biotracker/View/BioTracker3VideoView.cpp index 6a18b88..198e9e0 100644 --- a/biotracker/View/BioTracker3VideoView.cpp +++ b/biotracker/View/BioTracker3VideoView.cpp @@ -1,12 +1,10 @@ #include "BioTracker3VideoView.h" #include -#include "Interfaces/icontroller.h" +#include "Interfaces/IController/icontroller.h" #include "Model/BioTracker3TextureObject.h" -#include "Model/TrackedComponents/TrackedElement.h" - BioTracker3VideoView::BioTracker3VideoView(QWidget *parent, IController *controller, IModel *model): IViewOpenGLWidget(parent, controller, model) @@ -58,15 +56,3 @@ void BioTracker3VideoView::getNotified() { this->update(); } - -bool BioTracker3VideoView::event(QEvent *event) -{ -// if (event->type() == QEvent::Gesture) -// return gestureEvent(static_cast(event)); - return QWidget::event(event); -} - -void BioTracker3VideoView::addRect(IModel *model) -{ - myRect = model; -} diff --git a/biotracker/View/BioTracker3VideoView.h b/biotracker/View/BioTracker3VideoView.h index 596a1f0..518b23f 100644 --- a/biotracker/View/BioTracker3VideoView.h +++ b/biotracker/View/BioTracker3VideoView.h @@ -1,10 +1,10 @@ #ifndef BIOTRACKER3VIDEOVIEW_H #define BIOTRACKER3VIDEOVIEW_H -#include "Interfaces/IViewOpenGLWidget.h" +#include "Interfaces/IView/IViewOpenGLWidget.h" #include "QPainter" -#include "Interfaces/IViewWidget.h" +#include "Interfaces/IView/IViewWidget.h" #include "TextureObject.h" @@ -15,13 +15,6 @@ class BioTracker3VideoView: public IViewOpenGLWidget BioTracker3VideoView(QWidget *parent, IController *controller = 0, IModel *model = 0); ~BioTracker3VideoView(); - - // QObject interface -public: - bool event(QEvent *event) override; - - void addRect(IModel *model); - private: void paintGL() override; @@ -29,9 +22,6 @@ class BioTracker3VideoView: public IViewOpenGLWidget public Q_SLOTS: void getNotified(); -private: - IModel *myRect; - }; diff --git a/biotracker/View/TrackedElementView.cpp b/biotracker/View/TrackedElementView.cpp index 21d424a..5bc2086 100644 --- a/biotracker/View/TrackedElementView.cpp +++ b/biotracker/View/TrackedElementView.cpp @@ -1,22 +1,64 @@ #include "TrackedElementView.h" +#include "Model/TrackedComponents/TrackedElement.h" +#include "QBrush" +#include "QPainter" TrackedElementView::TrackedElementView(QGraphicsItem *parent, IController *controller, IModel *model) : IViewTrackedComponent(parent, controller, model) { - + TrackedElement *elem = dynamic_cast(getModel()); + m_boundingRect = QRectF(0,0, elem->getX(), elem->getY()); } QRectF TrackedElementView::boundingRect() const { - return QRectF(0,0,0,0); + + return m_boundingRect; } void TrackedElementView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + TrackedElement *elem = dynamic_cast(getModel()); + + QRectF rec = boundingRect(); + + QBrush brush(Qt::blue); + + if(elem->getPressedStatus()) + { + brush.setColor(Qt::red); + } + else + { + brush.setColor(Qt::green); + } + + painter->fillRect(rec,brush); + painter->drawRect(rec); } void TrackedElementView::getNotified() { + update(); +} + +void TrackedElementView::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + TrackedElement *elem = dynamic_cast(getModel()); + + elem->pressed(); + update(); + + QGraphicsObject::mousePressEvent(event); +} + +void TrackedElementView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + TrackedElement *elem = dynamic_cast(getModel()); + + elem->notPressed(); + update(); + QGraphicsObject::mousePressEvent(event); } diff --git a/biotracker/View/TrackedElementView.h b/biotracker/View/TrackedElementView.h index 9d2cf37..87c724d 100644 --- a/biotracker/View/TrackedElementView.h +++ b/biotracker/View/TrackedElementView.h @@ -1,7 +1,7 @@ #ifndef TRACKEDELEMENTVIEW_H #define TRACKEDELEMENTVIEW_H -#include "../biotracker/Interfaces/IViewTrackedComponent.h" +#include "../biotracker/Interfaces/IView/IViewTrackedComponent.h" class TrackedElementView : public IViewTrackedComponent { @@ -17,6 +17,14 @@ class TrackedElementView : public IViewTrackedComponent // IViewTrackedComponent interface public Q_SLOTS: void getNotified() override; + + // QGraphicsItem interface +protected: + virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override; + virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; + +private: + QRectF m_boundingRect; }; #endif // TRACKEDELEMENTVIEW_H diff --git a/biotracker/View/TrackedImageView.cpp b/biotracker/View/TrackedImageView.cpp index 390941d..9dbadff 100644 --- a/biotracker/View/TrackedImageView.cpp +++ b/biotracker/View/TrackedImageView.cpp @@ -1,7 +1,7 @@ #include "TrackedImageView.h" #include -#include "Interfaces/icontroller.h" +#include "Interfaces/IController/icontroller.h" #include "Model/BioTracker3TextureObject.h" diff --git a/biotracker/View/TrackedImageView.h b/biotracker/View/TrackedImageView.h index 6eec9fa..e64dfcb 100644 --- a/biotracker/View/TrackedImageView.h +++ b/biotracker/View/TrackedImageView.h @@ -1,10 +1,10 @@ #ifndef TRACKEDIMAGEVIEW_H #define TRACKEDIMAGEVIEW_H -#include "Interfaces/IViewOpenGLWidget.h" +#include "Interfaces/IView/IViewOpenGLWidget.h" #include "QPainter" -#include "Interfaces/IViewWidget.h" +#include "Interfaces/IView/IViewWidget.h" #include "TextureObject.h" class TrackedImageView : public IViewOpenGLWidget From ae4078e2bab7b4bc9d33bea062f04f2f9c704011 Mon Sep 17 00:00:00 2001 From: anjoer Date: Thu, 17 Nov 2016 17:11:12 +0100 Subject: [PATCH 7/8] added VisualParadigm Project --- biotracker/View/GraphicsView.cpp | 15 +++++++++++++++ biotracker/View/GraphicsView.h | 22 ++++++++++++++++++++++ biotracker/src/main.cpp | 2 +- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 biotracker/View/GraphicsView.cpp create mode 100644 biotracker/View/GraphicsView.h diff --git a/biotracker/View/GraphicsView.cpp b/biotracker/View/GraphicsView.cpp new file mode 100644 index 0000000..eace4d4 --- /dev/null +++ b/biotracker/View/GraphicsView.cpp @@ -0,0 +1,15 @@ +#include "GraphicsView.h" + +GraphicsView::GraphicsView(QWidget *parent, IController *controller, IModel *model) : + IGraphicsView(parent, controller, model) +{ + m_GraphicsScene = new QGraphicsScene(); + this->setScene(m_GraphicsScene); + + this->show(); +} + +void GraphicsView::getNotified() +{ + +} diff --git a/biotracker/View/GraphicsView.h b/biotracker/View/GraphicsView.h new file mode 100644 index 0000000..9ab4a89 --- /dev/null +++ b/biotracker/View/GraphicsView.h @@ -0,0 +1,22 @@ +#ifndef GRAPHICSVIEW_H +#define GRAPHICSVIEW_H + +#include "Interfaces/IView/IGraphicsView.h" +#include "QGraphicsScene" + +class GraphicsView : public IGraphicsView +{ +public: + GraphicsView(QWidget *parent = 0, IController *controller = 0, IModel *model = 0); + + void addGraphicsItem(QGraphicsItem *item); + + // IGraphicsView interface +public Q_SLOTS: + void getNotified() override; + +private: + QGraphicsScene *m_GraphicsScene; +}; + +#endif // GRAPHICSVIEW_H diff --git a/biotracker/src/main.cpp b/biotracker/src/main.cpp index fd19aef..cf5f72f 100644 --- a/biotracker/src/main.cpp +++ b/biotracker/src/main.cpp @@ -16,6 +16,7 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); + /// NOTE edit by Andi qRegisterMetaType("cv::Mat"); qRegisterMetaType("std::size_t"); @@ -23,7 +24,6 @@ int main(int argc, char *argv[]) { - /// NOTE edit by Andi //BioTrackerController mController; BioTracker3App bioTracker3(&app); From 9aa55881ff19d20139d13bea897c160a7129da24 Mon Sep 17 00:00:00 2001 From: anjoer Date: Fri, 18 Nov 2016 17:02:05 +0100 Subject: [PATCH 8/8] Added Views for TextureObjects and TrackedComponents --- biotracker/View/BioTracker3MainWindow.cpp | 10 ++++-- biotracker/View/GraphicsView.cpp | 38 +++++++++++++++++++++++ biotracker/View/GraphicsView.h | 5 +++ biotracker/View/TextureObjectView.cpp | 26 ++++++++++++++++ biotracker/View/TextureObjectView.h | 21 +++++++++++++ biotracker/View/TrackedElementView.cpp | 12 ++++--- biotracker/View/TrackedElementView.h | 12 ++++--- 7 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 biotracker/View/TextureObjectView.cpp create mode 100644 biotracker/View/TextureObjectView.h diff --git a/biotracker/View/BioTracker3MainWindow.cpp b/biotracker/View/BioTracker3MainWindow.cpp index 577bce8..84aee44 100644 --- a/biotracker/View/BioTracker3MainWindow.cpp +++ b/biotracker/View/BioTracker3MainWindow.cpp @@ -6,6 +6,8 @@ #include "qfiledialog.h" #include "QLayout" +#include "View/GraphicsView.h" + BioTracker3MainWindow::BioTracker3MainWindow(QWidget *parent, IController *controller, IModel *model) : IViewMainWindow(parent, controller, model), ui(new Ui::BioTracker3MainWindow) @@ -27,8 +29,12 @@ void BioTracker3MainWindow::addVideoControllWidget(IView *widget) void BioTracker3MainWindow::addVideoView(IView *videoView) { - dynamic_cast(videoView)->setParent(ui->trackingArea); - ui->videoViewLayout->addWidget(dynamic_cast(videoView)); + GraphicsView *graphView = dynamic_cast(videoView); + graphView->setParent(ui->trackingArea); + ui->videoViewLayout->addWidget(graphView); + // gl widget + //dynamic_cast(videoView)->setParent(ui->trackingArea); + //ui->videoViewLayout->addWidget(dynamic_cast(videoView)); } void BioTracker3MainWindow::on_actionOpen_Video_triggered() diff --git a/biotracker/View/GraphicsView.cpp b/biotracker/View/GraphicsView.cpp index eace4d4..b9820c0 100644 --- a/biotracker/View/GraphicsView.cpp +++ b/biotracker/View/GraphicsView.cpp @@ -1,4 +1,6 @@ #include "GraphicsView.h" +#include "QTimeLine" +#include "QWheelEvent" GraphicsView::GraphicsView(QWidget *parent, IController *controller, IModel *model) : IGraphicsView(parent, controller, model) @@ -7,9 +9,45 @@ GraphicsView::GraphicsView(QWidget *parent, IController *controller, IModel *mod this->setScene(m_GraphicsScene); this->show(); + +} + +void GraphicsView::addGraphicsItem(QGraphicsItem *item) +{ + m_GraphicsScene->addItem(item); + + update(); +} + +void GraphicsView::addPixmapItem(QGraphicsItem *item) +{ + m_GraphicsScene->addItem(item); + + update(); } void GraphicsView::getNotified() { } + +void GraphicsView::wheelEvent(QWheelEvent *event) +{ + //if ctrl pressed, use original functionality + if(event->modifiers() & Qt::ControlModifier) + { + QGraphicsView::wheelEvent(event); + } + //otherwise, do yours + else + { + if(event->delta() > 0) + { + scale(1.1,1.1); + } + else + { + scale(0.9,0.9); + } + } +} diff --git a/biotracker/View/GraphicsView.h b/biotracker/View/GraphicsView.h index 9ab4a89..ab0bb69 100644 --- a/biotracker/View/GraphicsView.h +++ b/biotracker/View/GraphicsView.h @@ -10,6 +10,7 @@ class GraphicsView : public IGraphicsView GraphicsView(QWidget *parent = 0, IController *controller = 0, IModel *model = 0); void addGraphicsItem(QGraphicsItem *item); + void addPixmapItem(QGraphicsItem *item); // IGraphicsView interface public Q_SLOTS: @@ -17,6 +18,10 @@ public Q_SLOTS: private: QGraphicsScene *m_GraphicsScene; + + // QWidget interface +protected: + void wheelEvent(QWheelEvent *event) override; }; #endif // GRAPHICSVIEW_H diff --git a/biotracker/View/TextureObjectView.cpp b/biotracker/View/TextureObjectView.cpp new file mode 100644 index 0000000..70e7678 --- /dev/null +++ b/biotracker/View/TextureObjectView.cpp @@ -0,0 +1,26 @@ +#include "TextureObjectView.h" +#include "Model/BioTracker3TextureObject.h" + + +TextureObjectView::TextureObjectView(QObject *parent, IController *controller, IModel *model) : + IGraphicsPixmapItem(parent, controller, model) +{ + setZValue(-1); +} + +void TextureObjectView::getNotified() +{ + BioTracker3TextureObject *texture = dynamic_cast(getModel()); + QPixmap *pmap = new QPixmap; + pmap->convertFromImage(texture->get()); + setPixmap(*pmap); + + update(); +} + +void TextureObjectView::connectModelView() +{ + QObject::connect(getModel(), &IModel::notifyView, this, &TextureObjectView::getNotified); + + getNotified(); +} diff --git a/biotracker/View/TextureObjectView.h b/biotracker/View/TextureObjectView.h new file mode 100644 index 0000000..b652466 --- /dev/null +++ b/biotracker/View/TextureObjectView.h @@ -0,0 +1,21 @@ +#ifndef TEXTUREOBJECTVIEW_H +#define TEXTUREOBJECTVIEW_H + +#include "Interfaces/IView/IGraphicsPixmapItem.h" + +class TextureObjectView : public IGraphicsPixmapItem +{ + Q_OBJECT +public: + TextureObjectView(QObject *parent = 0, IController *controller = 0, IModel *model = 0); + + // IGraphicsPixmapItem interface +public Q_SLOTS: + void getNotified() override; + + // IView interface +protected: + void connectModelView() override; +}; + +#endif // TEXTUREOBJECTVIEW_H diff --git a/biotracker/View/TrackedElementView.cpp b/biotracker/View/TrackedElementView.cpp index 5bc2086..f4e74c3 100644 --- a/biotracker/View/TrackedElementView.cpp +++ b/biotracker/View/TrackedElementView.cpp @@ -7,7 +7,9 @@ TrackedElementView::TrackedElementView(QGraphicsItem *parent, IController *contr IViewTrackedComponent(parent, controller, model) { TrackedElement *elem = dynamic_cast(getModel()); - m_boundingRect = QRectF(0,0, elem->getX(), elem->getY()); + m_boundingRect = QRectF(0,0, 100, 100); + + setAcceptHoverEvents(true); } QRectF TrackedElementView::boundingRect() const @@ -43,22 +45,22 @@ void TrackedElementView::getNotified() update(); } -void TrackedElementView::mousePressEvent(QGraphicsSceneMouseEvent *event) +void TrackedElementView::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { TrackedElement *elem = dynamic_cast(getModel()); elem->pressed(); update(); - QGraphicsObject::mousePressEvent(event); + QGraphicsObject::hoverEnterEvent(event); } -void TrackedElementView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +void TrackedElementView::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { TrackedElement *elem = dynamic_cast(getModel()); elem->notPressed(); update(); - QGraphicsObject::mousePressEvent(event); + QGraphicsObject::hoverLeaveEvent(event); } diff --git a/biotracker/View/TrackedElementView.h b/biotracker/View/TrackedElementView.h index 87c724d..b2ca1ea 100644 --- a/biotracker/View/TrackedElementView.h +++ b/biotracker/View/TrackedElementView.h @@ -18,13 +18,15 @@ class TrackedElementView : public IViewTrackedComponent public Q_SLOTS: void getNotified() override; - // QGraphicsItem interface -protected: - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override; - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; - private: QRectF m_boundingRect; + + + + // QGraphicsItem interface +protected: + void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override; + void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override; }; #endif // TRACKEDELEMENTVIEW_H