C refactor: separate out SDL_Rect integer extraction code
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user