From 6de93b3acbdb084badee035a7c75cefec5b99641 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 9 Mar 2023 11:28:54 +0100 Subject: [PATCH] javafx: improve some text component performance --- .../bixilon/minosoft/data/text/TextComponent.kt | 15 +++++++++------ .../minosoft/data/text/ChatComponentTest.kt | 1 - 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/text/TextComponent.kt b/src/main/java/de/bixilon/minosoft/data/text/TextComponent.kt index 48cc29660..41e06d897 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/TextComponent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/TextComponent.kt @@ -30,6 +30,7 @@ import javafx.scene.Node import javafx.scene.paint.Color import javafx.scene.text.Text import javafx.util.Duration +import java.util.concurrent.atomic.AtomicInteger open class TextComponent( @@ -117,21 +118,23 @@ open class TextComponent( override fun getJavaFXText(nodes: ObservableList): ObservableList { val text = Text(this.message) - this.color?.let { - if (ErosProfileManager.selected.text.colored) { - text.fill = Color.rgb(it.red, it.green, it.blue) - } - } ?: let { + val color = this.color + if (color == null) { text.styleClass += "text-default-color" + } else { + if (ErosProfileManager.selected.text.colored) { + text.fill = Color.rgb(color.red, color.green, color.blue) + } } if (FormattingCodes.OBFUSCATED in formatting) { // ToDo: This is just slow val obfuscatedTimeline = if (ErosProfileManager.selected.text.obfuscated) { + val index = AtomicInteger() Timeline( KeyFrame(Duration.millis(50.0), { val chars = text.text.toCharArray() for (i in chars.indices) { - chars[i] = ProtocolDefinition.OBFUSCATED_CHARS.random() + chars[i] = ProtocolDefinition.OBFUSCATED_CHARS[index.getAndIncrement() % ProtocolDefinition.OBFUSCATED_CHARS.size] } text.text = String(chars) }), diff --git a/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt b/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt index 7bc698540..77e448bbe 100644 --- a/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt +++ b/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt @@ -28,7 +28,6 @@ import kotlin.test.assertSame internal class ChatComponentTest { - @Test fun testEmpty() { assertSame(ChatComponent.EMPTY, "".chat())