Label
A label is a simple rectangular widget which takes no input. The label will automatically redraw it the text changed. If the label is smaller than the text it displays, the text gets clipped. The text of the label can be set using the gwinSetText() routine.
Contents
API reference
The API reference of the label widget can be found here.
Border
The default drawing routine of the labels allows to enable or disable a border. This can be done using gwinLabelSetBorder().
Auto scale
Applying a size of 0 to the width or the height of the label will automatically set the corresponding dimension to fit the entire label text. Updating the label text will update the label dimensions each time. Note: If the the board is enabled the auto-sizing feature of the label will certainly change the look of the application.
Justification
By default the text of the label is left justified. The justification of the label text can be controlled through different built-in rendering functions.
The following rendering functions are available:
- gwinLabelDrawJustifiedLeft
- gwinLabelDrawJustifiedRight
- gwinLabelDrawJustifiedCenter
Font size and color
As with any other widget the look-and-feel of the label widget can be fully customized. The font can be changed by using gwinSetFont()
and the font color is controlled through the widget styles. The widget rendering can be fully customized by implementing a custom rendering routine.
Attribute
Often you want to display multiple text elements below each other where an element consists of a static text which will always be the same and some variable one. The static text is called the attribute and can be optionally set through gwinLabelSetAttribute()
once you enabled this feature in your configuration file. The function does also take a tab parameter which allows to align multiple labels vertically as the following example shows:
Current IP: 192.168.1.42 Netmask: 255.255.255.0 DHCP: On
IMPORTANT: It's highly discouraged to use the attribute feature. The proper way of doing this is using two separate labels. This feature exists purely for legacy reasons. Back the old days there was no µGFX-Studio that allows to copy and align multiple labels easily in a blink of a second.
Example
The following example shows how to create a label.
#include "gfx.h" static GHandle ghLabel1; static void createWidgets(void) { GWidgetInit wi; // Apply some default values for GWIN wi.customDraw = 0; wi.customParam = 0; wi.customStyle = 0; wi.g.show = TRUE; // Apply the label parameters wi.g.y = 10; wi.g.x = 10; wi.g.width = 100; wi.g.height = 20; wi.text = "Label 1"; // Create the actual label ghLabel1 = gwinLabelCreate(NULL, &wi); } int main(void) { // Initialize the display gfxInit(); // Set the widget defaults gwinSetDefaultFont(gdispOpenFont("UI2")); gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); gdispClear(White); // create the widget createWidgets(); while(1) { gwinSetText(ghLabel1, "This is some text", TRUE); gfxSleepMilliseconds(1000); gwinSetText(ghLabel1, "Aaaand some other text", TRUE); gfxSleepMilliseconds(1000); } return 0; }