defmodule Scenic.Driver.Renderling.Window.Nif do @moduledoc """ Provides the NIF interface to the `scenic_window` crate. """ use Rustler, otp_app: :scenic_driver_renderling, crate: :scenic_window alias Scenic.{Color, Driver.Renderling.Window.Config, Script, ViewPort.Input} @doc """ Initialise a new window server. The returned reference refers to the server structure in the `scenic_window` crate. If this reference is GC'd then the server will be torn down. """ @spec init(Config.t()) :: reference() def init(_config), do: :erlang.nif_error(:nif_not_loaded) @doc """ Send an update-scene event to the server. """ @spec update_scene(Script.t(), Script.id(), reference) :: :ok def update_scene(_script, _script_id, _resource), do: :erlang.nif_error(:nif_not_loaded) @doc """ Tell the server to reset the scene. """ @spec reset_scene(reference) :: :ok def reset_scene(_resource), do: :erlang.nif_error(:nif_not_loaded) @doc """ Remove the named scripts from the scene. """ @spec del_scripts([Script.id()], reference) :: :ok def del_scripts(_script_ids, _resource), do: :erlang.nif_error(:nif_not_loaded) @doc """ Changes the background color of the scene. """ @spec clear_color(Color.t(), reference) :: :ok def clear_color(_color, _resource), do: :erlang.nif_error(:nif_not_loaded) @doc """ Tell the server that it's no longer needed. """ @spec terminate(reference) :: :ok def terminate(_resource), do: :erlang.nif_error(:nif_not_loaded) @doc """ Tell the server to filter the input events to the named classes. """ @spec request_input(Input.class(), reference) :: :ok def request_input(_input_classes, _resource), do: :erlang.nif_error(:nif_not_loaded) end