aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-01-07 10:45:17 +0100
committerLoïc Hoguin <[email protected]>2018-01-07 10:45:17 +0100
commit898c2ada209f3ab4e19d4b072aeef484baae27da (patch)
tree02bdbec4966eb43ddd0b67d2ffec17e8d1e8a540 /src
parentd3c5885b7463f3019efdf2ee1fd9cdf7d85396fe (diff)
downloadesdl2-898c2ada209f3ab4e19d4b072aeef484baae27da.tar.gz
esdl2-898c2ada209f3ab4e19d4b072aeef484baae27da.tar.bz2
esdl2-898c2ada209f3ab4e19d4b072aeef484baae27da.zip
Add a bunch of sdl_renderer functions
Diffstat (limited to 'src')
-rw-r--r--src/esdl2.erl20
-rw-r--r--src/sdl_pixels.erl28
-rw-r--r--src/sdl_renderer.erl50
3 files changed, 92 insertions, 6 deletions
diff --git a/src/esdl2.erl b/src/esdl2.erl
index f46ef23..435451b 100644
--- a/src/esdl2.erl
+++ b/src/esdl2.erl
@@ -119,7 +119,10 @@
-export([get_num_render_drivers/0]).
-export([get_render_draw_blend_mode/1]).
-export([get_render_draw_color/1]).
+-export([get_render_driver_info/1]).
-export([get_render_output_size/1]).
+-export([get_renderer/1]).
+-export([get_renderer_info/1]).
-export([render_clear/1]).
-export([render_copy/4]).
-export([render_copy_ex/7]).
@@ -132,11 +135,13 @@
-export([render_fill_rect/5]).
-export([render_fill_rects/2]).
-export([render_get_clip_rect/1]).
+-export([render_get_integer_scale/1]).
-export([render_get_logical_size/1]).
-export([render_get_scale/1]).
-export([render_get_viewport/1]).
-export([render_present/1]).
-export([render_set_clip_rect/5]).
+-export([render_set_integer_scale/2]).
-export([render_set_logical_size/3]).
-export([render_set_scale/3]).
-export([render_set_viewport/5]).
@@ -460,9 +465,18 @@ get_render_draw_blend_mode(_) ->
get_render_draw_color(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
+get_render_driver_info(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
get_render_output_size(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
+get_renderer(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+get_renderer_info(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
render_clear(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
@@ -499,6 +513,9 @@ render_fill_rects(_, _) ->
render_get_clip_rect(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
+render_get_integer_scale(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
render_get_logical_size(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
@@ -514,6 +531,9 @@ render_present(_) ->
render_set_clip_rect(_, _, _, _, _) ->
erlang:nif_error({not_loaded, ?MODULE}).
+render_set_integer_scale(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
render_set_logical_size(_, _, _) ->
erlang:nif_error({not_loaded, ?MODULE}).
diff --git a/src/sdl_pixels.erl b/src/sdl_pixels.erl
new file mode 100644
index 0000000..fef9a55
--- /dev/null
+++ b/src/sdl_pixels.erl
@@ -0,0 +1,28 @@
+%% Copyright (c) 2018, 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_pixels).
+
+-type pixel_format() :: unknown
+ | index1lsb | index1msb | index4lsb | index4msb | index8
+ | rgb332 | rgb444 | rgb555 | bgr555
+ | argb4444 | rgba4444 | abgr4444 | bgra4444
+ | argb1555 | rgba5551 | abgr1555 | bgra5551
+ | rgb565 | bgr565 | rgb24 | bgr24
+ | rgb888 | rgbx8888 | bgr888 | bgrx8888
+ | argb8888 | rgba8888 | abgr8888 | bgra8888
+ | argb2101010
+ | rgba32 | argb32 | bgra32 | abgr32
+ | yv12 | iyuv | yuy2 | uyvy | yvyu | nv12 | nv21.
+-export_type([pixel_format/0]).
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),