mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Stylo: Make border-spacing animatable
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
This commit is contained in:
parent
8824a68063
commit
1cbe9b9a1a
2 changed files with 22 additions and 2 deletions
|
@ -3255,6 +3255,13 @@ fn static_assert() {
|
||||||
self.gecko.mBorderSpacingCol = other.gecko.mBorderSpacingCol;
|
self.gecko.mBorderSpacingCol = other.gecko.mBorderSpacingCol;
|
||||||
self.gecko.mBorderSpacingRow = other.gecko.mBorderSpacingRow;
|
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>
|
</%self:impl_trait>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ ${helpers.single_keyword("caption-side", "top bottom",
|
||||||
animation_value_type="none",
|
animation_value_type="none",
|
||||||
spec="https://drafts.csswg.org/css-tables/#propdef-caption-side")}
|
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">
|
spec="https://drafts.csswg.org/css-tables/#propdef-border-spacing">
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
@ -29,7 +29,7 @@ ${helpers.single_keyword("caption-side", "top bottom",
|
||||||
|
|
||||||
pub mod computed_value {
|
pub mod computed_value {
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
use properties::animated_properties::Interpolate;
|
use properties::animated_properties::{ComputeDistance, Interpolate};
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||||
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
|
#[cfg_attr(feature = "servo", derive(HeapSizeOf))]
|
||||||
|
@ -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 {
|
impl HasViewportPercentage for SpecifiedValue {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue