Add shadow to label, implement sizeToContents
This commit is contained in:
parent
9cfbfd5d7b
commit
322e070060
@ -13,9 +13,14 @@ open class Label @JvmOverloads constructor(
|
|||||||
y: Float = 0f,
|
y: Float = 0f,
|
||||||
width: Float = 100f,
|
width: Float = 100f,
|
||||||
height: Float = 10f,
|
height: Float = 10f,
|
||||||
var text: Component = TextComponent("Label")
|
var text: Component = TextComponent("Label"),
|
||||||
|
var shadow: Boolean = false
|
||||||
) : EditablePanel(screen, parent, x, y, width, height) {
|
) : EditablePanel(screen, parent, x, y, width, height) {
|
||||||
constructor(screen: MatteryScreen<*>, parent: EditablePanel?, text: Component) : this(screen, parent, x = 0f, text = text)
|
constructor(screen: MatteryScreen<*>, parent: EditablePanel?, text: Component, shadow: Boolean = false) : this(screen, parent, x = 0f, text = text, shadow = shadow)
|
||||||
|
|
||||||
|
var shadowX = 1f
|
||||||
|
var shadowY = 1f
|
||||||
|
var shadowColor = RGBAColor.BLACK
|
||||||
|
|
||||||
init {
|
init {
|
||||||
scissor = true
|
scissor = true
|
||||||
@ -25,5 +30,19 @@ open class Label @JvmOverloads constructor(
|
|||||||
|
|
||||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||||
font.draw(stack, text, 0f, 0f, color.toInt())
|
font.draw(stack, text, 0f, 0f, color.toInt())
|
||||||
|
|
||||||
|
if (shadow) {
|
||||||
|
font.draw(stack, text, shadowX, shadowY, shadowColor.toInt())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun sizeToContents() {
|
||||||
|
super.sizeToContents()
|
||||||
|
|
||||||
|
val w = font.width(text)
|
||||||
|
val h = font.lineHeight + 2
|
||||||
|
|
||||||
|
width = width.coerceAtLeast(w.toFloat())
|
||||||
|
height = height.coerceAtLeast(h.toFloat())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user