Scenic Scrollable v0.1.0 Scenic.Scrollable.Direction View Source
Utility module for limiting certain operations along a certain direction only. A value can be connected to either horizontal or vertical directions.
Link to this section Summary
Types
The directions a value can be associated with
The Direction type. A value can be either associated with the horizontal or the vertical direction, by pairing the :horizontal or :vertical atoms with the value in a tuple
Data structure representing a vector 2, in the form of an {x, y} tuple
Functions
Add two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be added. Non numeric values are ignored
Associate a value with the horizontal direction
Associate a value with the vertical direction
Divide two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be divided. Non numeric values are ignored
Convert a horizontal Scenic.Scrollable.Direction.t/0
to a vertical one, and vice versa
Apply a function to the t:Scenic.Scrollable.Direction.t
inner value.
Returns a new t:Scenic.Scrollable.Direction.t
Apply a function only if the t:Scenic.Scrollable.Direction.t
is associated with the horizontal direction.
Returns a new t:Scenic.Scrollable.Direction.t
Apply a function only if the t:Scenic.Scrollable.Direction.t
is associated with the vertical direction.
Returns a new t:Scenic.Scrollable.Direction.t
Multiply two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be multiplied. Non numeric values are ignored
Associate a value with a direction
Subtract two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be subtracted. Non numeric values are ignored
Convert a Scenic.Scrollable.Direction.t/0
to a Scenic.Math.vector_2/0
.
If the value is non numeric, the vector {0, 0} will be returned
Obtain the inner value from a Scenic.Scrollable.Direction.t/0
Link to this section Types
direction()
View Source
direction() :: :horizontal | :vertical
direction() :: :horizontal | :vertical
The directions a value can be associated with.
The Direction type. A value can be either associated with the horizontal or the vertical direction, by pairing the :horizontal or :vertical atoms with the value in a tuple.
v2()
View Source
v2() :: Scenic.Scrollable.v2()
v2() :: Scenic.Scrollable.v2()
Data structure representing a vector 2, in the form of an {x, y} tuple.
Link to this section Functions
add(arg1, arg2) View Source
Add two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be added. Non numeric values are ignored.
Examples
iex> five = Scenic.Scrollable.Direction.as_horizontal(5)
...> six = Scenic.Scrollable.Direction.as_horizontal(6)
...> Scenic.Scrollable.Direction.add(five, six)
{:horizontal, 11}
iex> three = Scenic.Scrollable.Direction.as_vertical(3)
...> seven = Scenic.Scrollable.Direction.as_vertical(7)
...> Scenic.Scrollable.Direction.add(three, seven)
{:vertical, 10}
iex> five = Scenic.Scrollable.Direction.as_horizontal(5)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.add(five, six)
{:horizontal, 5}
iex> non_numeric_value = Scenic.Scrollable.Direction.as_horizontal(:non_numeric_value)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.add(non_numeric_value, six)
{:horizontal, :non_numeric_value}
as_horizontal(x) View Source
Associate a value with the horizontal direction.
Examples
iex> Scenic.Scrollable.Direction.as_horizontal(5)
{:horizontal, 5}
as_vertical(x) View Source
Associate a value with the vertical direction.
Examples
iex> Scenic.Scrollable.Direction.as_vertical(6)
{:vertical, 6}
divide(arg1, arg2) View Source
Divide two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be divided. Non numeric values are ignored.
Examples
iex> fifty = Scenic.Scrollable.Direction.as_horizontal(50)
...> ten = Scenic.Scrollable.Direction.as_horizontal(10)
...> Scenic.Scrollable.Direction.divide(fifty, ten)
{:horizontal, 5.0}
iex> nine = Scenic.Scrollable.Direction.as_vertical(9)
...> three = Scenic.Scrollable.Direction.as_vertical(3)
...> Scenic.Scrollable.Direction.divide(nine, three)
{:vertical, 3.0}
iex> six = Scenic.Scrollable.Direction.as_horizontal(6)
...> two = Scenic.Scrollable.Direction.as_vertical(2)
...> Scenic.Scrollable.Direction.divide(six, two)
{:horizontal, 6}
iex> non_numeric_value = Scenic.Scrollable.Direction.as_horizontal(:non_numeric_value)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.divide(non_numeric_value, six)
{:horizontal, :non_numeric_value}
from_vector_2(arg, atom) View Source
Create a Scenic.Scrollable.Direction.t/0
from a Scenic.Math.vector_2/0
.
Examples
iex> Scenic.Scrollable.Direction.from_vector_2({3, 5}, :horizontal)
{:horizontal, 3}
iex> Scenic.Scrollable.Direction.from_vector_2({3, 5}, :vertical)
{:vertical, 5}
invert(arg) View Source
Convert a horizontal Scenic.Scrollable.Direction.t/0
to a vertical one, and vice versa.
Examples
iex> Scenic.Scrollable.Direction.as_horizontal(5)
...> |> Scenic.Scrollable.Direction.invert
{:vertical, 5}
map(arg, fun) View Source
Apply a function to the t:Scenic.Scrollable.Direction.t
inner value.
Returns a new t:Scenic.Scrollable.Direction.t
.
Examples
iex> Scenic.Scrollable.Direction.map({:horizontal, 5}, & &1 * 2)
{:horizontal, 10}
iex> Scenic.Scrollable.Direction.map({:vertical, 5}, & &1 * 2)
{:vertical, 10}
map_horizontal(x, fun) View Source
Apply a function only if the t:Scenic.Scrollable.Direction.t
is associated with the horizontal direction.
Returns a new t:Scenic.Scrollable.Direction.t
.
Examples
iex> Scenic.Scrollable.Direction.map_horizontal({:horizontal, 5}, & &1 * 2)
{:horizontal, 10}
iex> Scenic.Scrollable.Direction.map_horizontal({:vertical, 5}, & &1 * 2)
{:vertical, 5}
map_vertical(x, fun) View Source
Apply a function only if the t:Scenic.Scrollable.Direction.t
is associated with the vertical direction.
Returns a new t:Scenic.Scrollable.Direction.t
.
Examples
iex> Scenic.Scrollable.Direction.map_vertical({:vertical, 5}, & &1 * 2)
{:vertical, 10}
iex> Scenic.Scrollable.Direction.map_vertical({:horizontal, 5}, & &1 * 2)
{:horizontal, 5}
multiply(arg1, arg2) View Source
Multiply two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be multiplied. Non numeric values are ignored.
Examples
iex> five = Scenic.Scrollable.Direction.as_horizontal(5)
...> six = Scenic.Scrollable.Direction.as_horizontal(6)
...> Scenic.Scrollable.Direction.multiply(five, six)
{:horizontal, 30}
iex> three = Scenic.Scrollable.Direction.as_vertical(3)
...> seven = Scenic.Scrollable.Direction.as_vertical(7)
...> Scenic.Scrollable.Direction.multiply(three, seven)
{:vertical, 21}
iex> five = Scenic.Scrollable.Direction.as_horizontal(5)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.multiply(five, six)
{:horizontal, 5}
iex> non_numeric_value = Scenic.Scrollable.Direction.as_horizontal(:non_numeric_value)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.multiply(non_numeric_value, six)
{:horizontal, :non_numeric_value}
multiply(x, y, z) View Source
return(x, atom) View Source
Associate a value with a direction.
Examples
iex> Scenic.Scrollable.Direction.return(5, :horizontal)
{:horizontal, 5}
iex> Scenic.Scrollable.Direction.return(6, :vertical)
{:vertical, 6}
subtract(arg1, arg2) View Source
Subtract two Scenic.Scrollable.Direction.t/0
values. Only values associated with the same direction will be subtracted. Non numeric values are ignored.
Examples
iex> five = Scenic.Scrollable.Direction.as_horizontal(5)
...> six = Scenic.Scrollable.Direction.as_horizontal(6)
...> Scenic.Scrollable.Direction.subtract(five, six)
{:horizontal, -1}
iex> three = Scenic.Scrollable.Direction.as_vertical(3)
...> seven = Scenic.Scrollable.Direction.as_vertical(7)
...> Scenic.Scrollable.Direction.subtract(three, seven)
{:vertical, -4}
iex> five = Scenic.Scrollable.Direction.as_horizontal(5)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.subtract(five, six)
{:horizontal, 5}
iex> non_numeric_value = Scenic.Scrollable.Direction.as_horizontal(:non_numeric_value)
...> six = Scenic.Scrollable.Direction.as_vertical(6)
...> Scenic.Scrollable.Direction.subtract(non_numeric_value, six)
{:horizontal, :non_numeric_value}
to_vector_2(arg1) View Source
Convert a Scenic.Scrollable.Direction.t/0
to a Scenic.Math.vector_2/0
.
If the value is non numeric, the vector {0, 0} will be returned.
Examples
iex> Scenic.Scrollable.Direction.as_horizontal(5)
...> |> Scenic.Scrollable.Direction.to_vector_2
{5, 0}
iex> Scenic.Scrollable.Direction.as_vertical(5)
...> |> Scenic.Scrollable.Direction.to_vector_2
{0, 5}
iex> Scenic.Scrollable.Direction.as_horizontal(:non_numeric_value)
...> |> Scenic.Scrollable.Direction.to_vector_2
{0, 0}
unwrap(arg) View Source
Obtain the inner value from a Scenic.Scrollable.Direction.t/0
.
Examples
iex> Scenic.Scrollable.Direction.as_horizontal(5)
...> |> Scenic.Scrollable.Direction.unwrap
5