2024-05-15 10:16:58 +12:00
|
|
|
defmodule Scenic.Driver.Renderling.Window.Nif do
|
2024-05-17 13:07:05 +12:00
|
|
|
@moduledoc """
|
|
|
|
Provides the NIF interface to the `scenic_window` crate.
|
|
|
|
"""
|
|
|
|
|
2024-05-17 12:26:03 +12:00
|
|
|
use Rustler, otp_app: :scenic_driver_renderling, crate: :scenic_window
|
2024-05-15 10:16:58 +12:00
|
|
|
|
2024-05-17 13:07:05 +12:00
|
|
|
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()
|
2024-05-15 19:33:59 +12:00
|
|
|
def init(_config), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-17 13:07:05 +12:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Send an update-scene event to the server.
|
|
|
|
"""
|
|
|
|
@spec update_scene(Script.t(), Script.id(), reference) :: :ok
|
2024-05-15 19:33:59 +12:00
|
|
|
def update_scene(_script, _script_id, _resource), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-17 13:07:05 +12:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Tell the server to reset the scene.
|
|
|
|
"""
|
|
|
|
@spec reset_scene(reference) :: :ok
|
2024-05-15 19:33:59 +12:00
|
|
|
def reset_scene(_resource), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-17 13:07:05 +12:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Remove the named scripts from the scene.
|
|
|
|
"""
|
|
|
|
@spec del_scripts([Script.id()], reference) :: :ok
|
2024-05-15 19:33:59 +12:00
|
|
|
def del_scripts(_script_ids, _resource), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-17 13:07:05 +12:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Changes the background color of the scene.
|
|
|
|
"""
|
|
|
|
@spec clear_color(Color.t(), reference) :: :ok
|
2024-05-15 19:33:59 +12:00
|
|
|
def clear_color(_color, _resource), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-17 13:07:05 +12:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Tell the server that it's no longer needed.
|
|
|
|
"""
|
|
|
|
@spec terminate(reference) :: :ok
|
2024-05-15 19:33:59 +12:00
|
|
|
def terminate(_resource), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-17 13:07:05 +12:00
|
|
|
|
|
|
|
@doc """
|
|
|
|
Tell the server to filter the input events to the named classes.
|
|
|
|
"""
|
|
|
|
@spec request_input(Input.class(), reference) :: :ok
|
2024-05-15 19:33:59 +12:00
|
|
|
def request_input(_input_classes, _resource), do: :erlang.nif_error(:nif_not_loaded)
|
2024-05-15 10:16:58 +12:00
|
|
|
end
|