blob: e2192fd7fd5fb8c5cf6126bcf887e4afd69624c5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package at.hannibal2.skyhanni.features.chroma
import at.hannibal2.skyhanni.utils.ColorUtils
import at.hannibal2.skyhanni.utils.shader.ShaderHelper
import net.minecraft.client.renderer.GlStateManager
import org.lwjgl.opengl.GL11
/**
* Class to handle chroma font rendering
*
* Modified class from SkyblockAddons
*
* Credit: [DrawStateFontRenderer.java](https://github.com/BiscuitDevelopment/SkyblockAddons/blob/main/src/main/java/codes/biscuit/skyblockaddons/utils/draw/DrawStateFontRenderer.java)
*/
class ChromaFontRenderer(private val baseColor: Int) {
private var chromaOn = false
fun startChroma() {
chromaOn = true
}
fun endChroma() {
chromaOn = false
}
fun loadChromaEnv() {
if (chromaOn) {
newChromaEnv()
}
}
fun restoreChromaEnv() {
if (ShaderHelper.areShadersSupported() && !chromaOn) ChromaShaderManager.end()
}
fun newChromaEnv(): ChromaFontRenderer {
if (ShaderHelper.areShadersSupported()) {
ChromaShaderManager.begin(ChromaType.TEXTURED)
GlStateManager.shadeModel(GL11.GL_SMOOTH)
}
return this
}
fun bindActualColor(alpha: Float): ChromaFontRenderer {
GlStateManager.color(
ColorUtils.getRed(baseColor).toFloat() / 255f,
ColorUtils.getGreen(baseColor).toFloat() / 255f,
ColorUtils.getBlue(baseColor).toFloat() / 255f,
alpha
)
return this
}
fun endChromaEnv(): ChromaFontRenderer {
if (ShaderHelper.areShadersSupported()) {
ChromaShaderManager.end()
GlStateManager.shadeModel(GL11.GL_FLAT)
}
return this
}
fun getChromaState() = chromaOn
}
|