Skip to content

Commit ffce531

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

File tree

1 file changed

+57
-22
lines changed

1 file changed

+57
-22
lines changed

MusicStudio/main.cpp

+57-22
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,42 +113,68 @@ 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 };
113-
while (!ui_window_should_close(window)) {
114-
ui_application_poll_events(app);
116+
ui_window_set_resize_callback(window, render, [](UIWindow* window, void* user) {
117+
auto* render = (Render*)user;
115118
ui_window_gl_make_current_context(window);
116119

117120
i32 width = 0;
118-
i32 height = 0;
121+
i32 height = 1;
119122
ui_window_size(window, &width, &height);
120123
render_set_resolution(render, vec2f(width, height) * 2.0);
121124

125+
render_frame(window, render);
126+
127+
render_flush(render);
128+
ui_window_gl_flush(window);
129+
});
130+
131+
{
132+
i32 width = 0;
133+
i32 height = 1;
134+
ui_window_size(window, &width, &height);
135+
render_set_resolution(render, vec2f(width, height) * 2.0);
136+
}
137+
138+
while (!ui_window_should_close(window)) {
139+
ui_application_poll_events(app);
140+
ui_window_gl_make_current_context(window);
141+
122142
i32 mouse_x = 0;
123143
i32 mouse_y = 0;
124144
ui_window_mouse_pos(window, &mouse_x, &mouse_y);
125145
render_set_mouse_position(render, vec2f(mouse_x, mouse_y));
126146

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);
147+
render_frame(window, render);
138148
render_flush(render);
139-
140-
141149
ui_window_gl_flush(window);
142150
}
143151

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

0 commit comments

Comments
 (0)