Skip to content

Commit 8aa32ed

Browse files
committed
fix: correct aspect ratio calculation
1 parent d165603 commit 8aa32ed

File tree

1 file changed

+12
-20
lines changed

1 file changed

+12
-20
lines changed

src/bun-ui.c

+12-20
Original file line numberDiff line numberDiff line change
@@ -99,28 +99,20 @@ uint8_t render_window(UiInstance *instance) {
9999
(float)clear_color.b / 255, (float)clear_color.a / 255);
100100
glClear(GL_COLOR_BUFFER_BIT);
101101
move_image_buffer_to_texture(&(instance->render_buffer));
102-
Vec2f window_size = {instance->window_width, instance->window_height};
103-
float t = window_size.x;
104-
if (window_size.y < window_size.x)
105-
t = window_size.y;
106-
if (instance->render_buffer.h > instance->render_buffer.w) {
107-
float scale = t / instance->render_buffer.h;
108-
window_size.x = instance->render_buffer.w * scale;
109-
window_size.y = instance->render_buffer.h * scale;
110-
} else {
111-
float scale = t / instance->render_buffer.w;
112-
window_size.x = instance->render_buffer.w * scale;
113-
window_size.y = instance->render_buffer.h * scale;
114-
}
102+
Vec2f window_size;
115103
Vec2f start_pos = {0, 0};
116-
if (window_size.x < instance->window_width) {
117-
size_t diff = instance->window_width - window_size.x;
118-
start_pos.x += diff / 2;
119-
}
104+
float bufferAspectRatio = (float)instance->render_buffer.w / (float)instance->render_buffer.h;
105+
float windowAspectRatio = (float)instance->window_width / (float)instance->window_height;
120106

121-
if (window_size.y < instance->window_height) {
122-
size_t diff = instance->window_height - window_size.y;
123-
start_pos.y += diff / 2;
107+
108+
if (bufferAspectRatio > windowAspectRatio) {
109+
window_size.x = instance->window_width;
110+
window_size.y = instance->window_width / bufferAspectRatio;
111+
start_pos.y = (instance->window_height - window_size.y) / 2;
112+
} else {
113+
window_size.y = instance->window_height;
114+
window_size.x = instance->window_height * bufferAspectRatio;
115+
start_pos.x = (instance->window_width - window_size.x) / 2;
124116
}
125117
SimpleShaderEntry entry = {normalize(instance, start_pos), window_size};
126118
shader_use(instance->shader);

0 commit comments

Comments
 (0)