From 2ce03d4796ad54f332c70ff88f0a9f3a164bbc4a Mon Sep 17 00:00:00 2001 From: Simponic Date: Wed, 11 Jan 2023 09:54:05 -0700 Subject: Checkpoint\? --- lib/chessh/ssh/client/screen.ex | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/chessh/ssh/client/screen.ex (limited to 'lib/chessh/ssh/client/screen.ex') diff --git a/lib/chessh/ssh/client/screen.ex b/lib/chessh/ssh/client/screen.ex new file mode 100644 index 0000000..2dd9f9c --- /dev/null +++ b/lib/chessh/ssh/client/screen.ex @@ -0,0 +1,31 @@ +defmodule Chessh.SSH.Client.Screen do + @callback handle_info( + {:render, width :: integer(), height :: integer()}, + state :: any() + ) :: + {:noreply, any()} + @callback handle_info({:input, width :: integer(), height :: integer(), action :: any()}) :: + {:noreply, any()} + + # @callback render(state :: Chessh.SSH.Client.State.t() | any()) :: any() + # @callback handle_input(action :: any(), state :: Chessh.SSH.Client.State.t()) :: + # Chessh.SSH.Client.State.t() + + defmacro __using__(_) do + quote do + @behaviour Chessh.SSH.Client.Screen + use GenServer + + @ascii_chars Application.compile_env!(:chessh, :ascii_chars_json_file) + |> File.read!() + |> Jason.decode!() + + def center_rect({rect_width, rect_height}, {parent_width, parent_height}) do + { + div(parent_height - rect_height, 2), + div(parent_width - rect_width, 2) + } + end + end + end +end -- cgit v1.3