aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-04-28 23:09:09 -0400
committerSam Anthony <sam@samanthony.xyz>2025-04-28 23:09:09 -0400
commit9b8a1454f11de3728b2e0dc87d5778bce9761459 (patch)
tree22f35dd7e0ff8485562246b1b0978a6fbfb97bc9
parentcf72845354b6e0e765b3106ac8b2bc47c6b73712 (diff)
downloadvolute-9b8a1454f11de3728b2e0dc87d5778bce9761459.zip
render image
-rw-r--r--renderer.c24
-rw-r--r--renderer.h1
2 files changed, 25 insertions, 0 deletions
diff --git a/renderer.c b/renderer.c
index fcb8181..d508526 100644
--- a/renderer.c
+++ b/renderer.c
@@ -178,6 +178,30 @@ r_render(mu_Context *ctx) {
SDL_RenderPresent(renderer);
}
+/* Render an image. Returns non-zero on error. */
+int
+r_image(SDL_Surface *img, mu_Rect r) {
+ SDL_Texture *texture;
+ SDL_Rect rect;
+
+ texture = SDL_CreateTextureFromSurface(renderer, img);
+ if (!texture) {
+ fprintf(stderr, "%s\n", SDL_GetError());
+ return 1;
+ }
+
+ rect = (SDL_Rect) {r.x, r.y, r.w, r.h};
+ if (SDL_RenderCopy(renderer, texture, NULL, &rect) != 0) {
+ fprintf(stderr, "%s\n", SDL_GetError());
+ SDL_DestroyTexture(texture);
+ return 1;
+ }
+
+ SDL_DestroyTexture(texture);
+
+ return 0;
+}
+
static void
clear(void) {
if (SDL_SetRenderDrawColor(renderer, bg.r, bg.g, bg.b, bg.a) != 0) {
diff --git a/renderer.h b/renderer.h
index d552b48..0f8cd41 100644
--- a/renderer.h
+++ b/renderer.h
@@ -2,3 +2,4 @@ int r_init(mu_Context *ctx, const char *title);
void r_input(mu_Context *ctx);
void r_render(mu_Context *ctx);
void r_get_window_size(int *w, int *h);
+int r_image(SDL_Surface *img, mu_Rect r);