aboutsummaryrefslogtreecommitdiffstats
path: root/src/sdl_video.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdl_video.erl')
-rw-r--r--src/sdl_video.erl75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/sdl_video.erl b/src/sdl_video.erl
new file mode 100644
index 0000000..37e2947
--- /dev/null
+++ b/src/sdl_video.erl
@@ -0,0 +1,75 @@
+%% 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_video).
+
+-export([get_current_driver/0]).
+-export([get_display_bounds/1]).
+-export([get_display_dpi/1]).
+-export([get_display_name/1]).
+-export([get_display_usable_bounds/1]).
+-export([get_driver/1]).
+-export([get_num_displays/0]).
+-export([get_num_drivers/0]).
+-export([start/1]).
+-export([stop/0]).
+
+-spec get_current_driver() -> binary() | undefined.
+get_current_driver() ->
+ esdl2:get_current_video_driver(),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_display_bounds(integer()) -> sdl_rect:rect() | undefined.
+get_display_bounds(Index) ->
+ esdl2:get_display_bounds(Index),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_display_dpi(integer())
+ -> #{diagonal := float(), horizontal := float(), vertical := float()}
+ | undefined.
+get_display_dpi(Index) ->
+ esdl2:get_display_dpi(Index),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_display_name(integer()) -> binary() | undefined.
+get_display_name(Index) ->
+ esdl2:get_display_name(Index),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_display_usable_bounds(integer()) -> sdl_rect:rect() | undefined.
+get_display_usable_bounds(Index) ->
+ esdl2:get_display_usable_bounds(Index),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_driver(integer()) -> binary() | undefined.
+get_driver(Index) ->
+ esdl2:get_video_driver(Index).
+
+-spec get_num_displays() -> integer().
+get_num_displays() ->
+ esdl2:get_num_video_displays(),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_num_drivers() -> integer().
+get_num_drivers() ->
+ esdl2:get_num_video_drivers().
+
+-spec start(binary()) -> ok | sdl:error().
+start(DriverName) ->
+ esdl2:video_init(DriverName),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec stop() -> ok.
+stop() ->
+ esdl2:video_quit().