defmodule CImgDisplay do
@moduledoc """
Display the CImg objects on PC screen. This module also provides the functionality
to handle mouse-event, key-board-event, window-close-event, timer-event etc.
Note: You can only use these features in :dev or :test mode.
"""
alias __MODULE__
alias CImg.NIF
# display object
# :handle - Erlang resource object pointing to the CImgDisplay object.
defstruct handle: nil
@doc """
Create display object.
## Parameters
## Examples
```Elixir
iex> img = CImg.load("sample.jpg")
iex> display = CImgDisplay(img, "Sample image")
iex>
```
"""
def create(cimg, title \\ "", normalization \\ 3, is_fullscreen \\ false, is_closed \\ false) do
with {:ok, h} <- CImg.NIF.cimgdisplay_create(cimg, title, normalization, is_fullscreen, is_closed),
do: %CImgDisplay{handle: h}
end
defdelegate wait(cimgdisplay),
to: NIF, as: :cimgdisplay_wait
defdelegate wait(cimgdisplay, milliseconds),
to: NIF, as: :cimgdisplay_wait_time
defdelegate is_closed(cimgdisplay),
to: NIF, as: :cimgdisplay_is_closed
defdelegate button(cimgdisplay),
to: NIF, as: :cimgdisplay_button
defdelegate mouse_y(cimgdisplay),
to: NIF, as: :cimgdisplay_mouse_y
end