aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-02-07 12:53:11 +0100
committerLoïc Hoguin <[email protected]>2018-02-07 17:26:15 +0100
commit6e2c3832d850497fe715c813869a5e52a454bb1a (patch)
treecc76e7e6fb9fbfa4d4ac87212d46f678f93ffaa8 /src
parent0e6c291c64e77181851b8a3255a3da8827124080 (diff)
downloadesdl2-6e2c3832d850497fe715c813869a5e52a454bb1a.tar.gz
esdl2-6e2c3832d850497fe715c813869a5e52a454bb1a.tar.bz2
esdl2-6e2c3832d850497fe715c813869a5e52a454bb1a.zip
Add most remaining sdl_ttf functions
The only functions left are glyphs and functions I'm not sure should be implemented.
Diffstat (limited to 'src')
-rw-r--r--src/esdl2.erl84
-rw-r--r--src/sdl_ttf.erl141
2 files changed, 223 insertions, 2 deletions
diff --git a/src/esdl2.erl b/src/esdl2.erl
index 52a2ace..308ffe6 100644
--- a/src/esdl2.erl
+++ b/src/esdl2.erl
@@ -173,10 +173,31 @@
-export([set_texture_color_mod/4]).
%% sdl_ttf
+-export([ttf_font_ascent/1]).
+-export([ttf_font_descent/1]).
+-export([ttf_font_face_family_name/1]).
+-export([ttf_font_face_is_fixed_width/1]).
+-export([ttf_font_face_style_name/1]).
+-export([ttf_font_faces/1]).
+-export([ttf_font_height/1]).
+-export([ttf_font_line_skip/1]).
+-export([ttf_get_font_hinting/1]).
+-export([ttf_get_font_kerning/1]).
+-export([ttf_get_font_outline/1]).
+-export([ttf_get_font_style/1]).
-export([ttf_init/0]).
-export([ttf_open_font/2]).
+-export([ttf_open_font_index/3]).
-export([ttf_quit/0]).
+-export([ttf_render_utf8_blended/3]).
+-export([ttf_render_utf8_blended_wrapped/4]).
+-export([ttf_render_utf8_shaded/4]).
-export([ttf_render_utf8_solid/3]).
+-export([ttf_set_font_hinting/2]).
+-export([ttf_set_font_kerning/2]).
+-export([ttf_set_font_outline/2]).
+-export([ttf_set_font_style/2]).
+-export([ttf_size_utf8/2]).
-export([ttf_was_init/0]).
%% sdl_version
@@ -661,18 +682,81 @@ set_texture_color_mod(_, _, _, _) ->
%% sdl_ttf
+ttf_font_ascent(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_descent(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_face_family_name(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_face_is_fixed_width(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_face_style_name(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_faces(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_height(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_font_line_skip(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_get_font_hinting(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_get_font_kerning(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_get_font_outline(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_get_font_style(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
ttf_init() ->
erlang:nif_error({not_loaded, ?MODULE}).
ttf_open_font(_, _) ->
erlang:nif_error({not_loaded, ?MODULE}).
+ttf_open_font_index(_, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
ttf_quit() ->
erlang:nif_error({not_loaded, ?MODULE}).
+ttf_render_utf8_blended(_, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_render_utf8_blended_wrapped(_, _, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_render_utf8_shaded(_, _, _, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
ttf_render_utf8_solid(_, _, _) ->
erlang:nif_error({not_loaded, ?MODULE}).
+ttf_set_font_hinting(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_set_font_kerning(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_set_font_outline(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_set_font_style(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
+ttf_size_utf8(_, _) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
ttf_was_init() ->
erlang:nif_error({not_loaded, ?MODULE}).
diff --git a/src/sdl_ttf.erl b/src/sdl_ttf.erl
index 64a84da..314f70a 100644
--- a/src/sdl_ttf.erl
+++ b/src/sdl_ttf.erl
@@ -14,15 +14,111 @@
-module(sdl_ttf).
+-export([disable_kerning/1]).
+-export([enable_kerning/1]).
+-export([get_ascent/1]).
+-export([get_descent/1]).
+-export([get_family_name/1]).
+-export([get_height/1]).
+-export([get_hinting/1]).
+-export([get_line_skip/1]).
+-export([get_num_faces/1]).
+-export([get_outline/1]).
+-export([get_style/1]).
+-export([get_style_name/1]).
+-export([is_fixed_width/1]).
+-export([is_kerning_enabled/1]).
-export([is_started/0]).
-export([open_font/2]).
+-export([open_font/3]).
+-export([render_blended/3]).
+-export([render_blended/4]).
+-export([render_shaded/4]).
-export([render_solid/3]).
+-export([render_size/2]).
+-export([set_hinting/2]).
+-export([set_outline/2]).
+-export([set_style/2]).
-export([start/0]).
-export([stop/0]).
-opaque font() :: reference().
-export_type([font/0]).
+-type hinting() :: normal | light | mono | none.
+-export_type([hinting/0]).
+
+-type style() :: [normal | bold | italic | underline | strikethrough].
+-export_type([style/0]).
+
+-spec disable_kerning(font()) -> ok.
+disable_kerning(Font) ->
+ esdl2:ttf_set_font_kerning(Font, false).
+
+-spec enable_kerning(font()) -> ok.
+enable_kerning(Font) ->
+ esdl2:ttf_set_font_kerning(Font, true).
+
+-spec get_ascent(font()) -> non_neg_integer().
+get_ascent(Font) ->
+ esdl2:ttf_font_ascent(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_descent(font()) -> neg_integer().
+get_descent(Font) ->
+ esdl2:ttf_font_descent(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_family_name(font()) -> binary().
+get_family_name(Font) ->
+ esdl2:ttf_font_face_family_name(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_height(font()) -> non_neg_integer().
+get_height(Font) ->
+ esdl2:ttf_font_height(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_hinting(font()) -> hinting().
+get_hinting(Font) ->
+ esdl2:ttf_get_font_hinting(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_line_skip(font()) -> non_neg_integer().
+get_line_skip(Font) ->
+ esdl2:ttf_font_line_skip(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_num_faces(font()) -> non_neg_integer().
+get_num_faces(Font) ->
+ esdl2:ttf_font_faces(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_outline(font()) -> non_neg_integer().
+get_outline(Font) ->
+ esdl2:ttf_get_font_outline(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_style(font()) -> style().
+get_style(Font) ->
+ esdl2:ttf_get_font_style(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec get_style_name(font()) -> binary().
+get_style_name(Font) ->
+ esdl2:ttf_font_face_style_name(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec is_fixed_width(font()) -> boolean().
+is_fixed_width(Font) ->
+ esdl2:ttf_font_face_is_fixed_width(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec is_kerning_enabled(font()) -> boolean().
+is_kerning_enabled(Font) ->
+ esdl2:ttf_get_font_kerning(Font),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
-spec is_started() -> boolean().
is_started() ->
esdl2:ttf_was_init(),
@@ -33,12 +129,53 @@ open_font(Filename, PointSize) ->
esdl2:ttf_open_font(Filename, PointSize),
receive {'_nif_thread_ret_', Ret} -> Ret end.
+-spec open_font(binary(), pos_integer(), non_neg_integer()) -> {ok, font()} | sdl:error().
+open_font(Filename, PointSize, Index) ->
+ esdl2:ttf_open_font_index(Filename, PointSize, Index),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec render_blended(font(), binary(), sdl_pixels:color())
+ -> {ok, sdl_surface:surface()} | sdl:error().
+render_blended(Font, Text, Fg) ->
+ esdl2:ttf_render_utf8_blended(Font, Text, Fg),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec render_blended(font(), binary(), sdl_pixels:color(), non_neg_integer())
+ -> {ok, sdl_surface:surface()} | sdl:error().
+render_blended(Font, Text, Fg, WrapLen) ->
+ esdl2:ttf_render_utf8_blended_wrapped(Font, Text, Fg, WrapLen),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec render_shaded(font(), binary(), sdl_pixels:color(), sdl_pixels:color())
+ -> {ok, sdl_surface:surface()} | sdl:error().
+render_shaded(Font, Text, Fg, Bg) ->
+ esdl2:ttf_render_utf8_shaded(Font, Text, Fg, Bg),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
-spec render_solid(font(), binary(), sdl_pixels:color())
-> {ok, sdl_surface:surface()} | sdl:error().
-render_solid(Font, Text, Color) ->
- esdl2:ttf_render_utf8_solid(Font, Text, Color),
+render_solid(Font, Text, Fg) ->
+ esdl2:ttf_render_utf8_solid(Font, Text, Fg),
receive {'_nif_thread_ret_', Ret} -> Ret end.
+-spec render_size(font(), binary())
+ -> {ok, non_neg_integer(), non_neg_integer()} | sdl:error().
+render_size(Font, Text) ->
+ esdl2:ttf_size_utf8(Font, Text),
+ receive {'_nif_thread_ret_', Ret} -> Ret end.
+
+-spec set_hinting(font(), hinting()) -> ok.
+set_hinting(Font, Hinting) ->
+ esdl2:ttf_set_font_hinting(Font, Hinting).
+
+-spec set_outline(font(), non_neg_integer()) -> ok.
+set_outline(Font, Outline) ->
+ esdl2:ttf_set_font_outline(Font, Outline).
+
+-spec set_style(font(), style()) -> ok.
+set_style(Font, Style) ->
+ esdl2:ttf_set_font_style(Font, Style).
+
-spec start() -> ok | sdl:error().
start() ->
esdl2:ttf_init(),