aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-08-15 16:54:12 +0200
committerkdx <kikoodx@paranoici.org>2023-08-15 16:56:24 +0200
commit4f4e78d8d503a33440fe11b475833bd76a5bf357 (patch)
tree9e287312319134010898c3d028d6348020b249c6
parent48e261f6f11b7b0f239b122d0c5a89799a6eae2f (diff)
downloadtzr-4f4e78d8d503a33440fe11b475833bd76a5bf357.tar.gz
set blendmode
-rw-r--r--headers/TZR_globals.h1
-rw-r--r--headers/TZR_render.h7
-rw-r--r--sources/TZR_BlendMode.c12
-rw-r--r--sources/TZR_DrawBegin.c4
-rw-r--r--sources/TZR_DrawImage.c2
-rw-r--r--sources/globals.c1
6 files changed, 25 insertions, 2 deletions
diff --git a/headers/TZR_globals.h b/headers/TZR_globals.h
index 3752577..a9cec77 100644
--- a/headers/TZR_globals.h
+++ b/headers/TZR_globals.h
@@ -28,3 +28,4 @@ extern Mix_Music *___tzr_music;
extern TZR_Joystick *___tzr_joysticks;
extern size_t ___tzr_joysticks_capacity;
extern size_t ___tzr_joysticks_size;
+extern SDL_BlendMode ___tzr_blendmode;
diff --git a/headers/TZR_render.h b/headers/TZR_render.h
index 8fde15a..1fb3e95 100644
--- a/headers/TZR_render.h
+++ b/headers/TZR_render.h
@@ -87,3 +87,10 @@ int _TZR_DrawRectangle(const TZR_DrawRectangleArgs *args);
int _TZR_DrawImage(const TZR_DrawImageArgs *args);
void TZR_ScreenTransform(int *x, int *y);
+
+#ifdef TZR_PARANOID
+#if __STDC_VERSION__ > 201710L
+[[nodiscard]]
+#endif
+#endif
+int TZR_BlendMode(SDL_BlendMode mode);
diff --git a/sources/TZR_BlendMode.c b/sources/TZR_BlendMode.c
new file mode 100644
index 0000000..058f29e
--- /dev/null
+++ b/sources/TZR_BlendMode.c
@@ -0,0 +1,12 @@
+#include "TZR_render.h"
+#include "TZR_globals.h"
+#include "sdl_error.h"
+
+int
+TZR_BlendMode(SDL_BlendMode mode)
+{
+ ___tzr_blendmode = mode;
+ if (SDL_SetRenderDrawBlendMode(___tzr_renderer, mode))
+ return sdl_error(-1);
+ return 0;
+}
diff --git a/sources/TZR_DrawBegin.c b/sources/TZR_DrawBegin.c
index deae5b6..59ac06a 100644
--- a/sources/TZR_DrawBegin.c
+++ b/sources/TZR_DrawBegin.c
@@ -6,11 +6,11 @@
int
TZR_DrawBegin(void)
{
+ if (TZR_BlendMode(SDL_BLENDMODE_BLEND))
+ return sdl_error(-1);
if (___tzr_config.hd_render)
return 0;
if (SDL_SetRenderTarget(___tzr_renderer, ___tzr_target) < 0)
return sdl_error(-1);
- if (SDL_SetRenderDrawBlendMode(___tzr_renderer, SDL_BLENDMODE_BLEND))
- return sdl_error(-1);
return 0;
}
diff --git a/sources/TZR_DrawImage.c b/sources/TZR_DrawImage.c
index da36b36..c968a52 100644
--- a/sources/TZR_DrawImage.c
+++ b/sources/TZR_DrawImage.c
@@ -26,6 +26,8 @@ _TZR_DrawImage(const TZR_DrawImageArgs *args)
return sdl_error(-1);
if (SDL_SetTextureAlphaMod(img->ptr, ___tzr_color.a * 255))
return sdl_error(-1);
+ if (SDL_SetTextureBlendMode(img->ptr, ___tzr_blendmode) < 0)
+ return sdl_error(-1);
float scale_x = args->sx;
float scale_y = args->sy;
diff --git a/sources/globals.c b/sources/globals.c
index d0366e4..b8b28ab 100644
--- a/sources/globals.c
+++ b/sources/globals.c
@@ -28,3 +28,4 @@ Mix_Music *___tzr_music = NULL;
TZR_Joystick *___tzr_joysticks = NULL;
size_t ___tzr_joysticks_capacity = 0;
size_t ___tzr_joysticks_size = 0;
+SDL_BlendMode ___tzr_blendmode = SDL_BLENDMODE_BLEND;