Packages
image
0.25.0
0.72.0
0.71.0
0.70.0
0.69.0
0.68.0
0.67.0
0.67.0-dev
retired
0.66.0
0.65.0
0.64.0
0.63.0
0.62.1
0.62.0
0.61.1
0.61.0
0.60.0
0.59.3
0.59.2
0.59.1
0.59.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.2
0.55.1
retired
0.55.0
0.54.4
0.54.3
0.54.2
0.54.1
0.54.0
0.53.0
0.52.3
0.52.2
0.52.1
0.52.0
retired
0.51.0
0.50.0
0.49.0
0.48.1
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.2
0.43.1
0.43.0
0.42.0
0.41.0
0.40.0
0.39.3
0.39.2
0.39.1
0.39.0
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.0
0.36.2
0.36.1
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.31.0
0.30.0
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.0
0.20.0
retired
0.19.0
0.18.1
0.18.0
0.17.0
0.16.0
0.15.0
0.14.4
0.14.2
0.14.1
0.14.0
retired
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.10.0-rc.0
retired
0.9.0
retired
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
An approachable image processing library primarily based upon Vix and libvips that is NIF-based, fast, multi-threaded, pipelined and has a low memory footprint.
Current section
Files
Jump to
Current section
Files
lib/image/options/shape.ex
defmodule Image.Options.Shape do
@moduledoc false
import Image.Options.Text
def default_polygon_options do
[
opacity: 0.7,
fill_color: "none",
stroke_color: "white",
stroke_width: 1
]
end
def validate_polygon_options(options) do
validate_options(options, default_polygon_options())
end
@doc """
Validate the options for `Image.Shape functions`.
"""
def validate_options(options, default_options) do
options = Keyword.merge(default_options, options)
options =
case Enum.reduce_while(options, options, &validate_option(&1, &2)) do
{:error, value} ->
{:error, value}
options ->
{:ok, options}
end
case options do
{:ok, options} ->
options
|> Map.new()
|> wrap(:ok)
other ->
other
end
end
defp validate_option({:height, height}, options) when is_integer(height) and height > 0 do
{:cont, options}
end
defp validate_option({:width, width}, options) when is_integer(width) and width > 0 do
{:cont, options}
end
defp validate_option({:fill_color = option, color}, options) do
validate_color(option, color, options)
end
defp validate_option({:stroke_color = option, color}, options) do
validate_color(option, color, options)
end
defp validate_option({:stroke_width = option, width}, options) do
validate_stroke_width(option, width, options)
end
defp validate_option({:opacity = option, opacity}, options) do
validate_opacity(option, opacity, options)
end
defp validate_option(option, _options) do
{:halt, {:error, invalid_option(option)}}
end
end