New Mouse Icons for Mac!

Co-Authored-By: Mihai Alexandru <77043862+MAJigsaw77@users.noreply.github.com>
This commit is contained in:
NeeEoo
2024-04-15 14:01:04 +02:00
co-authored by Mihai Alexandru
parent 4285307d70
commit a8997daecb
25 changed files with 387 additions and 30 deletions
+105
View File
@@ -1,5 +1,8 @@
package funkin.backend.utils;
import haxe.macro.Expr.Case;
import openfl.ui.Mouse;
import openfl.ui.MouseCursor;
import funkin.backend.utils.native.*;
/**
@@ -72,6 +75,17 @@ class NativeAPI {
#end
}
/**
* Set cursor icon.
**/
public static function setCursorIcon(icon:CodeCursor) {
#if mac
Mac.setMouseCursorIcon(cast icon);
#else
Mouse.cursor = icon.toOpenFL();
#end
}
public static function consoleColorToANSI(color:ConsoleColor) {
return switch(color) {
case BLACK: 30;
@@ -141,4 +155,95 @@ enum abstract MessageBoxIcon(Int) {
var MSG_QUESTION = 0x00000020;
var MSG_WARNING = 0x00000030;
var MSG_INFORMATION = 0x00000040;
}
enum abstract CodeCursor(String) {
var CUSTOM;// = "arrow";
var ARROW;// = "arrow";
var CLICK;// = "click";
var CROSSHAIR;// = "crosshair";
var HAND;// = "hand";
var IBEAM;// = "ibeam";
var MOVE;// = "move";
var RESIZE_H;// = "resize_we";
var RESIZE_V;// = "resize_ns";
var RESIZE_TL;// = "resize_nw";
var RESIZE_TR;// = "resize_ne";
var RESIZE_BL;// = "resize_sw";
var RESIZE_BR;// = "resize_se";
var RESIZE_T;// = "resize_n";
var RESIZE_B;// = "resize_b";
var RESIZE_L;// = "resize_w";
var RESIZE_R;// = "resize_e";
var WAIT;// = "wait";
var WAIT_ARROW;// = "waitarrow";
var DISABLED;// = "disabled";
var DRAG;// = "drag";
var DRAG_OPEN;// = "dragopen";
@:to public function toOpenFL():MouseCursor {
return @:privateAccess switch(cast this) {
case ARROW: MouseCursor.ARROW;
case CROSSHAIR: MouseCursor.__CROSSHAIR;
case CLICK: MouseCursor.BUTTON;
case IBEAM: MouseCursor.IBEAM;
case MOVE: MouseCursor.__MOVE;
case HAND: MouseCursor.HAND;
case DRAG: MouseCursor.HAND;
case DRAG_OPEN: MouseCursor.HAND;
case WAIT: MouseCursor.__WAIT;
case WAIT_ARROW: MouseCursor.__WAIT_ARROW;
case DISABLED: MouseCursor.ARROW;
case RESIZE_TR: MouseCursor.__RESIZE_NESW;
case RESIZE_BL: MouseCursor.__RESIZE_NESW;
case RESIZE_TL: MouseCursor.__RESIZE_NWSE;
case RESIZE_BR: MouseCursor.__RESIZE_NWSE;
case RESIZE_H: MouseCursor.__RESIZE_WE;
case RESIZE_V: MouseCursor.__RESIZE_NS;
case RESIZE_T: MouseCursor.__RESIZE_NS;
case RESIZE_B: MouseCursor.__RESIZE_NS;
case RESIZE_L: MouseCursor.__RESIZE_WE;
case RESIZE_R: MouseCursor.__RESIZE_WE;
case CUSTOM: MouseCursor.__CUSTOM;
//default: ARROW;
}
}
@:to public function toInt():Int {
return switch(cast this) {
case ARROW: 0;
case CROSSHAIR: 1;
case CLICK: 2;
case IBEAM: 3;
case MOVE: 4;
case HAND: 5;
case DRAG: 6;
case DRAG_OPEN: 7;
case WAIT: 8;
case WAIT_ARROW: 9;
case DISABLED: 10;
case RESIZE_TR: 11;
case RESIZE_BL: 12;
case RESIZE_TL: 13;
case RESIZE_BR: 14;
case RESIZE_H: 15;
case RESIZE_V: 16;
case RESIZE_T: 17;
case RESIZE_B: 18;
case RESIZE_L: 19;
case RESIZE_R: 20;
case CUSTOM: -1;
}
}
}