From bd7dccce3f731d2218b27eaa8a8d4e6a05c6e24d Mon Sep 17 00:00:00 2001 From: NeeEoo Date: Thu, 10 Aug 2023 17:44:07 +0200 Subject: [PATCH] Ansi Colors for Mac and Linux --- source/funkin/backend/utils/NativeAPI.hx | 108 +++++++++++++++-------- 1 file changed, 71 insertions(+), 37 deletions(-) diff --git a/source/funkin/backend/utils/NativeAPI.hx b/source/funkin/backend/utils/NativeAPI.hx index cb812fb9..95b4eb53 100644 --- a/source/funkin/backend/utils/NativeAPI.hx +++ b/source/funkin/backend/utils/NativeAPI.hx @@ -49,58 +49,92 @@ class NativeAPI { /** * Sets the console colors */ - public static function setConsoleColors(foregroundColor:ConsoleColor = LIGHTGRAY, ?backgroundColor:ConsoleColor = BLACK) { + public static function setConsoleColors(foregroundColor:ConsoleColor = NONE, ?backgroundColor:ConsoleColor = NONE) { #if windows + if(foregroundColor == NONE) + foregroundColor = LIGHTGRAY; + if(backgroundColor == NONE) + backgroundColor = BLACK; + var fg = cast(foregroundColor, Int); var bg = cast(backgroundColor, Int); Windows.setConsoleColors((bg * 16) + fg); + #else + Sys.print("\x1b[0m"); + if(foregroundColor != NONE) + Sys.print("\x1b[" + Std.int(consoleColorToANSI(foregroundColor)) + "m"); + if(backgroundColor != NONE) + Sys.print("\x1b[" + Std.int(consoleColorToANSI(backgroundColor) + 10) + "m"); #end } + public static function consoleColorToANSI(color:ConsoleColor) { + return switch(color) { + case BLACK: 30; + case DARKBLUE: 34; + case DARKGREEN: 32; + case DARKCYAN: 36; + case DARKRED: 31; + case DARKMAGENTA: 35; + case DARKYELLOW: 33; + case LIGHTGRAY: 37; + case GRAY: 90; + case BLUE: 94; + case GREEN: 92; + case CYAN: 96; + case RED: 91; + case MAGENTA: 95; + case YELLOW: 93; + case WHITE | _: 97; + } + } + public static function consoleColorToOpenFL(color:ConsoleColor) { return switch(color) { - case BLACK: 0xFF000000; - case DARKBLUE: 0xFF000088; - case DARKGREEN: 0xFF008800; - case DARKCYAN: 0xFF008888; - case DARKRED: 0xFF880000; - case DARKMAGENTA: 0xFF880000; + case BLACK: 0xFF000000; + case DARKBLUE: 0xFF000088; + case DARKGREEN: 0xFF008800; + case DARKCYAN: 0xFF008888; + case DARKRED: 0xFF880000; + case DARKMAGENTA: 0xFF880000; case DARKYELLOW: 0xFF888800; - case LIGHTGRAY: 0xFFBBBBBB; - case GRAY: 0xFF888888; - case BLUE: 0xFF0000FF; - case GREEN: 0xFF00FF00; - case CYAN: 0xFF00FFFF; - case RED: 0xFFFF0000; - case MAGENTA: 0xFFFF00FF; + case LIGHTGRAY: 0xFFBBBBBB; + case GRAY: 0xFF888888; + case BLUE: 0xFF0000FF; + case GREEN: 0xFF00FF00; + case CYAN: 0xFF00FFFF; + case RED: 0xFFFF0000; + case MAGENTA: 0xFFFF00FF; case YELLOW: 0xFFFFFF00; - case WHITE | _: 0xFFFFFFFF; + case WHITE | _: 0xFFFFFFFF; } } } -@:enum abstract ConsoleColor(Int) { - var BLACK:ConsoleColor = 0; - var DARKBLUE:ConsoleColor = 1; - var DARKGREEN:ConsoleColor = 2; - var DARKCYAN:ConsoleColor = 3; - var DARKRED:ConsoleColor = 4; - var DARKMAGENTA:ConsoleColor = 5; - var DARKYELLOW:ConsoleColor = 6; - var LIGHTGRAY:ConsoleColor = 7; - var GRAY:ConsoleColor = 8; - var BLUE:ConsoleColor = 9; - var GREEN:ConsoleColor = 10; - var CYAN:ConsoleColor = 11; - var RED:ConsoleColor = 12; - var MAGENTA:ConsoleColor = 13; - var YELLOW:ConsoleColor = 14; - var WHITE:ConsoleColor = 15; +enum abstract ConsoleColor(Int) { + var BLACK = 0; + var DARKBLUE = 1; + var DARKGREEN = 2; + var DARKCYAN = 3; + var DARKRED = 4; + var DARKMAGENTA = 5; + var DARKYELLOW = 6; + var LIGHTGRAY = 7; + var GRAY = 8; + var BLUE = 9; + var GREEN = 10; + var CYAN = 11; + var RED = 12; + var MAGENTA = 13; + var YELLOW = 14; + var WHITE = 15; + + var NONE = -1; } -@:enum abstract MessageBoxIcon(Int) { - var MSG_ERROR:MessageBoxIcon = 0x00000010; - var MSG_QUESTION:MessageBoxIcon = 0x00000020; - var MSG_WARNING:MessageBoxIcon = 0x00000030; - var MSG_INFORMATION:MessageBoxIcon = 0x00000040; +enum abstract MessageBoxIcon(Int) { + var MSG_ERROR = 0x00000010; + var MSG_QUESTION = 0x00000020; + var MSG_WARNING = 0x00000030; + var MSG_INFORMATION = 0x00000040; } \ No newline at end of file