diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/esdl2.erl | 8 | ||||
-rw-r--r-- | src/sdl_blend_mode.erl | 36 | ||||
-rw-r--r-- | src/sdl_renderer.erl | 7 |
3 files changed, 46 insertions, 5 deletions
diff --git a/src/esdl2.erl b/src/esdl2.erl index e18a7fc..815c12c 100644 --- a/src/esdl2.erl +++ b/src/esdl2.erl @@ -25,6 +25,9 @@ -export([set_main_ready/0]). -export([was_init/1]). +%% sdl_blendmode +-export([compose_custom_blend_mode/6]). + %% sdl_clipboard -export([get_clipboard_text/0]). -export([has_clipboard_text/0]). @@ -200,6 +203,11 @@ set_main_ready() -> was_init(_) -> erlang:nif_error({not_loaded, ?MODULE}). +%% sdl_blendmode + +compose_custom_blend_mode(_, _, _, _, _, _) -> + erlang:nif_error({not_loaded, ?MODULE}). + %% sdl_clipboard get_clipboard_text() -> diff --git a/src/sdl_blend_mode.erl b/src/sdl_blend_mode.erl new file mode 100644 index 0000000..ce6b854 --- /dev/null +++ b/src/sdl_blend_mode.erl @@ -0,0 +1,36 @@ +%% Copyright (c) 2017, Loïc Hoguin <[email protected]> +%% +%% Permission to use, copy, modify, and/or distribute this software for any +%% purpose with or without fee is hereby granted, provided that the above +%% copyright notice and this permission notice appear in all copies. +%% +%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-module(sdl_blend_mode). + +-export([compose/6]). + +-type blend_mode() :: none | blend | add | mod | invalid | integer(). +-export_type([blend_mode/0]). + +-type blend_operation() :: add | substract | rev_substract | minimum | maximum. +-type blend_factor() :: zero | one + | src_color | one_minus_src_color + | src_alpha | one_minus_src_alpha + | dst_color | one_minus_dst_color + | dst_alpha | one_minus_dst_alpha. + +-spec compose(blend_factor(), blend_factor(), blend_operation(), + blend_factor(), blend_factor(), blend_operation()) -> blend_mode(). +compose(SrcColorFactor, DstColorFactor, ColorOp, + SrcAlphaFactor, DstAlphaFactor, AlphaOp) -> + esdl2:compose_custom_blend_mode( + SrcColorFactor, DstColorFactor, ColorOp, + SrcAlphaFactor, DstAlphaFactor, AlphaOp), + receive {'_nif_thread_ret_', Ret} -> Ret end. diff --git a/src/sdl_renderer.erl b/src/sdl_renderer.erl index 9727743..8bf51fc 100644 --- a/src/sdl_renderer.erl +++ b/src/sdl_renderer.erl @@ -59,9 +59,6 @@ -type point() :: #{x=>integer(), y=>integer()}. -type rect() :: #{x=>integer(), y=>integer(), w=>integer(), h=>integer()}. --type blend_mode() :: none | blend | add | mod. --export_type([blend_mode/0]). - -spec clear(renderer()) -> ok | sdl:error(). clear(Renderer) -> esdl2:render_clear(Renderer), @@ -157,7 +154,7 @@ get_clip_rect(Renderer) -> esdl2:render_get_clip_rect(Renderer), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec get_draw_blend_mode(renderer()) -> blend_mode(). +-spec get_draw_blend_mode(renderer()) -> sdl_blend_mode:blend_mode(). get_draw_blend_mode(Renderer) -> esdl2:get_render_draw_blend_mode(Renderer), receive {'_nif_thread_ret_', Ret} -> @@ -214,7 +211,7 @@ set_clip_rect(Renderer, X, Y, W, H) -> esdl2:render_set_clip_rect(Renderer, X, Y, W, H), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec set_draw_blend_mode(renderer(), blend_mode()) -> ok | sdl:error(). +-spec set_draw_blend_mode(renderer(), sdl_blend_mode:blend_mode()) -> ok | sdl:error(). set_draw_blend_mode(Renderer, BlendMode) -> esdl2:set_render_draw_blend_mode(Renderer, BlendMode), receive {'_nif_thread_ret_', Ret} -> Ret end. |