/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ //! Generic types for box properties. use crate::values::animated::ToAnimatedZero; #[derive( Animate, Clone, ComputeSquaredDistance, Copy, Debug, FromPrimitive, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, ToResolvedValue, ToShmem, )] #[repr(u8)] #[allow(missing_docs)] pub enum VerticalAlignKeyword { Baseline, Sub, Super, Top, TextTop, Middle, Bottom, TextBottom, #[cfg(feature = "gecko")] MozMiddleWithBaseline, } /// A generic value for the `vertical-align` property. #[derive( Animate, Clone, ComputeSquaredDistance, Copy, Debug, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, ToResolvedValue, ToShmem, )] #[repr(C, u8)] pub enum GenericVerticalAlign { /// One of the vertical-align keywords. Keyword(VerticalAlignKeyword), /// `` Length(LengthPercentage), } pub use self::GenericVerticalAlign as VerticalAlign; impl VerticalAlign { /// Returns `baseline`. #[inline] pub fn baseline() -> Self { VerticalAlign::Keyword(VerticalAlignKeyword::Baseline) } } impl ToAnimatedZero for VerticalAlign { fn to_animated_zero(&self) -> Result { Err(()) } } /// https://drafts.csswg.org/css-animations/#animation-iteration-count #[derive( Clone, Debug, MallocSizeOf, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, ToResolvedValue, ToShmem, )] pub enum AnimationIterationCount { /// A `` value. Number(Number), /// The `infinite` keyword. Infinite, } /// A generic value for the `perspective` property. #[derive( Animate, Clone, ComputeSquaredDistance, Copy, Debug, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToAnimatedValue, ToAnimatedZero, ToComputedValue, ToCss, ToResolvedValue, ToShmem, )] #[repr(C, u8)] pub enum GenericPerspective { /// A non-negative length. Length(NonNegativeLength), /// The keyword `none`. None, } pub use self::GenericPerspective as Perspective; impl Perspective { /// Returns `none`. #[inline] pub fn none() -> Self { Perspective::None } }