From a77dc789deb46e42b09ae3b8cffbc80bb08651be Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Thu, 22 Aug 2024 03:03:37 +0200 Subject: [PATCH] test/renderer: move load_texture into test_renderer.h --- test/renderer/test_renderer.h | 47 ++++++++++++++++++++++++++++++++++ test/renderer/texture.c | 48 +---------------------------------- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/test/renderer/test_renderer.h b/test/renderer/test_renderer.h index 5b5056a0..fd34043e 100644 --- a/test/renderer/test_renderer.h +++ b/test/renderer/test_renderer.h @@ -91,6 +91,53 @@ static ShaderObject *test_renderer_load_glsl(ShaderStage stage, const char *src) return obj; } +attr_unused +static Texture *test_renderer_load_texture(const char *path) { + auto istream = SDL_RWFromFile(path, "rb"); + + if(!istream) { + log_sdl_error(LOG_FATAL, "SDL_IOFromFile"); + } + + Pixmap px = {}; + PixmapFormat fmt = PIXMAP_FORMAT_RGBA8; + PixmapOrigin origin = PIXMAP_ORIGIN_TOPLEFT; + + if(r_features() & RFEAT_TEXTURE_BOTTOMLEFT_ORIGIN) { + origin = PIXMAP_ORIGIN_BOTTOMLEFT; + } + + if(!pixmap_load_stream(istream, PIXMAP_FILEFORMAT_AUTO, &px, fmt)) { + log_fatal("pixmap_load_stream() failed"); + } + + SDL_RWclose(istream); + + pixmap_convert_inplace_realloc(&px, fmt); + pixmap_flip_to_origin_inplace(&px, origin); + + Texture *tex = r_texture_create(&(TextureParams) { + .class = TEXTURE_CLASS_2D, + .type = r_texture_type_from_pixmap_format(fmt), + .width = px.width, + .height = px.height, + .layers = 1, + .filter.min = TEX_FILTER_LINEAR, + .filter.mag = TEX_FILTER_LINEAR, + .wrap.s = TEX_WRAP_REPEAT, + .wrap.t = TEX_WRAP_REPEAT, + }); + + if(!tex) { + log_fatal("r_texture_create() failed"); + } + + r_texture_fill(tex, 0, 0, &px); + mem_free(px.data.untyped); + + return tex; +} + static void test_init_renderer(void) { test_init_basic(); diff --git a/test/renderer/texture.c b/test/renderer/texture.c index 37e1ca08..1110645d 100644 --- a/test/renderer/texture.c +++ b/test/renderer/texture.c @@ -10,52 +10,6 @@ typedef struct Vertex2D { vec4 color; } Vertex2D; -static Texture *load_texture(const char *path) { - auto istream = SDL_RWFromFile(path, "rb"); - - if(!istream) { - log_sdl_error(LOG_FATAL, "SDL_IOFromFile"); - } - - Pixmap px = {}; - PixmapFormat fmt = PIXMAP_FORMAT_RGBA8; - PixmapOrigin origin = PIXMAP_ORIGIN_TOPLEFT; - - if(r_features() & RFEAT_TEXTURE_BOTTOMLEFT_ORIGIN) { - origin = PIXMAP_ORIGIN_BOTTOMLEFT; - } - - if(!pixmap_load_stream(istream, PIXMAP_FILEFORMAT_AUTO, &px, fmt)) { - log_fatal("pixmap_load_stream() failed"); - } - - SDL_RWclose(istream); - - pixmap_convert_inplace_realloc(&px, fmt); - pixmap_flip_to_origin_inplace(&px, origin); - - Texture *tex = r_texture_create(&(TextureParams) { - .class = TEXTURE_CLASS_2D, - .type = r_texture_type_from_pixmap_format(fmt), - .width = px.width, - .height = px.height, - .layers = 1, - .filter.min = TEX_FILTER_LINEAR, - .filter.mag = TEX_FILTER_LINEAR, - .wrap.s = TEX_WRAP_REPEAT, - .wrap.t = TEX_WRAP_REPEAT, - }); - - if(!tex) { - log_fatal("r_texture_create() failed"); - } - - r_texture_fill(tex, 0, 0, &px); - mem_free(px.data.untyped); - - return tex; -} - int main(int argc, char **argv) { test_init_renderer(); time_init(); @@ -127,7 +81,7 @@ int main(int argc, char **argv) { .offset = 0, }; - Texture *tex = load_texture("texture0.webp"); + Texture *tex = test_renderer_load_texture("texture0.webp"); r_shader_ptr(prog); auto u_sampler = r_shader_uniform(prog, "u_sampler");