LNXSDK/Kha/Backends/HTML5/kha/input/MouseImpl.hx

77 lines
2.1 KiB
Haxe
Raw Normal View History

2025-01-22 16:18:30 +01:00
package kha.input;
import kha.SystemImpl;
import kha.input.Mouse;
class MouseImpl extends kha.input.Mouse {
public function new() {
super();
}
override public function lock(): Void {
SystemImpl.lockMouse();
}
override public function unlock(): Void {
SystemImpl.unlockMouse();
}
override public function canLock(): Bool {
return SystemImpl.canLockMouse();
}
override public function isLocked(): Bool {
return SystemImpl.isMouseLocked();
}
override public function notifyOnLockChange(func: Void->Void, error: Void->Void): Void {
SystemImpl.notifyOfMouseLockChange(func, error);
}
override public function removeFromLockChange(func: Void->Void, error: Void->Void): Void {
SystemImpl.removeFromMouseLockChange(func, error);
}
override public function hideSystemCursor(): Void {
SystemImpl.khanvas.style.cursor = "none";
}
override public function showSystemCursor(): Void {
SystemImpl.khanvas.style.cursor = "default";
}
override public function setSystemCursor(cursor: MouseCursor): Void {
SystemImpl.khanvas.style.cursor = switch (cursor) {
case Default: "default";
case Pointer: "pointer";
case Text: "text";
case EastWestResize: "ew-resize";
case NorthSouthResize: "ns-resize";
case NorthEastResize: "ne-resize";
case SouthEastResize: "se-resize";
case NorthWestResize: "nw-resize";
case SouthWestResize: "sw-resize";
case Grab: "grab";
case Grabbing: "grabbing";
case NotAllowed: "not-allowed";
case Wait: "wait";
case Crosshair: "crosshair";
case Custom(image):
var canvas = js.Browser.document.createCanvasElement();
canvas.width = image.width;
canvas.height = image.height;
if (Std.isOfType(image, WebGLImage)) {
canvas.getContext2d().drawImage(cast(image, WebGLImage).image, 0, 0);
}
else {
canvas.getContext2d().drawImage(cast(image, CanvasImage).image, 0, 0);
}
var dataURL = canvas.toDataURL("image/png");
dataURL = StringTools.replace(dataURL, "/^data:image\\/(png|jpg);base64,/", "");
'url(\'$dataURL\'),auto';
default: "default";
}
}
}