aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-11-10 11:53:05 -0600
committerGitHub <noreply@github.com>2016-11-10 11:53:05 -0600
commitd16f3124640be647b4ed67cc4a68cebd55cdb7cc (patch)
tree1d7a7ba1c16c1af5531242f0789d55980174d7db
parentd8a0a0003252391d6130cca5f64b9738255e224a (diff)
parenteb22d33d4e8370d4393b8bebd633eb4687a7e3f9 (diff)
downloadservo-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 -->
-rw-r--r--components/layout/construct.rs2
-rw-r--r--components/layout/flex.rs4
-rw-r--r--components/layout/fragment.rs4
-rw-r--r--components/layout/model.rs7
-rw-r--r--components/style/logical_geometry.rs17
5 files changed, 22 insertions, 12 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs
index 8841b1ab3e9..d9fa67cd756 100644
--- a/components/layout/construct.rs
+++ b/components/layout/construct.rs
@@ -34,7 +34,6 @@ use inline::{FIRST_FRAGMENT_OF_ELEMENT, InlineFlow};
use inline::{InlineFragmentNodeInfo, LAST_FRAGMENT_OF_ELEMENT};
use linked_list::prepend_from;
use list_item::{ListItemFlow, ListStyleTypeContent};
-use model::Direction;
use multicol::{MulticolColumnFlow, MulticolFlow};
use parallel;
use script_layout_interface::{LayoutElementType, LayoutNodeType, is_image_data};
@@ -49,6 +48,7 @@ use style::computed_values::{caption_side, display, empty_cells, float, list_sty
use style::computed_values::content::ContentItem;
use style::computed_values::position;
use style::context::SharedStyleContext;
+use style::logical_geometry::Direction;
use style::properties::{self, ServoComputedValues};
use style::selector_impl::{PseudoElement, RestyleDamage};
use style::selector_matching::Stylist;
diff --git a/components/layout/flex.rs b/components/layout/flex.rs
index b2ee3555857..d84373a7c21 100644
--- a/components/layout/flex.rs
+++ b/components/layout/flex.rs
@@ -19,7 +19,7 @@ use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use gfx::display_list::StackingContext;
use gfx_traits::ScrollRootId;
use layout_debug;
-use model::{Direction, IntrinsicISizes, MaybeAuto, MinMaxConstraint};
+use model::{IntrinsicISizes, MaybeAuto, MinMaxConstraint};
use model::{specified, specified_or_none};
use std::cmp::{max, min};
use std::ops::Range;
@@ -27,7 +27,7 @@ use std::sync::Arc;
use style::computed_values::{align_content, align_self, flex_direction, flex_wrap, justify_content};
use style::computed_values::border_collapse;
use style::context::{SharedStyleContext, StyleContext};
-use style::logical_geometry::LogicalSize;
+use style::logical_geometry::{Direction, LogicalSize};
use style::properties::ServoComputedValues;
use style::servo::restyle_damage::{REFLOW, REFLOW_OUT_OF_FLOW};
use style::values::computed::{LengthOrPercentage, LengthOrPercentageOrAuto};
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs
index 2c193d09e41..a0f09dd5dd1 100644
--- a/components/layout/fragment.rs
+++ b/components/layout/fragment.rs
@@ -23,7 +23,7 @@ use inline::{InlineMetrics, LAST_FRAGMENT_OF_ELEMENT, LineMetrics};
use ipc_channel::ipc::IpcSender;
#[cfg(debug_assertions)]
use layout_debug;
-use model::{self, Direction, IntrinsicISizes, IntrinsicISizesContribution, MaybeAuto};
+use model::{self, IntrinsicISizes, IntrinsicISizesContribution, MaybeAuto};
use msg::constellation_msg::PipelineId;
use net_traits::image::base::{Image, ImageMetadata};
use net_traits::image_cache_thread::{ImageOrMetadataAvailable, UsePlaceholder};
@@ -44,7 +44,7 @@ use style::computed_values::{transform_style, vertical_align, white_space, word_
use style::computed_values::content::ContentItem;
use style::context::SharedStyleContext;
use style::dom::TRestyleDamage;
-use style::logical_geometry::{LogicalMargin, LogicalRect, LogicalSize, WritingMode};
+use style::logical_geometry::{Direction, LogicalMargin, LogicalRect, LogicalSize, WritingMode};
use style::properties::ServoComputedValues;
use style::selector_impl::RestyleDamage;
use style::servo::restyle_damage::RECONSTRUCT_FLOW;
diff --git a/components/layout/model.rs b/components/layout/model.rs
index d57bb2628fa..a0693e0d8f8 100644
--- a/components/layout/model.rs
+++ b/components/layout/model.rs
@@ -504,13 +504,6 @@ impl ToGfxMatrix for ComputedMatrix {
}
}
-// Used to specify the logical direction.
-#[derive(Debug, Clone, Copy, PartialEq)]
-pub enum Direction {
- Inline,
- Block
-}
-
// https://drafts.csswg.org/css2/visudet.html#min-max-widths
// https://drafts.csswg.org/css2/visudet.html#min-max-heights
/// A min or max constraint
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() {