Skip to content

Commit

Permalink
Stylo: Make border-spacing animatable
Browse files Browse the repository at this point in the history
Two things are included in this patch:

1. Implement ComputeDistance for border-spacing, so we could get the right
distance while doing animations.

2. Implement clone function for gecko glue code of border-spacing, so we
could make animations of border-spacing work properly in stylo build.

Gecko side patch: Bug 1354437
  • Loading branch information
chenpighead committed Apr 27, 2017
1 parent 8824a68 commit 1cbe9b9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
7 changes: 7 additions & 0 deletions components/style/properties/gecko.mako.rs
Expand Up @@ -3255,6 +3255,13 @@ fn static_assert() {
self.gecko.mBorderSpacingCol = other.gecko.mBorderSpacingCol;
self.gecko.mBorderSpacingRow = other.gecko.mBorderSpacingRow;
}

pub fn clone_border_spacing(&self) -> longhands::border_spacing::computed_value::T {
longhands::border_spacing::computed_value::T {
horizontal: Au(self.gecko.mBorderSpacingCol),
vertical: Au(self.gecko.mBorderSpacingRow)
}
}
</%self:impl_trait>


Expand Down
17 changes: 15 additions & 2 deletions components/style/properties/longhand/inherited_table.mako.rs
Expand Up @@ -20,7 +20,7 @@ ${helpers.single_keyword("caption-side", "top bottom",
animation_value_type="none",
spec="https://drafts.csswg.org/css-tables/#propdef-caption-side")}

<%helpers:longhand name="border-spacing" animation_value_type="none" boxed="True"
<%helpers:longhand name="border-spacing" animation_value_type="ComputedValue" boxed="True"
spec="https://drafts.csswg.org/css-tables/#propdef-border-spacing">
use app_units::Au;
use std::fmt;
Expand All @@ -29,7 +29,7 @@ ${helpers.single_keyword("caption-side", "top bottom",

pub mod computed_value {
use app_units::Au;
use properties::animated_properties::Interpolate;
use properties::animated_properties::{ComputeDistance, Interpolate};

#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
Expand All @@ -48,6 +48,19 @@ ${helpers.single_keyword("caption-side", "top bottom",
})
}
}

impl ComputeDistance for T {
#[inline]
fn compute_distance(&self, other: &Self) -> Result<f64, ()> {
self.compute_squared_distance(other).map(|sd| sd.sqrt())
}

#[inline]
fn compute_squared_distance(&self, other: &Self) -> Result<f64, ()> {
Ok(try!(self.horizontal.compute_squared_distance(&other.horizontal)) +
try!(self.vertical.compute_squared_distance(&other.vertical)))
}
}
}

impl HasViewportPercentage for SpecifiedValue {
Expand Down

0 comments on commit 1cbe9b9

Please sign in to comment.