diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-12-16 14:43:02 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-12-16 14:43:02 +0100 |
| commit | 958f74f77707340f34ee36d09492bdb74523aa2a (patch) | |
| tree | 4ab59a7a532c8023a5e8bb4c9a6090886cb4e538 /src/library/page.rs | |
| parent | 2a3d0f4b390457174ed09347dd29e97ff9a783e4 (diff) | |
Set Rules Episode VIII: The First Macro
Diffstat (limited to 'src/library/page.rs')
| -rw-r--r-- | src/library/page.rs | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/src/library/page.rs b/src/library/page.rs index 0b0cc2d9..3bb5cbd3 100644 --- a/src/library/page.rs +++ b/src/library/page.rs @@ -20,27 +20,26 @@ pub struct PageNode { pub styles: Styles, } -properties! { - PageNode, - +#[properties] +impl PageNode { /// The unflipped width of the page. - WIDTH: Smart<Length> = Smart::Custom(Paper::default().width()), + pub const WIDTH: Smart<Length> = Smart::Custom(Paper::default().width()); /// The unflipped height of the page. - HEIGHT: Smart<Length> = Smart::Custom(Paper::default().height()), + pub const HEIGHT: Smart<Length> = Smart::Custom(Paper::default().height()); /// The class of paper. Defines the default margins. - CLASS: PaperClass = Paper::default().class(), + pub const CLASS: PaperClass = Paper::default().class(); /// Whether the page is flipped into landscape orientation. - FLIPPED: bool = false, + pub const FLIPPED: bool = false; /// The left margin. - LEFT: Smart<Linear> = Smart::Auto, + pub const LEFT: Smart<Linear> = Smart::Auto; /// The right margin. - RIGHT: Smart<Linear> = Smart::Auto, + pub const RIGHT: Smart<Linear> = Smart::Auto; /// The top margin. - TOP: Smart<Linear> = Smart::Auto, + pub const TOP: Smart<Linear> = Smart::Auto; /// The bottom margin. - BOTTOM: Smart<Linear> = Smart::Auto, + pub const BOTTOM: Smart<Linear> = Smart::Auto; /// The page's background color. - FILL: Option<Paint> = None, + pub const FILL: Option<Paint> = None; } impl Construct for PageNode { @@ -54,29 +53,29 @@ impl Construct for PageNode { impl Set for PageNode { fn set(styles: &mut Styles, args: &mut Args) -> TypResult<()> { if let Some(paper) = args.named::<Paper>("paper")?.or_else(|| args.find()) { - styles.set(PageNode::CLASS, paper.class()); - styles.set(PageNode::WIDTH, Smart::Custom(paper.width())); - styles.set(PageNode::HEIGHT, Smart::Custom(paper.height())); + styles.set(Self::CLASS, paper.class()); + styles.set(Self::WIDTH, Smart::Custom(paper.width())); + styles.set(Self::HEIGHT, Smart::Custom(paper.height())); } if let Some(width) = args.named("width")? { - styles.set(PageNode::CLASS, PaperClass::Custom); - styles.set(PageNode::WIDTH, width); + styles.set(Self::CLASS, PaperClass::Custom); + styles.set(Self::WIDTH, width); } if let Some(height) = args.named("height")? { - styles.set(PageNode::CLASS, PaperClass::Custom); - styles.set(PageNode::HEIGHT, height); + styles.set(Self::CLASS, PaperClass::Custom); + styles.set(Self::HEIGHT, height); } let margins = args.named("margins")?; - set!(styles, PageNode::FLIPPED => args.named("flipped")?); - set!(styles, PageNode::LEFT => args.named("left")?.or(margins)); - set!(styles, PageNode::TOP => args.named("top")?.or(margins)); - set!(styles, PageNode::RIGHT => args.named("right")?.or(margins)); - set!(styles, PageNode::BOTTOM => args.named("bottom")?.or(margins)); - set!(styles, PageNode::FILL => args.named("fill")?); + set!(styles, Self::FLIPPED => args.named("flipped")?); + set!(styles, Self::LEFT => args.named("left")?.or(margins)); + set!(styles, Self::TOP => args.named("top")?.or(margins)); + set!(styles, Self::RIGHT => args.named("right")?.or(margins)); + set!(styles, Self::BOTTOM => args.named("bottom")?.or(margins)); + set!(styles, Self::FILL => args.named("fill")?); Ok(()) } |
