aboutsummaryrefslogtreecommitdiffstats
path: root/c_src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-04-07 17:37:57 +0200
committerLoïc Hoguin <[email protected]>2014-04-07 17:37:57 +0200
commit01a9d5eeb3e1e77239b5daef9895719f25bd9b9f (patch)
tree906ca32090bfe1b1b24db86469bfbbadb19c3508 /c_src
parent6cadd2f4bd051c9fbb9686597a7e7249ac60da90 (diff)
downloadesdl2-01a9d5eeb3e1e77239b5daef9895719f25bd9b9f.tar.gz
esdl2-01a9d5eeb3e1e77239b5daef9895719f25bd9b9f.tar.bz2
esdl2-01a9d5eeb3e1e77239b5daef9895719f25bd9b9f.zip
Add sdl_renderer:set_draw_blend_mode/2
Diffstat (limited to 'c_src')
-rw-r--r--c_src/esdl2.h1
-rw-r--r--c_src/sdl_renderer.c23
2 files changed, 24 insertions, 0 deletions
diff --git a/c_src/esdl2.h b/c_src/esdl2.h
index dde4f82..3afef48 100644
--- a/c_src/esdl2.h
+++ b/c_src/esdl2.h
@@ -191,6 +191,7 @@
F(render_set_scale, 3) \
F(render_set_viewport, 5) \
F(render_target_supported, 1) \
+ F(set_render_draw_blend_mode, 2) \
F(set_render_draw_color, 5) \
/* sdl_surface */ \
F(img_load, 1) \
diff --git a/c_src/sdl_renderer.c b/c_src/sdl_renderer.c
index 0da13d1..57428a7 100644
--- a/c_src/sdl_renderer.c
+++ b/c_src/sdl_renderer.c
@@ -33,6 +33,7 @@ NIF_LIST_TO_FLAGS_FUNCTION(list_to_renderer_flags, Uint32, RENDERER_FLAGS)
E(add, SDL_BLENDMODE_ADD) \
E(mod, SDL_BLENDMODE_MOD)
+NIF_ATOM_TO_ENUM_FUNCTION(atom_to_blend_mode, SDL_BlendMode, BLEND_MODE_ENUM)
NIF_ENUM_TO_ATOM_FUNCTION(blend_mode_to_atom, SDL_BlendMode, BLEND_MODE_ENUM)
#define FLIP_FLAGS(F) \
@@ -895,6 +896,28 @@ NIF_FUNCTION(render_target_supported)
NIF_RES_GET(Renderer, renderer_res));
}
+// set_render_draw_blend_mode
+
+NIF_CALL_HANDLER(thread_set_render_draw_blend_mode)
+{
+ if (SDL_SetRenderDrawBlendMode(args[0], (long)args[1]))
+ return sdl_error_tuple(env);
+
+ return atom_ok;
+}
+
+NIF_FUNCTION(set_render_draw_blend_mode)
+{
+ void* renderer_res;
+ SDL_BlendMode mode;
+
+ BADARG_IF(!enif_get_resource(env, argv[0], res_Renderer, &renderer_res));
+ BADARG_IF(!atom_to_blend_mode(env, argv[1], &mode));
+
+ return nif_thread_call(env, thread_set_render_draw_blend_mode, 2,
+ NIF_RES_GET(Renderer, renderer_res), mode);
+}
+
// set_render_draw_color
NIF_CALL_HANDLER(thread_set_render_draw_color)