From 3254d1823f779b58a9399adb5024dac4d594569f Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sun, 5 Nov 2023 19:07:35 +0100 Subject: [PATCH] never post init font twice --- .../rendering/font/types/bitmap/BitmapCodeRenderer.kt | 8 ++++---- .../gui/rendering/font/types/bitmap/BitmapFontType.kt | 3 +++ .../font/types/unicode/legacy/LegacyUnicodeFontType.kt | 3 +++ .../minosoft/gui/rendering/textures/TextureUtil.kt | 9 ++++++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapCodeRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapCodeRenderer.kt index b8ba91c59..e125b00a2 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapCodeRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapCodeRenderer.kt @@ -19,15 +19,15 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture class BitmapCodeRenderer( override val texture: Texture, - override var uvStart: Vec2, - override var uvEnd: Vec2, + override val uvStart: Vec2, + override val uvEnd: Vec2, override val width: Float, override val height: Float, override val ascent: Float, ) : AscentedCodePointRenderer { fun updateArray() { - uvStart = uvStart * texture.array.uvEnd - uvEnd = uvEnd * texture.array.uvEnd + uvStart *= texture.array.uvEnd + uvEnd *= texture.array.uvEnd } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapFontType.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapFontType.kt index c0c904311..6453342cb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapFontType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/bitmap/BitmapFontType.kt @@ -38,6 +38,7 @@ import java.util.stream.IntStream class BitmapFontType( val chars: Int2ObjectOpenHashMap, ) : PostInitFontType { + private var postInit = false init { chars.trim() @@ -48,10 +49,12 @@ class BitmapFontType( } override fun postInit(latch: AbstractLatch) { + if (postInit) return for (char in chars.values) { if (char !is BitmapCodeRenderer) continue char.updateArray() } + postInit = true } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/legacy/LegacyUnicodeFontType.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/legacy/LegacyUnicodeFontType.kt index 1191448d5..fbf5276fb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/legacy/LegacyUnicodeFontType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/legacy/LegacyUnicodeFontType.kt @@ -36,11 +36,14 @@ import java.io.InputStream class LegacyUnicodeFontType( val chars: Array, ) : PostInitFontType { + private var postInit = false override fun postInit(latch: AbstractLatch) { + if (postInit) return for (char in chars) { char?.updateArray() } + postInit = true } override fun get(codePoint: Int): UnicodeCodeRenderer? { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt index 96c34a56b..ed0964c14 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/textures/TextureUtil.kt @@ -30,6 +30,9 @@ import java.io.InputStream import javax.imageio.ImageIO object TextureUtil { + private val COMPONENTS_4 = intArrayOf(0, 1, 2, 3) + private val COMPONENTS_3 = intArrayOf(0, 1, 2) + private val COMPONENTS_1 = intArrayOf(0, 0, 0) fun ResourceLocation.texture(): ResourceLocation { return this.extend(prefix = "textures/", suffix = ".png") @@ -58,9 +61,9 @@ object TextureUtil { val dataOutput = DataOutputStream(byteOutput) val samples = when (image.raster.numBands) { - 4 -> intArrayOf(0, 1, 2, 3) - 3 -> intArrayOf(0, 1, 2) - else -> intArrayOf(0, 0, 0) + 4 -> COMPONENTS_4 + 3 -> COMPONENTS_3 + else -> COMPONENTS_1 } for (y in 0 until image.height) {