mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
style: Fix clamping on animations for fort-style.
Bug: 1455358 Reviewed-by: xidorn MozReview-Commit-ID: Awyub0dMOmq
This commit is contained in:
parent
737501153b
commit
0a8518b452
5 changed files with 37 additions and 10 deletions
|
@ -64,6 +64,12 @@ impl Angle {
|
|||
radians.min(f64::MAX).max(f64::MIN)
|
||||
}
|
||||
|
||||
/// Return the value in degrees.
|
||||
pub fn degrees(&self) -> f32 {
|
||||
use std::f32::consts::PI;
|
||||
self.radians() * 360. / (2. * PI)
|
||||
}
|
||||
|
||||
/// <https://drafts.csswg.org/css-transitions/#animtype-number>
|
||||
#[inline]
|
||||
fn animate_fallback(&self, other: &Self, procedure: Procedure) -> Result<Self, ()> {
|
||||
|
|
|
@ -838,11 +838,34 @@ impl ToComputedValue for specified::MozScriptLevel {
|
|||
}
|
||||
}
|
||||
|
||||
/// A wrapper over an `Angle`, that handles clamping to the appropriate range
|
||||
/// for `font-style` animation.
|
||||
#[derive(Clone, Copy, Debug, MallocSizeOf, PartialEq, ToCss)]
|
||||
pub struct FontStyleAngle(pub Angle);
|
||||
|
||||
impl ToAnimatedValue for FontStyleAngle {
|
||||
type AnimatedValue = Angle;
|
||||
|
||||
#[inline]
|
||||
fn to_animated_value(self) -> Self::AnimatedValue {
|
||||
self.0
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn from_animated_value(animated: Self::AnimatedValue) -> Self {
|
||||
FontStyleAngle(Angle::Deg(
|
||||
animated.degrees()
|
||||
.min(specified::FONT_STYLE_OBLIQUE_MAX_ANGLE_DEGREES)
|
||||
.max(specified::FONT_STYLE_OBLIQUE_MIN_ANGLE_DEGREES)
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
/// The computed value of `font-style`.
|
||||
///
|
||||
/// FIXME(emilio): Angle should be a custom type to handle clamping during
|
||||
/// animation.
|
||||
pub type FontStyle = generics::FontStyle<Angle>;
|
||||
pub type FontStyle = generics::FontStyle<FontStyleAngle>;
|
||||
|
||||
impl FontStyle {
|
||||
/// The `normal` value.
|
||||
|
@ -855,8 +878,8 @@ impl FontStyle {
|
|||
///
|
||||
/// https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle
|
||||
#[inline]
|
||||
pub fn default_angle() -> Angle {
|
||||
Angle::Deg(specified::DEFAULT_FONT_STYLE_OBLIQUE_ANGLE_DEGREES)
|
||||
fn default_angle() -> FontStyleAngle {
|
||||
FontStyleAngle(Angle::Deg(specified::DEFAULT_FONT_STYLE_OBLIQUE_ANGLE_DEGREES))
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue