# `tek_layout` this crate exposes several layout operators which work entirely in unsigned coordinates and are generic over `tek_engine::Engine` and `tek_engine::Content`. chiefly, they are not dependent on rendering framework. |operator|description| |-|-| |**`When(x, a)`**|render `a` only when `x == true`| |**`Either(x, a, b)`**|render `a` when `x == true`, otherwise render `b`| |**`Map(get_iterator, callback)`**|transform items in uniform way| |**`Bsp`**|concatenative layout| |...|...| |**`Align`**|pin content along axis| |...|...| |**`Fill`**|**make content's dimension equal to container's:**| |`Fill::x(a)`|use container's width for content| |`Fill::y(a)`|use container's height for content| |`Fill::xy(a)`|use container's width and height for content| |**`Fixed`**|**assign fixed dimension to content:**| |`Fixed::x(w, a)`|use width `w` for content| |`Fixed::y(w, a)`|use height `w` for content| |`Fixed::xy(w, h, a)`|use width `w` and height `h` for content| |**`Expand`/`Shrink`**|**change dimension of content:**| |`Expand::x(n, a)`/`Shrink::x(n, a)`|increment/decrement width of content area by `n`| |`Expand::y(n, a)`/`Shrink::y(n, a)`|increment/decrement height of content area by `m`| |`Expand::xy(n, m, a)`/`Shrink::xy(n, m, a)`|increment/decrement width of content area by `n`, height by `m`| |**`Min`/`Max`**|**constrain dimension of content:**| |`Min::x(w, a)`/`Max::x(w, a)`|enforce minimum/maximum width `w` for content| |`Min::y(h, a)`/`Max::y(h, a)`|enforce minimum/maximum height `h` for content| |`Min::xy(w, h, a)`/`Max::xy(w, h, a)`|enforce minimum/maximum width `w` and height `h` for content| |**`Push`/`Pull`**|**move content along axis:**| |`Push::x(n, a)`/`Pull::x(n, a)`|increment/decrement `x` of content area| |`Push::y(n, a)`/`Pull::y(n, a)`|increment/decrement `y` of content area| |`Push::xy(n, m, a)`/`Pull::xy(n, m, a)`|increment/decrement `x` and `y` of content area| **todo:** * sensible `Margin`/`Padding` * `Reduce`