aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-03-18 12:04:46 +0100
committerLoïc Hoguin <[email protected]>2014-03-18 12:16:53 +0100
commit608acbb03f976b0fbf23877d8b4b6ad7529e1d53 (patch)
treef6ba7f0b5a37d270bfc64e07d02ebb0992631d8e /src
downloadesdl2-608acbb03f976b0fbf23877d8b4b6ad7529e1d53.tar.gz
esdl2-608acbb03f976b0fbf23877d8b4b6ad7529e1d53.tar.bz2
esdl2-608acbb03f976b0fbf23877d8b4b6ad7529e1d53.zip
Initial commit
Diffstat (limited to 'src')
-rw-r--r--src/esdl2.erl111
-rw-r--r--src/sdl.erl51
-rw-r--r--src/sdl_events.erl20
-rw-r--r--src/sdl_renderer.erl40
-rw-r--r--src/sdl_surface.erl20
-rw-r--r--src/sdl_texture.erl25
-rw-r--r--src/sdl_window.erl20
7 files changed, 287 insertions, 0 deletions
diff --git a/src/esdl2.erl b/src/esdl2.erl
new file mode 100644
index 0000000..a786685
--- /dev/null
+++ b/src/esdl2.erl
@@ -0,0 +1,111 @@
+%% Copyright (c) 2014, 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(esdl2).
+
+%% sdl
+-export([init/1]).
+-export([init_subsystem/1]).
+-export([quit/0]).
+-export([quit_subsystem/1]).
+-export([set_main_ready/0]).
+-export([was_init/1]).
+
+%% sdl_events
+-export([poll_event/0]).
+
+%% sdl_renderer
+-export([create_renderer/3]).
+-export([render_clear/1]).
+-export([render_copy/4]).
+-export([render_present/1]).
+-export([set_render_draw_color/5]).
+
+%% sdl_surface
+-export([img_load/1]).
+
+%% sdl_texture
+-export([create_texture_from_surface/2]).
+
+%% sdl_window
+-export([create_window/6]).
+
+%% @todo We probably want to accept an env variable or somthing for the location.
+-on_load(on_load/0).
+on_load() ->
+ PrivDir = case code:priv_dir(?MODULE) of
+ {error, _} ->
+ AppPath = filename:dirname(filename:dirname(code:which(?MODULE))),
+ filename:join(AppPath, "priv");
+ Path ->
+ Path
+ end,
+ erlang:load_nif(filename:join(PrivDir, atom_to_list(?MODULE)), 0).
+
+%% sdl
+
+init(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+init_subsystem(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+quit() ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+quit_subsystem(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+set_main_ready() ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+was_init(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+%% sdl_events
+
+poll_event() ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+%% sdl_renderer
+
+create_renderer(_, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+render_clear(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+render_copy(_, _, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+render_present(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+set_render_draw_color(_, _, _, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+%% sdl_surface
+
+img_load(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+%% sdl_texture
+
+create_texture_from_surface(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+%% sdl_window
+
+create_window(_, _, _, _, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
diff --git a/src/sdl.erl b/src/sdl.erl
new file mode 100644
index 0000000..b7adae6
--- /dev/null
+++ b/src/sdl.erl
@@ -0,0 +1,51 @@
+%% Copyright (c) 2014, 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).
+
+-export([start/0]).
+-export([start/1]).
+-export([stop/0]).
+-export([stop_on_exit/0]).
+-export([start_subsystems/1]).
+-export([stop_subsystems/1]).
+-export([is_started/1]).
+
+start() ->
+ esdl2:init([]).
+
+start(Subsystems) ->
+ esdl2:init(Subsystems).
+
+stop() ->
+ esdl2:quit().
+
+stop_on_exit() ->
+ Self = self(),
+ spawn_link(fun() ->
+ process_flag(trap_exit, true),
+ receive {'EXIT', Self, _} ->
+ stop()
+ end
+ end),
+ ok.
+
+start_subsystems(Subsystems) ->
+ esdl2:init_subsystem(Subsystems).
+
+stop_subsystems(Subsystems) ->
+ esdl2:quit_subsystem(Subsystems).
+
+is_started(Subsystem) ->
+ esdl2:was_init([Subsystem]).
diff --git a/src/sdl_events.erl b/src/sdl_events.erl
new file mode 100644
index 0000000..2cd6c3f
--- /dev/null
+++ b/src/sdl_events.erl
@@ -0,0 +1,20 @@
+%% Copyright (c) 2014, 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_events).
+
+-export([poll/0]).
+
+poll() ->
+ esdl2:poll_event().
diff --git a/src/sdl_renderer.erl b/src/sdl_renderer.erl
new file mode 100644
index 0000000..2fff74f
--- /dev/null
+++ b/src/sdl_renderer.erl
@@ -0,0 +1,40 @@
+%% Copyright (c) 2014, 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_renderer).
+
+-export([create/3]).
+-export([clear/1]).
+-export([copy/2]).
+-export([copy/4]).
+-export([present/1]).
+-export([set_draw_color/5]).
+
+create(Window, Index, Flags) ->
+ esdl2:create_renderer(Window, Index, Flags).
+
+clear(Renderer) ->
+ esdl2:render_clear(Renderer).
+
+copy(Renderer, Texture) ->
+ esdl2:render_copy(Renderer, Texture, undefined, undefined).
+
+copy(Renderer, Texture, SrcRect, DstRect) ->
+ esdl2:render_copy(Renderer, Texture, SrcRect, DstRect).
+
+present(Renderer) ->
+ esdl2:render_present(Renderer).
+
+set_draw_color(Renderer, R, G, B, A) ->
+ esdl2:set_render_draw_color(Renderer, R, G, B, A).
diff --git a/src/sdl_surface.erl b/src/sdl_surface.erl
new file mode 100644
index 0000000..f36407f
--- /dev/null
+++ b/src/sdl_surface.erl
@@ -0,0 +1,20 @@
+%% Copyright (c) 2014, 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_surface).
+
+-export([load/1]).
+
+load(Filename) ->
+ esdl2:img_load(Filename).
diff --git a/src/sdl_texture.erl b/src/sdl_texture.erl
new file mode 100644
index 0000000..f181bc1
--- /dev/null
+++ b/src/sdl_texture.erl
@@ -0,0 +1,25 @@
+%% Copyright (c) 2014, 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_texture).
+
+-export([create_from_file/2]).
+-export([create_from_surface/2]).
+
+create_from_file(Renderer, Filename) ->
+ {ok, Surface} = sdl_surface:load(Filename),
+ create_from_surface(Renderer, Surface).
+
+create_from_surface(Renderer, Surface) ->
+ esdl2:create_texture_from_surface(Renderer, Surface).
diff --git a/src/sdl_window.erl b/src/sdl_window.erl
new file mode 100644
index 0000000..649ad8a
--- /dev/null
+++ b/src/sdl_window.erl
@@ -0,0 +1,20 @@
+%% Copyright (c) 2014, 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_window).
+
+-export([create/6]).
+
+create(Title, X, Y, W, H, Flags) ->
+ esdl2:create_window(Title, X, Y, W, H, Flags).