-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtask.cpp
More file actions
98 lines (82 loc) · 1.89 KB
/
Copy pathtask.cpp
File metadata and controls
98 lines (82 loc) · 1.89 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
#include "task.h"
#include "constants.h"
#include <array>
#include <QList>
#include <QListIterator>
#include <QDebug>
Task::Task(Organ::Type organ, int imageId, QObject* parent) :
QObject(parent),
m_organ(organ),
m_image(new UltraSoundImage(imageId, this)),
m_answered(false),
m_correct(false),
m_score(0)
{}
bool Task::answerTask(int x, int y)
{
m_answered = true;
m_correct = m_image->hasOrganTypeAtPosition(x, y, m_organ);
if(m_correct)emit correctChanged(m_correct);
emit answeredChanged(m_answered);
return m_correct;
}
bool Task::answerAnnotation(QList<double> listOfPoints)
{
m_answered = true;
m_correct = true;
QListIterator<double> i(listOfPoints);
while(i.hasNext()){
if(m_image->hasOrganTypeAtPosition(i.next(), i.next(), m_organ)){
m_score += 200;
qDebug() << "New score: "<< m_score << endl;
}
}
if(m_correct){
emit correctChanged(m_correct);
}
emit answeredChanged(m_answered);
emit scoreChanged(m_score);
return m_correct;
}
Task *Task::createRandomTask(QObject *parent)
{
const std::array<int, 15+1> supportsFemur = { //TODO: cleanup
false, //doesn't exist
true,
true,
true,
false,
true,
true,
false,
false,
true,
true,
false,
false,
false,
false,
false
};
int taskId = (rand() % MAX_IMAGES)+1;
Organ::Type organ(Organ::ARTERY);
do {
organ = Organ::Type(rand() % Organ::NUM_TYPES);
} while(organ == Organ::FEMUR && supportsFemur[taskId] == false);
return new Task(organ, taskId, parent);
}
Organ::Type Task::getOrgan() const
{
return m_organ;
}
UltraSoundImage *Task::getImage()
{
return m_image;
}
bool Task::isCorrect() const
{
return m_correct;
}
int Task::getScore() {
return m_score;
}