diff options
author | Loïc Hoguin <[email protected]> | 2018-01-05 16:32:06 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-01-05 16:32:06 +0100 |
commit | 30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad (patch) | |
tree | 328202812f754455471c883b7f8ab6b68f0f895f /src | |
parent | 435845af18dead29addb2d88e32bf919011a0a51 (diff) | |
download | esdl2-30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad.tar.gz esdl2-30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad.tar.bz2 esdl2-30cd5551c4cdc7a2d9bbc92dfbc0313764d2bdad.zip |
Add the remaining keyboard functions
Also adds defines for all the keycode and scancode in SDL 2.0.7.
Diffstat (limited to 'src')
-rw-r--r-- | src/esdl2.erl | 20 | ||||
-rw-r--r-- | src/sdl_keyboard.erl | 29 | ||||
-rw-r--r-- | src/sdl_rect.erl | 21 | ||||
-rw-r--r-- | src/sdl_renderer.erl | 35 |
4 files changed, 87 insertions, 18 deletions
diff --git a/src/esdl2.erl b/src/esdl2.erl index a8a1f61..0a76f25 100644 --- a/src/esdl2.erl +++ b/src/esdl2.erl @@ -83,12 +83,17 @@ -export([get_key_from_name/1]). -export([get_key_from_scancode/1]). -export([get_key_name/1]). +-export([get_keyboard_focus/0]). +-export([get_keyboard_state/0]). -export([get_mod_state/0]). -export([get_scancode_from_key/1]). -export([get_scancode_from_name/1]). -export([get_scancode_name/1]). +-export([has_screen_keyboard_support/0]). +-export([is_screen_keyboard_shown/1]). -export([is_text_input_active/0]). -export([set_mod_state/1]). +-export([set_text_input_rect/1]). -export([start_text_input/0]). -export([stop_text_input/0]). @@ -360,6 +365,12 @@ get_key_from_scancode(_) -> get_key_name(_) -> erlang:nif_error({not_loaded, ?MODULE}). +get_keyboard_focus() -> + erlang:nif_error({not_loaded, ?MODULE}). + +get_keyboard_state() -> + erlang:nif_error({not_loaded, ?MODULE}). + get_mod_state() -> erlang:nif_error({not_loaded, ?MODULE}). @@ -372,12 +383,21 @@ get_scancode_from_name(_) -> get_scancode_name(_) -> erlang:nif_error({not_loaded, ?MODULE}). +has_screen_keyboard_support() -> + erlang:nif_error({not_loaded, ?MODULE}). + +is_screen_keyboard_shown(_) -> + erlang:nif_error({not_loaded, ?MODULE}). + is_text_input_active() -> erlang:nif_error({not_loaded, ?MODULE}). set_mod_state(_) -> erlang:nif_error({not_loaded, ?MODULE}). +set_text_input_rect(_) -> + erlang:nif_error({not_loaded, ?MODULE}). + start_text_input() -> erlang:nif_error({not_loaded, ?MODULE}). diff --git a/src/sdl_keyboard.erl b/src/sdl_keyboard.erl index 325c727..1e0b68c 100644 --- a/src/sdl_keyboard.erl +++ b/src/sdl_keyboard.erl @@ -14,6 +14,7 @@ -module(sdl_keyboard). +-export([get_focused_window/0]). -export([get_key_from_name/1]). -export([get_key_from_scancode/1]). -export([get_key_name/1]). @@ -21,11 +22,20 @@ -export([get_scancode_from_key/1]). -export([get_scancode_from_name/1]). -export([get_scancode_name/1]). +-export([get_state/0]). +-export([has_screen_keyboard_support/0]). +-export([is_screen_keyboard_shown/1]). -export([is_text_input_active/0]). -export([set_mod_state/1]). +-export([set_text_input_rect/1]). -export([start_text_input/0]). -export([stop_text_input/0]). +-spec get_focused_window() -> sdl_window:window() | undefined. +get_focused_window() -> + esdl2:get_keyboard_focus(), + receive {'_nif_thread_ret_', Ret} -> Ret end. + -spec get_key_from_name(binary()) -> non_neg_integer() | undefined. get_key_from_name(Name) -> esdl2:get_key_from_name(Name). @@ -56,6 +66,21 @@ get_scancode_from_name(Name) -> get_scancode_name(Scancode) -> esdl2:get_scancode_name(Scancode). +-spec get_state() -> #{non_neg_integer() => boolean()}. +get_state() -> + esdl2:get_keyboard_state(), + receive {'_nif_thread_ret_', Ret} -> Ret end. + +-spec has_screen_keyboard_support() -> boolean(). +has_screen_keyboard_support() -> + esdl2:has_screen_keyboard_support(), + receive {'_nif_thread_ret_', Ret} -> Ret end. + +-spec is_screen_keyboard_shown(sdl_window:window()) -> boolean(). +is_screen_keyboard_shown(Window) -> + esdl2:is_screen_keyboard_shown(Window), + receive {'_nif_thread_ret_', Ret} -> Ret end. + -spec is_text_input_active() -> boolean(). is_text_input_active() -> esdl2:is_text_input_active(), @@ -65,6 +90,10 @@ is_text_input_active() -> set_mod_state(Mod) -> esdl2:set_mod_state(Mod). +-spec set_text_input_rect(sdl_rect:rect()) -> ok. +set_text_input_rect(Rect) -> + esdl2:set_text_input_rect(Rect). + -spec start_text_input() -> ok. start_text_input() -> esdl2:start_text_input(). diff --git a/src/sdl_rect.erl b/src/sdl_rect.erl new file mode 100644 index 0000000..b747d64 --- /dev/null +++ b/src/sdl_rect.erl @@ -0,0 +1,21 @@ +%% Copyright (c) 2014-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_rect). + +-type point() :: #{x=>integer(), y=>integer()}. +-export_type([point/0]). + +-type rect() :: #{x=>integer(), y=>integer(), w=>integer(), h=>integer()}. +-export_type([rect/0]). diff --git a/src/sdl_renderer.erl b/src/sdl_renderer.erl index f596acd..c46df8a 100644 --- a/src/sdl_renderer.erl +++ b/src/sdl_renderer.erl @@ -56,9 +56,6 @@ -type renderer_flag() :: software | accelerated | present_vsync | target_texture. -export_type([renderer_flag/0]). --type point() :: #{x=>integer(), y=>integer()}. --type rect() :: #{x=>integer(), y=>integer(), w=>integer(), h=>integer()}. - -spec clear(renderer()) -> ok | sdl:error(). clear(Renderer) -> esdl2:render_clear(Renderer), @@ -69,14 +66,16 @@ copy(Renderer, Texture) -> esdl2:render_copy(Renderer, Texture, undefined, undefined), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec copy(renderer(), sdl_texture:texture(), undefined | rect(), undefined | rect()) +-spec copy(renderer(), sdl_texture:texture(), + undefined | sdl_rect:rect(), undefined | sdl_rect:rect()) -> ok | sdl:error(). copy(Renderer, Texture, SrcRect, DstRect) -> esdl2:render_copy(Renderer, Texture, SrcRect, DstRect), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec copy(renderer(), sdl_texture:texture(), undefined | rect(), undefined | rect(), - float(), undefined | point(), none | horizontal | vertical) +-spec copy(renderer(), sdl_texture:texture(), + undefined | sdl_rect:rect(), undefined | sdl_rect:rect(), + float(), undefined | sdl_rect:point(), none | horizontal | vertical) -> ok | sdl:error(). copy(Renderer, Texture, SrcRect, DstRect, Angle, CenterPoint, FlipFlags) -> esdl2:render_copy_ex(Renderer, Texture, SrcRect, DstRect, Angle, CenterPoint, FlipFlags), @@ -93,7 +92,7 @@ create(Window, Index, Flags) -> esdl2:create_renderer(Window, Index, Flags), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec draw_line(renderer(), point(), point()) -> ok | sdl:error(). +-spec draw_line(renderer(), sdl_rect:point(), sdl_rect:point()) -> ok | sdl:error(). draw_line(Renderer, #{x:=X1, y:=Y1}, #{x:=X2, y:=Y2}) -> draw_line(Renderer, X1, Y1, X2, Y2). @@ -102,12 +101,12 @@ draw_line(Renderer, X1, Y1, X2, Y2) -> esdl2:render_draw_line(Renderer, X1, Y1, X2, Y2), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec draw_lines(renderer(), [point()]) -> ok | sdl:error(). +-spec draw_lines(renderer(), [sdl_rect:point()]) -> ok | sdl:error(). draw_lines(Renderer, Points) -> esdl2:render_draw_lines(Renderer, Points), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec draw_point(renderer(), point()) -> ok | sdl:error(). +-spec draw_point(renderer(), sdl_rect:point()) -> ok | sdl:error(). draw_point(Renderer, #{x:=X, y:=Y}) -> draw_point(Renderer, X, Y). @@ -116,12 +115,12 @@ draw_point(Renderer, X, Y) -> esdl2:render_draw_point(Renderer, X, Y), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec draw_points(renderer(), [point()]) -> ok | sdl:error(). +-spec draw_points(renderer(), [sdl_rect:point()]) -> ok | sdl:error(). draw_points(Renderer, Points) -> esdl2:render_draw_points(Renderer, Points), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec draw_rect(renderer(), rect()) -> ok | sdl:error(). +-spec draw_rect(renderer(), sdl_rect:rect()) -> ok | sdl:error(). draw_rect(Renderer, #{x:=X, y:=Y, w:=W, h:=H}) -> draw_rect(Renderer, X, Y, W, H). @@ -130,12 +129,12 @@ draw_rect(Renderer, X, Y, W, H) -> esdl2:render_draw_rect(Renderer, X, Y, W, H), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec draw_rects(renderer(), [rect()]) -> ok | sdl:error(). +-spec draw_rects(renderer(), [sdl_rect:rect()]) -> ok | sdl:error(). draw_rects(Renderer, Rects) -> esdl2:render_draw_rects(Renderer, Rects), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec fill_rect(renderer(), rect()) -> ok | sdl:error(). +-spec fill_rect(renderer(), sdl_rect:rect()) -> ok | sdl:error(). fill_rect(Renderer, #{x:=X, y:=Y, w:=W, h:=H}) -> fill_rect(Renderer, X, Y, W, H). @@ -144,12 +143,12 @@ fill_rect(Renderer, X, Y, W, H) -> esdl2:render_fill_rect(Renderer, X, Y, W, H), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec fill_rects(renderer(), [rect()]) -> ok | sdl:error(). +-spec fill_rects(renderer(), [sdl_rect:rect()]) -> ok | sdl:error(). fill_rects(Renderer, Rects) -> esdl2:render_fill_rects(Renderer, Rects), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec get_clip_rect(renderer()) -> rect(). +-spec get_clip_rect(renderer()) -> sdl_rect:rect(). get_clip_rect(Renderer) -> esdl2:render_get_clip_rect(Renderer), receive {'_nif_thread_ret_', Ret} -> Ret end. @@ -188,7 +187,7 @@ get_scale(Renderer) -> esdl2:render_get_scale(Renderer), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec get_viewport(renderer()) -> rect(). +-spec get_viewport(renderer()) -> sdl_rect:rect(). get_viewport(Renderer) -> esdl2:render_get_viewport(Renderer), receive {'_nif_thread_ret_', Ret} -> Ret end. @@ -202,7 +201,7 @@ is_target_supported(Renderer) -> present(Renderer) -> esdl2:render_present(Renderer). --spec set_clip_rect(renderer(), rect()) -> ok | sdl:error(). +-spec set_clip_rect(renderer(), sdl_rect:rect()) -> ok | sdl:error(). set_clip_rect(Renderer, #{x:=X, y:=Y, w:=W, h:=H}) -> set_clip_rect(Renderer, X, Y, W, H). @@ -231,7 +230,7 @@ set_scale(Renderer, ScaleX, ScaleY) -> esdl2:render_set_scale(Renderer, ScaleX, ScaleY), receive {'_nif_thread_ret_', Ret} -> Ret end. --spec set_viewport(renderer(), rect()) -> ok | sdl:error(). +-spec set_viewport(renderer(), sdl_rect:rect()) -> ok | sdl:error(). set_viewport(Renderer, #{x:=X, y:=Y, w:=W, h:=H}) -> set_viewport(Renderer, X, Y, W, H). |