diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-04-08 15:01:55 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-04-08 15:01:55 +0200 |
| commit | 977ac77e6a3298be2644a8231e93acbef9f7f396 (patch) | |
| tree | 9c40765b862bc583275f692113fe36924c323ccc /src/library/mod.rs | |
| parent | e1d7edb7c1845e6df6f5e23e3baf7bc88159eade (diff) | |
Start & end alignment
Diffstat (limited to 'src/library/mod.rs')
| -rw-r--r-- | src/library/mod.rs | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/library/mod.rs b/src/library/mod.rs index 7c5a519f..358c2204 100644 --- a/src/library/mod.rs +++ b/src/library/mod.rs @@ -113,12 +113,14 @@ pub fn new() -> Scope { std.def_const("rtl", Dir::RTL); std.def_const("ttb", Dir::TTB); std.def_const("btt", Dir::BTT); - std.def_const("left", Align::Left); - std.def_const("center", Align::Center); - std.def_const("right", Align::Right); - std.def_const("top", Align::Top); - std.def_const("horizon", Align::Horizon); - std.def_const("bottom", Align::Bottom); + std.def_const("start", RawAlign::Start); + std.def_const("end", RawAlign::End); + std.def_const("left", RawAlign::Specific(Align::Left)); + std.def_const("center", RawAlign::Specific(Align::Center)); + std.def_const("right", RawAlign::Specific(Align::Right)); + std.def_const("top", RawAlign::Specific(Align::Top)); + std.def_const("horizon", RawAlign::Specific(Align::Horizon)); + std.def_const("bottom", RawAlign::Specific(Align::Bottom)); std } @@ -127,6 +129,25 @@ dynamic! { Dir: "direction", } +dynamic! { + RawAlign: "alignment", +} + +dynamic! { + Spec<RawAlign>: "2d alignment", +} + +castable! { + Spec<Option<RawAlign>>, + Expected: "1d or 2d alignment", + @align: RawAlign => { + let mut aligns = Spec::default(); + aligns.set(align.axis(), Some(*align)); + aligns + }, + @aligns: Spec<RawAlign> => aligns.map(Some), +} + castable! { usize, Expected: "non-negative integer", |
