diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-11-10 11:53:05 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-10 11:53:05 -0600 |
commit | d16f3124640be647b4ed67cc4a68cebd55cdb7cc (patch) | |
tree | 1d7a7ba1c16c1af5531242f0789d55980174d7db /components/style/logical_geometry.rs | |
parent | d8a0a0003252391d6130cca5f64b9738255e224a (diff) | |
parent | eb22d33d4e8370d4393b8bebd633eb4687a7e3f9 (diff) | |
download | servo-d16f3124640be647b4ed67cc4a68cebd55cdb7cc.tar.gz servo-d16f3124640be647b4ed67cc4a68cebd55cdb7cc.zip |
Auto merge of #14136 - stshine:orthogonal-symmetry, r=SimonSapin
style: Add a "start_end()" method to LogicalMargin
<!-- Please describe your changes on the following line: -->
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.
Part of #14123.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #__ (github issue number if applicable).
<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because refactoring
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
r? @SimonSapin
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14136)
<!-- Reviewable:end -->
Diffstat (limited to 'components/style/logical_geometry.rs')
-rw-r--r-- | components/style/logical_geometry.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/components/style/logical_geometry.rs b/components/style/logical_geometry.rs index 94dcd3881db..242a061b0da 100644 --- a/components/style/logical_geometry.rs +++ b/components/style/logical_geometry.rs @@ -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))] @@ -764,6 +771,16 @@ impl<T: Copy + Add<T, Output=T>> LogicalMargin<T> { } #[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); if mode.is_vertical() { |