1 ///
2 module glui.label;
3
4 import raylib;
5
6 import glui.node;
7 import glui.utils;
8 import glui.style;
9
10 alias label = simpleConstructor!GluiLabel;
11
12 @safe:
13
14 /// A label can be used to display text on the screen.
15 /// Styles: $(UL
16 /// $(LI `style` = Default style for this node.)
17 /// )
18 class GluiLabel : GluiNode {
19
20 mixin DefineStyles;
21 mixin ImplHoveredRect;
22
23 /// Text of this label.
24 string text;
25
26 static foreach (index; 0 .. BasicNodeParamLength) {
27
28 /// Initialize the label with given text.
29 this(BasicNodeParam!index sup, string text = "") {
30
31 super(sup);
32 this.text = text;
33
34 }
35
36 }
37
38 protected override void resizeImpl(Vector2 available) {
39
40 minSize = style.measureText(available, text);
41
42 }
43
44 protected override void drawImpl(Rectangle outer, Rectangle inner) {
45
46 const style = pickStyle();
47 style.drawBackground(outer);
48 style.drawText(inner, text);
49
50 }
51
52 protected override const(Style) pickStyle() const {
53
54 return style;
55
56 }
57
58 }