style: Add a "start_end()" method to LogicalMargin

Add a `LogicalMargin::start_end()` method that receives a `Direction'
parameter. This is useful for some layout that is symmetric in inline
and block directions, like flexbox.
This commit is contained in:
Pu Xingyu 2016-11-08 23:33:56 +08:00
parent 29a55e5cbd
commit eb22d33d4e
5 changed files with 22 additions and 12 deletions

View file

@ -213,6 +213,13 @@ impl Debug for DebugWritingMode {
}
// Used to specify the logical direction.
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Direction {
Inline,
Block
}
/// A 2D size in flow-relative dimensions
#[derive(PartialEq, Eq, Clone, Copy)]
#[cfg_attr(feature = "servo", derive(Serialize))]
@ -763,6 +770,16 @@ impl<T: Copy + Add<T, Output=T>> LogicalMargin<T> {
self.block_start + self.block_end
}
#[inline]
pub fn start_end(&self, direction: Direction) -> T {
match direction {
Direction::Inline =>
self.inline_start + self.inline_end,
Direction::Block =>
self.block_start + self.block_end
}
}
#[inline]
pub fn top_bottom(&self, mode: WritingMode) -> T {
self.debug_writing_mode.check(mode);