PatchworkOS
Loading...
Searching...
No Matches
label.c
Go to the documentation of this file.
1#include "internal.h"
2
3#include <stdlib.h>
4#include <string.h>
5
6static uint64_t label_procedure(window_t* win, element_t* elem, const event_t* event)
7{
8 (void)win; // Unused
9
10 const theme_t* theme = element_get_theme(elem);
11
12 switch (event->type)
13 {
14 case LEVENT_REDRAW:
15 {
17
18 drawable_t draw;
19 element_draw_begin(elem, &draw);
20
21 if (!(elem->flags & ELEMENT_FLAT))
22 {
25 draw_rect(&draw, &rect, theme->view.backgroundNormal);
27 // rect.top += frameSize;
28 }
29 else
30 {
31 draw_rect(&draw, &rect, theme->view.backgroundNormal);
32 }
33
34 draw_text(&draw, &rect, elem->textProps.font, elem->textProps.xAlign, elem->textProps.yAlign,
36
37 element_draw_end(elem, &draw);
38 }
39 break;
40 }
41
42 return 0;
43}
44
45element_t* label_new(element_t* parent, element_id_t id, const rect_t* rect, const char* text, element_flags_t flags)
46{
47 return element_new(parent, id, rect, text, flags, label_procedure, NULL);
48}
void draw_rect(drawable_t *draw, const rect_t *rect, pixel_t pixel)
Draw a filled rectangle.
Definition drawable.c:7
void draw_text(drawable_t *draw, const rect_t *rect, const font_t *font, align_t xAlign, align_t yAlign, pixel_t pixel, const char *text)
Draw text to a drawable.
Definition drawable.c:669
void draw_frame(drawable_t *draw, const rect_t *rect, uint64_t width, pixel_t foreground, pixel_t background)
Draw a skeuomorphic frame.
Definition drawable.c:204
theme_t * element_get_theme(element_t *elem)
Get the theme of an element.
Definition element.c:401
void element_draw_end(element_t *elem, drawable_t *draw)
End drawing to an element.
Definition element.c:427
element_t * element_new(element_t *parent, element_id_t id, const rect_t *rect, const char *text, element_flags_t flags, procedure_t procedure, void *private)
Allocate and initialize a new element.
Definition element.c:48
rect_t element_get_content_rect(element_t *elem)
Get the element's rectangle in local coordinates.
Definition element.c:213
uint64_t element_flags_t
Element flags type.
Definition element.h:41
void element_draw_begin(element_t *elem, drawable_t *draw)
Begin drawing to an element.
Definition element.c:411
uint64_t element_id_t
Element identifier type.
Definition element_id.h:23
#define ELEMENT_FLAT
Definition element.h:45
#define LEVENT_REDRAW
Definition event.h:101
element_t * label_new(element_t *parent, element_id_t id, const rect_t *rect, const char *text, element_flags_t flags)
Create a new label element.
Definition label.c:45
#define NULL
Pointer error value.
Definition NULL.h:23
static uint64_t label_procedure(window_t *win, element_t *elem, const event_t *event)
Definition label.c:6
#define RECT_SHRINK(rect, margin)
Definition rect.h:81
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
Drawable structure.
Definition drawable.h:35
Opaque element structure.
Definition internal.h:23
element_flags_t flags
Definition internal.h:32
char * text
Definition internal.h:33
text_props_t textProps
Definition internal.h:34
Event structure.
Definition event.h:271
event_type_t type
Definition event.h:272
Definition rect.h:13
font_t * font
Definition element.h:66
align_t yAlign
Definition element.h:65
align_t xAlign
Definition element.h:64
pixel_t backgroundNormal
Definition theme.h:35
pixel_t highlight
Definition theme.h:45
pixel_t foregroundNormal
Definition theme.h:40
pixel_t shadow
Definition theme.h:46
Theme structure.
Definition theme.h:71
theme_color_set_t view
Definition theme.h:73
int64_t frameSize
Definition theme.h:83
Opaque window structure.
Definition internal.h:44
static theme_t theme
Definition theme.c:12