From f455f2a20bdfd3641620c046a28e5247fbe2fd9e Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 15 Jun 2023 14:26:07 +0200 Subject: [PATCH] outsource ANSI (kutil) --- .../minosoft/data/text/formatting/ANSI.kt | 27 +++++++++++++++++++ .../data/text/formatting/FormattingCodes.kt | 13 ++++----- .../data/text/formatting/color/RGBColor.kt | 3 ++- 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/data/text/formatting/ANSI.kt diff --git a/src/main/java/de/bixilon/minosoft/data/text/formatting/ANSI.kt b/src/main/java/de/bixilon/minosoft/data/text/formatting/ANSI.kt new file mode 100644 index 000000000..329679606 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/data/text/formatting/ANSI.kt @@ -0,0 +1,27 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.data.text.formatting + +@Deprecated("Kutil 1.23") +object ANSI { + const val ESCAPE = "\u001b[" + + fun escape(text: String): String { + return ESCAPE + text + "m" + } + + fun formatting(code: Int): String = escape(code.toString()) + + fun rgb(red: Int, green: Int, blue: Int): String = escape("38;2;$red;$green;${blue}") +} diff --git a/src/main/java/de/bixilon/minosoft/data/text/formatting/FormattingCodes.kt b/src/main/java/de/bixilon/minosoft/data/text/formatting/FormattingCodes.kt index 085f4382b..a592d7f52 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/formatting/FormattingCodes.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/formatting/FormattingCodes.kt @@ -14,18 +14,19 @@ package de.bixilon.minosoft.data.text.formatting import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum +import de.bixilon.minosoft.data.text.formatting.ANSI.formatting import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap enum class FormattingCodes( val char: Char, val ansi: String, ) { - OBFUSCATED('k', "\u001b[5m"), - BOLD('l', "\u001b[1m"), - STRIKETHROUGH('m', "\u001b[9m"), - UNDERLINED('n', "\u001b[4m"), - ITALIC('o', "\u001b[3m"), - RESET('r', "\u001B[0m"), + OBFUSCATED('k', formatting(5)), + BOLD('l', formatting(1)), + STRIKETHROUGH('m', formatting(9)), + UNDERLINED('n', formatting(4)), + ITALIC('o', formatting(3)), + RESET('r', formatting(0)), ; val json: String = name.lowercase() diff --git a/src/main/java/de/bixilon/minosoft/data/text/formatting/color/RGBColor.kt b/src/main/java/de/bixilon/minosoft/data/text/formatting/color/RGBColor.kt index 0701b7fa9..daa8a198e 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/formatting/color/RGBColor.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/formatting/color/RGBColor.kt @@ -17,11 +17,12 @@ import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec4.Vec4 import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.TextComponent +import de.bixilon.minosoft.data.text.formatting.ANSI import de.bixilon.minosoft.data.text.formatting.TextFormattable import org.checkerframework.common.value.qual.IntRange class RGBColor(val rgba: Int) : TextFormattable { - val ansi: String = "\u001b[38;2;$red;$green;${blue}m" + val ansi: String = ANSI.rgb(red, green, blue) @JvmOverloads constructor(red: Int, green: Int, blue: Int, alpha: Int = 0xFF) : this(alpha or (blue shl 8) or (green shl 16) or (red shl 24))