use crate::derives::*;
use crate::values::generics::length::{GenericLengthPercentageOrAuto, LengthPercentageOrAuto};
#[derive(
Animate,
Clone,
ComputeSquaredDistance,
Copy,
Debug,
MallocSizeOf,
PartialEq,
SpecifiedValueInfo,
ToAnimatedValue,
ToAnimatedZero,
ToComputedValue,
ToCss,
ToResolvedValue,
ToShmem,
ToTyped,
)]
#[repr(C, u8)]
pub enum GenericBackgroundSize<LengthPercent> {
ExplicitSize {
width: GenericLengthPercentageOrAuto<LengthPercent>,
#[css(contextual_skip_if = "width_and_height_are_auto")]
#[typed(skip_if = "GenericLengthPercentageOrAuto::is_auto")]
height: GenericLengthPercentageOrAuto<LengthPercent>,
},
#[animation(error)]
Cover,
#[animation(error)]
Contain,
}
#[inline]
fn width_and_height_are_auto<LengthPercent>(
width: &GenericLengthPercentageOrAuto<LengthPercent>,
height: &GenericLengthPercentageOrAuto<LengthPercent>,
) -> bool {
width.is_auto() && height.is_auto()
}
pub use self::GenericBackgroundSize as BackgroundSize;
impl<LengthPercentage> BackgroundSize<LengthPercentage> {
pub fn auto() -> Self {
GenericBackgroundSize::ExplicitSize {
width: LengthPercentageOrAuto::Auto,
height: LengthPercentageOrAuto::Auto,
}
}
}