diff --git a/src/components/main/layout/box.rs b/src/components/main/layout/box.rs index 30f3b452e02..79293d85730 100644 --- a/src/components/main/layout/box.rs +++ b/src/components/main/layout/box.rs @@ -85,6 +85,9 @@ pub struct Box { /// Info specific to the kind of box. Keep this enum small. specific: SpecificBoxInfo, + + /// positioned box offsets + position_offsets: Slot>, } /// Info specific to the kind of box. Keep this enum small. @@ -254,6 +257,7 @@ impl Box { padding: Slot::init(Zero::zero()), margin: Slot::init(Zero::zero()), specific: specific, + position_offsets: Slot::init(Zero::zero()), } } @@ -276,6 +280,7 @@ impl Box { padding: Slot::init(self.padding.get()), margin: Slot::init(self.margin.get()), specific: specific, + position_offsets: Slot::init(Zero::zero()) } } @@ -334,6 +339,14 @@ impl Box { style.Border.border_left_style))) } + pub fn compute_positioned_offset(&self, style: &ComputedValues) { + self.position_offsets.set(SideOffsets2D::new( + MaybeAuto::from_style(style.PositionOffsets.top, Au::new(0)).specified_or_zero(), + MaybeAuto::from_style(style.PositionOffsets.right, Au::new(0)).specified_or_zero(), + MaybeAuto::from_style(style.PositionOffsets.bottom, Au::new(0)).specified_or_zero(), + MaybeAuto::from_style(style.PositionOffsets.left, Au::new(0)).specified_or_zero())); + } + /// Populates the box model padding parameters from the given computed style. pub fn compute_padding(&self, style: &ComputedValues, containing_block_width: Au) { let padding = SideOffsets2D::new(self.compute_padding_length(style.Padding.padding_top, diff --git a/src/components/style/properties.rs.mako b/src/components/style/properties.rs.mako index 5fefde01f4b..ca0bcac6b0c 100644 --- a/src/components/style/properties.rs.mako +++ b/src/components/style/properties.rs.mako @@ -223,6 +223,13 @@ pub mod longhands { % endfor + ${new_style_struct("PositionOffsets")} + + % for side in ["top", "right", "bottom", "left"]: + ${predefined_type(side, "LengthOrPercentageOrAuto", + "computed::LPA_Auto")} + % endfor + // CSS 2.1, Section 9 - Visual formatting model ${new_style_struct("Box")} @@ -279,6 +286,7 @@ pub mod longhands { "computed::LPN_None", "parse_non_negative")} + <%self:single_component_value name="line-height"> #[deriving(Clone)] pub enum SpecifiedValue {