mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Animate basic shapes
This commit is contained in:
parent
56f5fc41fa
commit
c4e33d9dca
8 changed files with 456 additions and 48 deletions
|
@ -50,7 +50,6 @@ use values::computed::{NonNegativeAu, NonNegativeNumber, PositiveIntegerOrAuto};
|
|||
use values::computed::length::{NonNegativeLengthOrAuto, NonNegativeLengthOrNormal};
|
||||
use values::computed::length::NonNegativeLengthOrPercentage;
|
||||
use values::generics::{GreaterThanOrEqualToOne, NonNegative};
|
||||
use values::generics::border::BorderCornerRadius as GenericBorderCornerRadius;
|
||||
use values::generics::effects::Filter;
|
||||
use values::generics::position as generic_position;
|
||||
use values::generics::svg::{SVGLength, SVGOpacity, SVGPaint, SVGPaintKind, SVGStrokeDashArray};
|
||||
|
@ -1004,6 +1003,16 @@ impl<T: Animatable + Copy> Animatable for Size2D<T> {
|
|||
|
||||
Ok(Size2D::new(width, height))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn compute_distance(&self, other: &Self) -> Result<f64, ()> {
|
||||
Ok(self.compute_squared_distance(other)?.sqrt())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn compute_squared_distance(&self, other: &Self) -> Result<f64, ()> {
|
||||
Ok(self.width.compute_squared_distance(&other.width)? + self.height.compute_squared_distance(&other.height)?)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Animatable + Copy> Animatable for Point2D<T> {
|
||||
|
@ -1016,24 +1025,6 @@ impl<T: Animatable + Copy> Animatable for Point2D<T> {
|
|||
}
|
||||
}
|
||||
|
||||
impl Animatable for BorderCornerRadius {
|
||||
#[inline]
|
||||
fn add_weighted(&self, other: &Self, self_portion: f64, other_portion: f64) -> Result<Self, ()> {
|
||||
self.0.add_weighted(&other.0, self_portion, other_portion).map(GenericBorderCornerRadius)
|
||||
}
|
||||
|
||||
#[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(self.0.width.compute_squared_distance(&other.0.width)? +
|
||||
self.0.height.compute_squared_distance(&other.0.height)?)
|
||||
}
|
||||
}
|
||||
|
||||
impl ToAnimatedZero for BorderCornerRadius {
|
||||
#[inline]
|
||||
fn to_animated_zero(&self) -> Result<Self, ()> { Err(()) }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue