lib/membrane/video_compositor/video_transformations/texture_transformations/corners_rounding.ex

defmodule Membrane.VideoCompositor.VideoTransformations.TextureTransformations.CornersRounding do
  @moduledoc """
  Describe corners rounding texture transformation parameter.
  Corner rounding transformation can be imagined as placing four circles with specified radius
  adjoining to frame borders, placed inside frame and making space between circle edge and
  nearest frame corner transparent.
  ## Values
  - border_radius: non negative integer representing radius of circle "cutting"
  frame corner part.
  ## Examples
    Example struct describing transformation which rounds corners with 100 pixel radius:

      iex> alias Membrane.VideoCompositor.VideoTransformations.TextureTransformations.CornersRounding
      Membrane.VideoCompositor.VideoTransformations.TextureTransformations.CornersRounding
      iex> %CornersRounding{ border_radius: 100 }
      %Membrane.VideoCompositor.VideoTransformations.TextureTransformations.CornersRounding{
        border_radius: 100
      }
  """

  @typedoc """
  Describe cropping texture transformation parameter.
  """
  @type t :: %__MODULE__{
          border_radius: non_neg_integer()
        }

  @enforce_keys [:border_radius]
  defstruct @enforce_keys
end