diff options
author | kdx <kikoodx@paranoici.org> | 2023-08-15 16:54:12 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-08-15 16:56:24 +0200 |
commit | 4f4e78d8d503a33440fe11b475833bd76a5bf357 (patch) | |
tree | 9e287312319134010898c3d028d6348020b249c6 | |
parent | 48e261f6f11b7b0f239b122d0c5a89799a6eae2f (diff) | |
download | tzr-4f4e78d8d503a33440fe11b475833bd76a5bf357.tar.gz |
set blendmode
-rw-r--r-- | headers/TZR_globals.h | 1 | ||||
-rw-r--r-- | headers/TZR_render.h | 7 | ||||
-rw-r--r-- | sources/TZR_BlendMode.c | 12 | ||||
-rw-r--r-- | sources/TZR_DrawBegin.c | 4 | ||||
-rw-r--r-- | sources/TZR_DrawImage.c | 2 | ||||
-rw-r--r-- | sources/globals.c | 1 |
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; |