scroller working

This commit is contained in:
Krzosa Karol
2025-01-15 08:51:41 +01:00
parent 8c25a7f39c
commit 5f33455b97
4 changed files with 38 additions and 28 deletions

View File

@@ -15,16 +15,6 @@
#include "ui_iter.c"
#include "ui.c"
/*
** UI Design:
** - keyboard friendly (not in the windows sense, more console sense)
**
**
** [ ]
**
**
*/
typedef struct globals_t globals_t;
struct globals_t {
// gfx_t *gfx;
@@ -55,9 +45,16 @@ fn b32 app_update(app_frame_t *frame) {
assert(frame->first_event);
for (app_event_t *ev = frame->first_event; ev; ev = ev->next) {
static f32 scroller_percent;
defer_block(ui_begin_build(UI_CODE_LOC, ev), ui_end_build()) {
defer_block(ui_push_xcontainer(UI_CODE_LOC, ui_em(25), ui_em(30)), ui_pop_parent()) {
defer_block(ui_push_container(UI_CODE_LOC, ui_percent(97), ui_percent(100)), ui_pop_parent()) {
ui_box_t *container = ui_push_container(UI_CODE_LOC, ui_percent(0.97f), ui_percent(1));
set_flag1(container->flags, ui_box_flag_scroll);
container->view_offset.y = scroller_percent * frame->window_size.y;//r2f32_get_size(container->rect).y;
defer_block(container, ui_pop_parent()) {
// ui_offset_all_entries_by(scroller_percent);
defer_if (ui_push_exp(UI_CODE_LOC, "app_event_t").clicked, ui_pop_exp()) {
defer_if (ui_push_exp(UI_CODE_LOC, "mouse_wheel_delta: v3f64_t").clicked, ui_pop_exp()) {
ui_label(UI_CODE_LOC, "x: f64 = value");
@@ -75,29 +72,29 @@ fn b32 app_update(app_frame_t *frame) {
defer_if (ui_push_exp(UI_CODE_LOC, "inner_pos: v2f64_t##qwe").clicked, ui_pop_exp()) {
ui_label(UI_CODE_LOC, "x: f64 = value");
ui_label(UI_CODE_LOC, "y: f64 = value");
}
ui_label(UI_CODE_LOC, "y: f64 = value");
}
ui_label(UI_CODE_LOC, "alt: b8 = value");
ui_label(UI_CODE_LOC, "meta: b8 = value");
}
// pop ui_offset_all_entries_by(scroller_percent);
}
// scroller
{
ui_push_container(UI_CODE_LOC, ui_percent(3), ui_percent(100));
static f32 scroller_percent;
f32 scroller_first = scroller_percent;
f32 scroller_second = 90 - scroller_percent;
ui_push_container(UI_CODE_LOC, ui_percent(0.03f), ui_percent(1));
f32 scroller_size = 0.1f;
f32 scroller_second = (1 - scroller_size) - scroller_percent;
ui_spacer(UI_CODE_LOC, ui_percent(100), ui_percent(scroller_first));
ui_signal_t sig = ui_scroller_button(UI_CODE_LOC, ui_percent(100), ui_percent(10));
ui_spacer(UI_CODE_LOC, ui_percent(1), ui_percent(scroller_percent));
ui_signal_t sig = ui_scroller_button(UI_CODE_LOC, ui_percent(1), ui_percent(scroller_size));
if (sig.dragging) {
scroller_percent += (ev->mouse_delta.y / frame->window_size.y) * 100;
scroller_percent = CLAMP(scroller_percent, 0, 90);
scroller_percent += (ev->mouse_delta.y / frame->window_size.y);
scroller_percent = CLAMP(scroller_percent, 0, 0.9f);
}
ui_spacer(UI_CODE_LOC, ui_percent(100), ui_percent(scroller_second));
ui_spacer(UI_CODE_LOC, ui_percent(1), ui_percent(scroller_second));
ui_pop_parent();
}
}
@@ -107,7 +104,7 @@ fn b32 app_update(app_frame_t *frame) {
rn_begin();
ui_draw();
rn_draw_stringf(&rn_state.main_font, v2f32(0,frame->window_size.y - 100), black_color_global, "ui_boxes: %d delta: %f update: %f event_count: %d, delta: %f %f", ui->allocated_boxes, frame->delta, frame->update, frame->event_count, frame->last_event->mouse_delta.x, frame->last_event->mouse_delta.y);
rn_draw_stringf(&rn_state.main_font, v2f32(0,frame->window_size.y - 100), black_color_global, "ui_boxes: %d delta: %f update: %f event_count: %d, delta: %f %f dpr: %f", ui->allocated_boxes, frame->delta, frame->update, frame->event_count, frame->last_event->mouse_delta.x, frame->last_event->mouse_delta.y, frame->dpr);
rn_end(frame->window_size, white_color_global);
ui_end_frame();