aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-04-09 13:28:49 +0200
committerLoïc Hoguin <[email protected]>2014-04-09 13:28:49 +0200
commit0eb48d66447cca4a9b1e719542b9551357fc7a17 (patch)
treebeaa5580f838f4f703f45b0958d49331225013ca
parente578cdd5a4bdcea95e160c6537c24e50b2c4330f (diff)
downloadesdl2-0eb48d66447cca4a9b1e719542b9551357fc7a17.tar.gz
esdl2-0eb48d66447cca4a9b1e719542b9551357fc7a17.tar.bz2
esdl2-0eb48d66447cca4a9b1e719542b9551357fc7a17.zip
Add typespecs to the sdl_events module
-rw-r--r--src/sdl_events.erl32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/sdl_events.erl b/src/sdl_events.erl
index a4710a5..37162e5 100644
--- a/src/sdl_events.erl
+++ b/src/sdl_events.erl
@@ -16,6 +16,38 @@
-export([poll/0]).
+-type window_event_type() :: shown | hidden | exposed | moved | resized
+ | size_changed | minimized | maximized | restored | enter | leave
+ | focus_gained | focus_lost | close.
+-type window_event() :: #{type=>window, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), event=>window_event_type(),
+ data=>{integer(), integer()}}.
+
+-type keymod() :: left_shift | right_shift | left_ctrl | right_ctrl
+ | left_alt | right_alt | left_gui | right_gui | num | caps | mode.
+-type key_event() :: #{type=>key_down | key_up, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), repeat=>boolean(), scancode=>non_neg_integer(),
+ sym=>non_neg_integer(), mod=>[keymod()]}.
+
+-type mouse_button() :: left | middle | right | x1 | x2 | non_neg_integer().
+-type mouse_button_event() :: #{type=>mouse_down | mouse_up, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), which=>touch | non_neg_integer(),
+ button=>mouse_button(), x=>integer(), y=>integer()}.
+
+-type mouse_motion_event() :: #{type=>mouse_motion, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), which=>touch | non_neg_integer(),
+ x=>integer(), y=>integer(), xrel=>integer(), yrel=>integer()}.
+
+-type mouse_wheel_event() :: #{type=>mouse_wheel, timestamp=>non_neg_integer(),
+ window_id=>non_neg_integer(), which=>touch | non_neg_integer(),
+ x=>integer(), y=>integer()}.
+
+-type quit_event() :: #{type=>quit, timestamp=>non_neg_integer()}.
+
+-type event() :: window_event() | key_event() | mouse_button_event()
+ | mouse_motion_event() | mouse_wheel_event() | quit_event().
+
+-spec poll() -> event() | false.
poll() ->
esdl2:poll_event(),
receive {'_nif_thread_ret_', Ret} -> Ret end.