-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmessage.cpp
More file actions
48 lines (38 loc) · 972 Bytes
/
message.cpp
File metadata and controls
48 lines (38 loc) · 972 Bytes
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
#include "message.h"
Message::Message()
{
}
Message::~Message()
{
}
bool Message::readFrom(std::istream &stream){
stream.read((char*)messageBuffer.data(), messageBuffer.size());
return stream.good();
}
bool Message::pressed() const {
return messageBuffer[1];
}
int Message::pressedButtons() const {
return messageBuffer[7];
}
std::list<Message::Point> Message::points() const{
std::list<Point> l;
int buttons = pressedButtons();
for(auto index : indices){
if( buttons & index.first ){
l.push_back(readPoint(index.second));
}
}
return l;
}
unsigned short Message::readCoord(int pos) const{
return messageBuffer[pos] << 8 | messageBuffer[pos + 1];
}
Message::Point Message::readPoint(int offset) const {
int xOffset = offset == 2 ? offset : offset + 2;
int yOffset = offset == 2 ? offset + 2: offset;
Point p = {
readCoord(xOffset), readCoord(yOffset)
};
return p;
}