Skip to content

Commit 48de827

Browse files
committed
MusicStudio: Render frame when window is resized
1 parent 9c54559 commit 48de827

File tree

1 file changed

+53
-19
lines changed

1 file changed

+53
-19
lines changed

MusicStudio/main.cpp

+53-19
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ void swap(T* a, T* b)
2323
*b = c;
2424
}
2525

26+
static Vec2f zero = { 0.0, 0.0 };
27+
static Vec4f cyan = { .r = 0.0f, .g = 1.0f, .b = 1.0f, .a = 1.0f };
28+
static Vec4f magenta = { .r = 1.0f, .g = 0.0f, .b = 1.0f, .a = 1.0f };
29+
static Vec4f yellow = { .r = 1.0f, .g = 1.0f, .b = 0.0f, .a = 1.0f };
30+
static Vec4f white = { .r = 1.0f, .g = 1.0f, .b = 1.0f, .a = 1.0f };
31+
static Vec4f red = { .r = 1.0f, .g = 0.0f, .b = 0.0f, .a = 1.0f };
32+
33+
static void render_frame(UIWindow* window, Render* render);
34+
2635
ErrorOr<int> Main::main(int argc, c_string *argv)
2736
{
2837
auto bundle = FS::Bundle()
@@ -104,18 +113,27 @@ ErrorOr<int> Main::main(int argc, c_string *argv)
104113
render_destroy(render);
105114
};
106115

107-
Vec2f zero = { 0.0, 0.0 };
108-
Vec4f cyan = { .r = 0.0f, .g = 1.0f, .b = 1.0f, .a = 1.0f };
109-
Vec4f magenta = { .r = 1.0f, .g = 0.0f, .b = 1.0f, .a = 1.0f };
110-
Vec4f yellow = { .r = 1.0f, .g = 1.0f, .b = 0.0f, .a = 1.0f };
111-
Vec4f white = { .r = 1.0f, .g = 1.0f, .b = 1.0f, .a = 1.0f };
112-
Vec4f red = { .r = 1.0f, .g = 0.0f, .b = 0.0f, .a = 1.0f };
116+
ui_window_set_resize_callback(window, render, [](UIWindow* window, void* user) {
117+
auto* render = (Render*)user;
118+
ui_window_gl_make_current_context(window);
119+
120+
i32 width = 0;
121+
i32 height = 1;
122+
ui_window_size(window, &width, &height);
123+
render_set_resolution(render, vec2f(width, height) * 2.0);
124+
125+
render_frame(window, render);
126+
127+
render_flush(render);
128+
ui_window_gl_flush(window);
129+
});
130+
113131
while (!ui_window_should_close(window)) {
114132
ui_application_poll_events(app);
115133
ui_window_gl_make_current_context(window);
116134

117135
i32 width = 0;
118-
i32 height = 0;
136+
i32 height = 1;
119137
ui_window_size(window, &width, &height);
120138
render_set_resolution(render, vec2f(width, height) * 2.0);
121139

@@ -124,22 +142,38 @@ ErrorOr<int> Main::main(int argc, c_string *argv)
124142
ui_window_mouse_pos(window, &mouse_x, &mouse_y);
125143
render_set_mouse_position(render, vec2f(mouse_x, mouse_y));
126144

127-
128-
render_transact(render, 3);
129-
render_vertex(render, { 0.0, 0.0 }, cyan, zero);
130-
render_vertex(render, { 1.0, 0.0 }, yellow, zero);
131-
render_vertex(render, { 1.0, 1.0 }, magenta, zero);
132-
render_transact(render, 3);
133-
render_vertex(render, { 0.0, 0.0 }, cyan, zero);
134-
render_vertex(render, { 0.0, 1.0 }, white, zero);
135-
render_vertex(render, { 1.0, 1.0 }, magenta, zero);
136-
137-
render_cursor(render, red);
145+
render_frame(window, render);
138146
render_flush(render);
139147

140-
141148
ui_window_gl_flush(window);
142149
}
143150

144151
return 0;
145152
}
153+
154+
static void render_frame(UIWindow* window, Render* render)
155+
{
156+
i32 height = 1;
157+
ui_window_size(window, 0, &height);
158+
f32 titlebar_height = 28.0f / height;
159+
160+
render_transact(render, 3);
161+
render_vertex(render, { 0.0, 0.0 }, cyan, zero);
162+
render_vertex(render, { 1.0, 0.0 }, yellow, zero);
163+
render_vertex(render, { 1.0, 1.0 }, magenta, zero);
164+
render_transact(render, 3);
165+
render_vertex(render, { 0.0, 0.0 }, cyan, zero);
166+
render_vertex(render, { 0.0, 1.0 }, white, zero);
167+
render_vertex(render, { 1.0, 1.0 }, magenta, zero);
168+
169+
render_cursor(render, red);
170+
171+
render_transact(render, 3);
172+
render_vertex(render, { 0.0, 0.0 }, cyan / 2, zero);
173+
render_vertex(render, { 1.0, 0.0 }, cyan / 2, zero);
174+
render_vertex(render, { 1.0, titlebar_height }, cyan / 2, zero);
175+
render_transact(render, 3);
176+
render_vertex(render, { 0.0, 0.0 }, cyan / 2, zero);
177+
render_vertex(render, { 0.0, titlebar_height }, cyan / 2, zero);
178+
render_vertex(render, { 1.0, titlebar_height }, cyan / 2, zero);
179+
}

0 commit comments

Comments
 (0)