-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathBioTrackerApp.cpp
More file actions
134 lines (106 loc) · 3.69 KB
/
Copy pathBioTrackerApp.cpp
File metadata and controls
134 lines (106 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include "BioTrackerApp.h"
#include <limits>
#include <thread>
#include "biotracker/util/QOpenGLContextWrapper.h"
namespace BioTracker {
namespace Core {
BioTrackerApp::BioTrackerApp()
: m_settings()
, m_registry(Registry::getInstance())
, m_trackingThread(m_settings) {
initConnects();
}
BioTrackerApp::~BioTrackerApp() {
m_trackingThread.terminate();
m_trackingThread.wait();
}
void BioTrackerApp::initConnects() {
QObject::connect(&m_trackingThread, &Core::TrackingThread::frameCalculated,
this, &BioTrackerApp::frameCalculatedFromTrackingThread);
QObject::connect(&m_trackingThread, &Core::TrackingThread::notifyGUI,
this, &BioTrackerApp::notifyFromTrackingThread);
QObject::connect(&m_trackingThread, &Core::TrackingThread::fileOpened,
this, &BioTrackerApp::fileOpenedFromTrackingThread);
}
void BioTrackerApp::initializeOpenGL(QOpenGLContext *mainContext,
TextureObject &texture) {
m_trackingThread.initializeOpenGL(mainContext, texture);
}
void BioTrackerApp::openVideo(const boost::filesystem::path &path) {
m_trackingThread.loadVideo(path);
}
void BioTrackerApp::openImages(std::vector<boost::filesystem::path> paths) {
m_trackingThread.loadPictures(std::move(paths));
}
void BioTrackerApp::openCamera(int device) {
m_trackingThread.openCamera(device);
}
void BioTrackerApp::play() {
m_isRunning = true;
m_trackingThread.setPlay();
}
void BioTrackerApp::pause() {
m_isRunning = false;
m_trackingThread.setPause();
}
void BioTrackerApp::paint(QPaintDevice &device, QPainter &painter) {
// using painters algorithm to draw in the right order
m_trackingThread.paintRaw();
painter.begin(&device);
//painter->setWindow(QRect(0,0,w,h));
m_trackingThread.paintOverlay(painter);
m_trackingThread.paintDone();
painter.end();
}
bool BioTrackerApp::isRendering() {
return m_trackingThread.isRendering();
}
bool BioTrackerApp::isRunning() {
return m_isRunning;
}
void BioTrackerApp::setFrame(const size_t frameNumber) {
m_trackingThread.setFrameNumber(frameNumber);
}
void BioTrackerApp::setTargetFps(const double fps) {
m_trackingThread.setFps(fps);
}
double BioTrackerApp::getTargetFps() const {
return std::numeric_limits<double>::infinity();
}
size_t BioTrackerApp::getNumFrames() const {
return m_trackingThread.getVideoLength();
}
size_t BioTrackerApp::getCurrentFrameNumber() const {
return m_trackingThread.getFrameNumber();
}
void BioTrackerApp::setTrackingAlgorithm(std::shared_ptr<TrackingAlgorithm>
trackingAlgorithm) {
m_trackingThread.setTrackingAlgorithm(std::move(trackingAlgorithm));
}
void BioTrackerApp::mouseEvent(QMouseEvent *event) {
m_trackingThread.mouseEvent(event);
}
void BioTrackerApp::keyboardEvent(QKeyEvent *event) {
m_trackingThread.keyboardEvent(event);
}
// all slots will only pass the signals through
void BioTrackerApp::notifyFromTrackingThread(const std::string &message,
const MSGS::MTYPE type) {
Q_EMIT notify(message, type);
}
/**
* @brief BioTrackerApp::frameCalculatedFromTrackingThread
* @param frameNumber the number of the last frame that was calculated
* @param filename
* @param currentFps, when -1, then the stream is not playing but the user clicked next
*/
void BioTrackerApp::frameCalculatedFromTrackingThread(const size_t frameNumber,
const std::string filename, const double currentFps) {
Q_EMIT frameCalculated(frameNumber, filename, currentFps);
}
void BioTrackerApp::fileOpenedFromTrackingThread(const std::string fileName,
const size_t numFrame) {
Q_EMIT fileOpened(fileName, numFrame);
}
} // Core
} // BioTracker