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.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>
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
@ -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))]
|
||||
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue