summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/eve/widget/label.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/fe310/eos/eve/widget/label.c')
-rw-r--r--fw/fe310/eos/eve/widget/label.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/fw/fe310/eos/eve/widget/label.c b/fw/fe310/eos/eve/widget/label.c
index 43c710c..d596677 100644
--- a/fw/fe310/eos/eve/widget/label.c
+++ b/fw/fe310/eos/eve/widget/label.c
@@ -10,26 +10,31 @@
#include "label.h"
-void eve_label_init(EVELabel *label, EVERect *g, EVEFont *font, char *title) {
+int eve_label_init(EVELabel *label, EVERect *g, EVEFont *font, char *title) {
size_t title_len;
int title_w, rv;
- memset(label, 0, sizeof(EVELabel));
- if (g) label->g = *g;
+ if (font == NULL) return EVE_ERR;
- rv = eve_font_verify(font, label->title, &title_w, &title_len);
- if (rv) title[title_len] = '\0';
+ rv = eve_font_verify(font, title, 0, &title_w, &title_len);
+ if (rv) return rv;
+ memset(label, 0, sizeof(EVELabel));
+ if (g) label->g = *g;
label->font = font;
label->title = title;
if (label->g.h == 0) label->g.h = eve_font_h(font);
if (label->g.w == 0) label->g.w = title_w + EVE_LABEL_MARGIN;
+
+ return EVE_OK;
}
-void eve_label_create(EVELabel *label, EVELabelSpec *spec, EVEPage *page) {
+int eve_label_create(EVELabel *label, EVELabelSpec *spec, EVEPage *page) {
EVEFont *font = spec->font ? spec->font : eve_window_font(page->v.window);
+ int rv;
- eve_label_init(label, &spec->g, font, spec->title);
+ rv = eve_label_init(label, &spec->g, font, spec->title);
+ return rv;
}
void eve_label_draw(EVELabel *label) {