aboutsummaryrefslogtreecommitdiff
path: root/include/mgui/richtext.h
blob: f3b07a5491b54e4e3dd5c6f226b1f659f5d86d1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef MGUI_RICHTEXT_H
#define MGUI_RICHTEXT_H

#include "widget.h"
#include <stddef.h>
#include <stdbool.h>

typedef struct mgl_vertex mgl_vertex;

typedef struct {
    mgl_vertex *vertices;
    size_t vertices_capacity;
    size_t vertex_count;
} mgui_richtext_vertex_data;

typedef struct {
    mgui_widget widget;
    char *str;
    size_t str_size;
    unsigned int character_size;
    mgl_vec2i position;
    mgl_vec2i render_size;
    int width;
    mgui_richtext_vertex_data vertex_data[2];
    bool dirty;
    bool vertices_dirty;
} mgui_richtext;

mgui_richtext* mgui_richtext_create(const char *str, size_t size, unsigned char character_size);
void mgui_richtext_destroy(mgui_richtext *richtext);
mgui_widget* mgui_richtext_to_widget(mgui_richtext *list);
mgui_richtext* mgui_widget_to_richtext(mgui_widget *widget);

void mgui_richtext_set_position(mgui_richtext *self, mgl_vec2i position);
void mgui_richtext_calculate_size(mgui_richtext *self, mgl_vec2i max_size);
void mgui_richtext_on_event(mgui_richtext *self, mgl_window *window, mgl_event *event);
void mgui_richtext_draw(mgui_richtext *self, mgl_window *window);

#endif /* MGUI_RICHTEXT_H */