aboutsummaryrefslogtreecommitdiffstats
path: root/src/sdl_renderer.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdl_renderer.erl')
-rw-r--r--src/sdl_renderer.erl50
1 files changed, 44 insertions, 6 deletions
diff --git a/src/sdl_renderer.erl b/src/sdl_renderer.erl
index c46df8a..2601cd7 100644
--- a/src/sdl_renderer.erl
+++ b/src/sdl_renderer.erl
@@ -18,7 +18,6 @@
-export([copy/2]).
-export([copy/4]).
-export([copy/7]).
--export([count_drivers/0]).
-export([create/3]).
-export([draw_line/3]).
-export([draw_line/5]).
@@ -35,7 +34,12 @@
-export([get_clip_rect/1]).
-export([get_draw_blend_mode/1]).
-export([get_draw_color/1]).
+-export([get_driver_info/1]).
+-export([get_from_window/1]).
+-export([get_info/1]).
+-export([get_integer_scale/1]).
-export([get_logical_size/1]).
+-export([get_num_drivers/0]).
-export([get_output_size/1]).
-export([get_scale/1]).
-export([get_viewport/1]).
@@ -45,6 +49,7 @@
-export([set_clip_rect/5]).
-export([set_draw_blend_mode/2]).
-export([set_draw_color/5]).
+-export([set_integer_scale/2]).
-export([set_logical_size/3]).
-export([set_scale/3]).
-export([set_viewport/2]).
@@ -56,6 +61,14 @@
-type renderer_flag() :: software | accelerated | present_vsync | target_texture.
-export_type([renderer_flag/0]).
+-type renderer_info() :: #{
+ name => binary(),
+ flags => [renderer_flag()],
+ texture_formats => sdl_pixels:pixel_format(),
+ max_texture_width => integer(),
+ max_texture_height => integer()
+}.
+
-spec clear(renderer()) -> ok | sdl:error().
clear(Renderer) ->
esdl2:render_clear(Renderer),
@@ -81,11 +94,6 @@ copy(Renderer, Texture, SrcRect, DstRect, Angle, CenterPoint, FlipFlags) ->
esdl2:render_copy_ex(Renderer, Texture, SrcRect, DstRect, Angle, CenterPoint, FlipFlags),
receive {'_nif_thread_ret_', Ret} -> Ret end.
--spec count_drivers() -> integer().
-count_drivers() ->
- {ok, Count} = esdl2:get_num_render_drivers(),
- Count.
-
-spec create(sdl_window:window(), integer(), [renderer_flag()])
-> {ok, renderer()} | sdl:error().
create(Window, Index, Flags) ->
@@ -169,11 +177,36 @@ get_draw_color(Renderer) ->
Mode
end.
+-spec get_driver_info(integer()) -> {ok, renderer_info()} | sdl:error().
+get_driver_info(Index) ->
+ esdl2:get_render_driver_info(Index),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_from_window(sdl_window:window()) -> renderer().
+get_from_window(Window) ->
+ esdl2:get_renderer(Window),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_info(renderer()) -> {ok, renderer_info()} | sdl:error().
+get_info(Renderer) ->
+ esdl2:get_renderer_info(Renderer),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_integer_scale(renderer()) -> boolean().
+get_integer_scale(Renderer) ->
+ esdl2:render_get_integer_scale(Renderer),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
-spec get_logical_size(renderer()) -> {integer(), integer()}.
get_logical_size(Renderer) ->
esdl2:render_get_logical_size(Renderer),
receive {'_nif_thread_ret_', Ret} -> Ret end.
+-spec get_num_drivers() -> integer().
+get_num_drivers() ->
+ {ok, Num} = esdl2:get_num_render_drivers(),
+ Num.
+
-spec get_output_size(renderer()) -> {integer(), integer()}.
get_output_size(Renderer) ->
esdl2:get_render_output_size(Renderer),
@@ -220,6 +253,11 @@ set_draw_color(Renderer, R, G, B, A) ->
esdl2:set_render_draw_color(Renderer, R, G, B, A),
receive {'_nif_thread_ret_', Ret} -> Ret end.
+-spec set_integer_scale(renderer(), boolean()) -> ok | sdl:error().
+set_integer_scale(Renderer, Bool) ->
+ esdl2:render_set_integer_scale(Renderer, Bool),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
-spec set_logical_size(renderer(), integer(), integer()) -> ok | sdl:error().
set_logical_size(Renderer, W, H) ->
esdl2:render_set_logical_size(Renderer, W, H),