package org.saturnclient.ui; import org.saturnclient.common.provider.GLFWProvider; public class Utils { public static boolean isHovering(int mouseX, int mouseY, int elementWidth, int elementHeight, float elementScale) { return mouseX >= 0 && mouseX <= (elementWidth * elementScale) && mouseY >= 0 && mouseY <= (elementHeight * elementScale); } public static char getCharFromKey(int keyCode, int modifiers) { boolean shift = (modifiers & GLFWProvider.GLFW_MOD_SHIFT) != 0; // A-Z if (keyCode >= GLFWProvider.GLFW_KEY_A && keyCode <= GLFWProvider.GLFW_KEY_Z) { return (char) (shift ? 'A' + (keyCode - GLFWProvider.GLFW_KEY_A) : 'a' + (keyCode - GLFWProvider.GLFW_KEY_A)); } // 0-9 if (keyCode >= GLFWProvider.GLFW_KEY_0 && keyCode <= GLFWProvider.GLFW_KEY_9) { return shift ? ")!@#$%^&*(".charAt(keyCode - GLFWProvider.GLFW_KEY_0) : (char) ('0' + (keyCode - GLFWProvider.GLFW_KEY_0)); } // Special characters return switch (keyCode) { case GLFWProvider.GLFW_KEY_SPACE -> ' '; case GLFWProvider.GLFW_KEY_PERIOD -> shift ? '>' : '.'; case GLFWProvider.GLFW_KEY_COMMA -> shift ? '<' : ','; case GLFWProvider.GLFW_KEY_MINUS -> shift ? '_' : '-'; case GLFWProvider.GLFW_KEY_EQUAL -> shift ? '+' : '='; case GLFWProvider.GLFW_KEY_SEMICOLON -> shift ? ':' : ';'; case GLFWProvider.GLFW_KEY_APOSTROPHE -> shift ? '"' : '\''; case GLFWProvider.GLFW_KEY_SLASH -> shift ? '?' : '/'; case GLFWProvider.GLFW_KEY_BACKSLASH -> shift ? '|' : '\\'; case GLFWProvider.GLFW_KEY_LEFT_BRACKET -> shift ? '{' : '['; case GLFWProvider.GLFW_KEY_RIGHT_BRACKET -> shift ? '}' : ']'; case GLFWProvider.GLFW_KEY_GRAVE_ACCENT -> shift ? '~' : '`'; default -> '\0'; }; } /** * A display name from an id: each underscore-separated word capitalized, so * "black_hole_white" becomes "Black Hole White". */ public static String nameFromId(String id) { StringBuilder builder = new StringBuilder(); for (String word : id.split("_")) { if (word.isEmpty()) { continue; } if (!builder.isEmpty()) { builder.append(' '); } builder.append(Character.toUpperCase(word.charAt(0))).append(word.substring(1)); } return builder.toString(); } }