From 21c9cad34b99aaf63ceb0805672f3b7e084e74b8 Mon Sep 17 00:00:00 2001 From: Greg Shuflin Date: Wed, 1 Jul 2026 16:58:02 -0700 Subject: [PATCH] C refactor: separate out SDL_Rect integer extraction code --- c/sdl.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/c/sdl.c b/c/sdl.c index 3bc1578..bf6385f 100644 --- a/c/sdl.c +++ b/c/sdl.c @@ -241,16 +241,22 @@ lean_obj_res sdl_render_present(b_lean_obj_arg g_renderer, lean_obj_arg w) { return lean_io_result_mk_ok(lean_box(0)); } +static SDL_Rect lean_sdl_rect_to_c_SDL_Rect(b_lean_obj_arg rect_obj) { + return (SDL_Rect) { + .x = (int32_t)lean_ctor_get_uint32(rect_obj, 0), + .y = (int32_t)lean_ctor_get_uint32(rect_obj, 4), + .w = (int32_t)lean_ctor_get_uint32(rect_obj, 8), + .h = (int32_t)lean_ctor_get_uint32(rect_obj, 12), + }; +} + + lean_obj_res sdl_render_fill_rect(b_lean_obj_arg g_renderer, b_lean_obj_arg rect_obj) { SDL_Renderer* renderer = (SDL_Renderer*)lean_get_external_data(g_renderer); if (renderer == NULL) return lean_io_result_mk_error(lean_mk_string("C: Renderer is NULL")); - int32_t x = (int32_t)lean_ctor_get_uint32(rect_obj, 0); - int32_t y = (int32_t)lean_ctor_get_uint32(rect_obj, 4); - int32_t w = (int32_t)lean_ctor_get_uint32(rect_obj, 8); - int32_t h = (int32_t)lean_ctor_get_uint32(rect_obj, 12); - - SDL_FRect rect = {(float)x, (float)y, (float)w, (float)h}; + SDL_Rect r = lean_sdl_rect_to_c_SDL_Rect(rect_obj); + SDL_FRect rect = {r.x, r.y, r.w, r.h}; int32_t result = SDL_RenderFillRect(renderer, &rect); return lean_io_result_mk_ok(lean_box_uint32(result)); }