Skip to content

Commit 44c8809

Browse files
committed
updates
1 parent 4a09c65 commit 44c8809

File tree

3 files changed

+68
-11
lines changed

3 files changed

+68
-11
lines changed

src/client/src/app/app.component.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<div style="position:relative;">
2+
<canvas #drawingcanvas style="position:absolute;"></canvas>
3+
<canvas #mousecanvas style="position:absolute;"></canvas>
4+
</div>

src/client/src/app/app.component.ts

Lines changed: 63 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, OnInit} from '@angular/core';
1+
import {Component, OnInit, ViewChild, ElementRef, HostListener} from '@angular/core';
22
import {MatDialog} from '@angular/material';
33
import {ConnectDialog} from './connect.dialog/connect.dialog';
44
import { ConnectModel } from './models/connect.model';
@@ -7,11 +7,15 @@ import { CreateClientDriverConfiguration, IClientDriver, Monitor, Point, Rect, W
77

88
@Component({selector : 'app-root', templateUrl : './app.component.html'})
99
export class AppComponent implements OnInit {
10+
@ViewChild('HTMLCanvasMouseImage_') HTMLCanvasMouseImage_:ElementRef;
11+
@ViewChild('HTMLCanvasScreenImage_') HTMLCanvasScreenImage_:ElementRef;
12+
OriginalImage_: HTMLImageElement;
1013

1114
ScaleImage_ = false;
1215
ClientDriver_: IClientDriver;
1316
Socket_: WebSocket;
1417
Monitors = new Array<Monitor>();
18+
Cursor_: ImageData;
1519

1620
constructor(public dialog: MatDialog) {}
1721
public ngOnInit(): void
@@ -34,6 +38,7 @@ export class AppComponent implements OnInit {
3438
.onMessage((ws: WebSocket, message: WSMessage) => { console.log('onMessage length:' + message.data.byteLength); })
3539
.onDisconnection((ws: WebSocket, code: number, message: string) => {
3640
console.log('onDisconnection');
41+
this.Cursor_ = null;
3742
this.ScaleImage_ = false;
3843
this.Monitors = new Array<Monitor>();
3944
this.ClientDriver_ = null;
@@ -42,8 +47,8 @@ export class AppComponent implements OnInit {
4247
})
4348
.onClipboardChanged((clipstring: string) => { console.log('onClipboardChanged: ' + clipstring); })
4449
.onFrameChanged((image: HTMLImageElement, monitor: Monitor, rect: Rect) => {
45-
46-
})
50+
this.HTMLCanvasScreenImage_.nativeElement.getContext("2d").drawImage(image, monitor.OffsetX + rect.Origin.X, monitor.OffsetY + rect.Origin.Y);
51+
})
4752
.onMonitorsChanged((monitors: Monitor[]) => {
4853
this.Monitors = monitors;
4954
var width = 0;
@@ -53,17 +58,22 @@ export class AppComponent implements OnInit {
5358
if (m.Height > maxheight)
5459
maxheight = m.Height;
5560
});
56-
61+
this.HTMLCanvasScreenImage_.nativeElement.width = width;
62+
this.HTMLCanvasScreenImage_.nativeElement.height = maxheight;
63+
5764
})
5865
.onMouseImageChanged((image: ImageData) => {
59-
60-
})
66+
this.Cursor_ = image;
67+
this.HTMLCanvasMouseImage_.nativeElement.getContext("2d").putImageData(this.Cursor_, 0, 0);
68+
})
6169
.onMousePositionChanged((pos: Point) => {
62-
63-
})
70+
this.HTMLCanvasMouseImage_.nativeElement.style.top = pos.Y + "px";
71+
this.HTMLCanvasMouseImage_.nativeElement.style.left = pos.X + "px";
72+
})
6473
.onNewFrame((image: HTMLImageElement, monitor: Monitor, rect: Rect) => {
65-
66-
})
74+
this.HTMLCanvasScreenImage_.nativeElement.getContext("2d").drawImage(image, monitor.OffsetX, monitor.OffsetY);
75+
this.OriginalImage_ = image;
76+
})
6777
.Build(this.Socket_);
6878

6979
this.Socket_.onerror = (ev: Event) => { console.log(ev); };
@@ -73,4 +83,47 @@ export class AppComponent implements OnInit {
7383
}
7484
});
7585
}
86+
87+
@HostListener('window:mousedown', ['$event'])
88+
mousedown(ev: MouseEvent) {
89+
if(this.ClientDriver_){
90+
this.ClientDriver_.SendMouseDown(ev.button);
91+
}
92+
}
93+
@HostListener('window:onkeydown', ['$event'])
94+
onkeydown(ev: KeyboardEvent) {
95+
if(this.ClientDriver_){
96+
this.ClientDriver_.SendKeyDown(ConvertToKeyCode(ev));
97+
}
98+
}
99+
@HostListener('window:onkeyup', ['$event'])
100+
onkeyup(ev: KeyboardEvent) {
101+
if(this.ClientDriver_){
102+
this.ClientDriver_.SendKeyUp(ConvertToKeyCode(ev));
103+
}
104+
}
105+
@HostListener('window:onwheel', ['$event'])
106+
onwheel(ev: WheelEvent) {
107+
if(this.ClientDriver_){
108+
this.ClientDriver_.SendMouseScroll(ev.deltaY < 0 ? -1 : 1);
109+
}
110+
}
111+
@HostListener('window:onmove', ['$event'])
112+
onmove(ev: WheelEvent) {
113+
if(this.ClientDriver_){
114+
this.ClientDriver_.SendMousePosition({ Y: ev.pageY, X: ev.pageX });
115+
}
116+
}
117+
@HostListener('window:onmouseup', ['$event'])
118+
onmouseup(ev: MouseEvent) {
119+
if(this.ClientDriver_){
120+
this.ClientDriver_.SendMouseUp(ev.button);
121+
}
122+
}
123+
@HostListener('window:onwonmousedownheel', ['$event'])
124+
onmousedown(ev: MouseEvent) {
125+
if(this.ClientDriver_){
126+
this.ClientDriver_.SendMouseDown(ev.button);
127+
}
128+
}
76129
}

src/client/src/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<meta name="viewport" content="width=device-width, initial-scale=1">
99
<link rel="icon" type="image/x-icon" href="favicon.ico">
1010
</head>
11-
<body>
11+
<body style="margin:0;padding:0;">
1212
<app-root></app-root>
1313
</body>
1414
</html>

0 commit comments

Comments
 (0)