aboutsummaryrefslogtreecommitdiff
path: root/tests/main.c
blob: 00fcd1fe15154938743b3ffcb075f8129d37a4ff (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "../include/mgui/mgui.h"
#include "../include/mgui/list.h"
#include "../include/mgui/scrollview.h"
#include "../include/mgui/button.h"
#include "../include/mgui/label.h"
#include "../include/mgui/richtext.h"
#include "../include/mgui/image.h"
#include <mgl/mgl.h>
#include <mgl/window/window.h>
#include <mgl/window/event.h>
#include <string.h>
#include <stdio.h>

static mgui_list* create_list_item(const char *image_filepath, const char *title, const char *description) {
    mgui_list *container = mgui_list_create(MGUI_LIST_HORIZONITAL);
    //mgui_list_set_spacing(container, 10);
    mgui_list_append(container, mgui_image_to_widget(mgui_image_create(image_filepath)));

    mgui_list *list = mgui_list_create(MGUI_LIST_VERTICAL);
    mgui_list_append(container, mgui_list_to_widget(list));
    mgui_list_append(list, mgui_richtext_to_widget(mgui_richtext_create(title, strlen(title), 30)));
    mgui_list_append(list, mgui_richtext_to_widget(mgui_richtext_create(description, strlen(description), 24)));
    return container;
}

int main() {
    if(mgl_init() != 0)
        return 1;

    mgui_init();

    mgl_window window;
    if(mgl_window_create(&window, "mgl", &(mgl_window_create_params){ .size = { 1280, 720 } }) != 0)
        return 1;

    mgui_list *root = mgui_list_create(MGUI_LIST_VERTICAL);
    mgui_widget *root_widget = mgui_list_to_widget(root);
    mgui_list_append(root, mgui_list_to_widget(create_list_item(NULL, "Title", "Description")));

    mgui_scrollview *scrollview = mgui_scrollview_create();
    mgui_widget_set_expand(mgui_scrollview_to_widget(scrollview), false, true);
    //mgui_widget_set_margin(mgui_scrollview_to_widget(scrollview), (mgui_margin){ 20, 20, 20, 20 });
    mgui_list_append(root, mgui_scrollview_to_widget(scrollview));

    mgui_list *list = mgui_list_create(MGUI_LIST_VERTICAL);
    mgui_scrollview_set_child(scrollview, mgui_list_to_widget(list));
    //mgui_list_set_spacing(list, 30);
    for(int i = 0; i < 60; ++i) {
        char text[256];
        snprintf(text, sizeof(text), "hello world 東京 %d", i);
        mgui_list_append(list, mgui_list_to_widget(create_list_item(NULL, "User", text)));
    }

    char text[256];
    snprintf(text, sizeof(text), "hello world 東京 %d", 333);
    mgui_list_append(list, mgui_list_to_widget(create_list_item("depends/mgl/tests/X11.png", "User", text)));

    mgui_list_append(root, mgui_list_to_widget(create_list_item(NULL, "Bottom", "bottom")));

    mgl_event event;
    while(mgl_window_is_open(&window)) {
        while(mgl_window_poll_event(&window, &event)) {
            mgui_on_event(root_widget, &window, &event);
        }

        mgl_window_clear(&window, (mgl_color){ 18, 21, 26, 255 });
        mgui_draw(root_widget, &window);
        mgl_window_display(&window);
    }

    mgui_widget_destroy(root_widget);
    mgl_window_deinit(&window);
    mgui_deinit();
    mgl_deinit();
    return 0;
}