-
Notifications
You must be signed in to change notification settings - Fork 302
/
ScrollControlMessage.ts
44 lines (38 loc) · 1.45 KB
/
ScrollControlMessage.ts
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
import { ControlMessage, ControlMessageInterface } from './ControlMessage';
import Position, { PositionInterface } from '../Position';
export interface ScrollControlMessageInterface extends ControlMessageInterface {
position: PositionInterface;
hScroll: number;
vScroll: number;
}
export class ScrollControlMessage extends ControlMessage {
public static PAYLOAD_LENGTH = 20;
constructor(readonly position: Position, readonly hScroll: number, readonly vScroll: number) {
super(ControlMessage.TYPE_SCROLL);
}
/**
* @override
*/
public toBuffer(): Buffer {
const buffer = new Buffer(ScrollControlMessage.PAYLOAD_LENGTH + 1);
buffer.writeUInt8(this.type, 0);
buffer.writeUInt32BE(this.position.point.x, 1);
buffer.writeUInt32BE(this.position.point.y, 5);
buffer.writeUInt16BE(this.position.screenSize.width, 9);
buffer.writeUInt16BE(this.position.screenSize.height, 11);
buffer.writeUInt32BE(this.hScroll, 13);
buffer.writeUInt32BE(this.vScroll, 17);
return buffer;
}
public toString(): string {
return `ScrollControlMessage{hScroll=${this.hScroll}, vScroll=${this.vScroll}, position=${this.position}}`;
}
public toJSON(): ScrollControlMessageInterface {
return {
type: this.type,
position: this.position.toJSON(),
hScroll: this.hScroll,
vScroll: this.vScroll,
};
}
}