style/values/generics/
background.rs1use crate::derives::*;
8use crate::values::generics::length::{GenericLengthPercentageOrAuto, LengthPercentageOrAuto};
9
10#[derive(
12 Animate,
13 Clone,
14 ComputeSquaredDistance,
15 Copy,
16 Debug,
17 MallocSizeOf,
18 PartialEq,
19 SpecifiedValueInfo,
20 ToAnimatedValue,
21 ToAnimatedZero,
22 ToComputedValue,
23 ToCss,
24 ToResolvedValue,
25 ToShmem,
26)]
27#[repr(C, u8)]
28pub enum GenericBackgroundSize<LengthPercent> {
29 ExplicitSize {
31 width: GenericLengthPercentageOrAuto<LengthPercent>,
33 #[css(contextual_skip_if = "width_and_height_are_auto")]
35 height: GenericLengthPercentageOrAuto<LengthPercent>,
36 },
37 #[animation(error)]
39 Cover,
40 #[animation(error)]
42 Contain,
43}
44
45#[inline]
46fn width_and_height_are_auto<LengthPercent>(width: &GenericLengthPercentageOrAuto<LengthPercent>, height: &GenericLengthPercentageOrAuto<LengthPercent>) -> bool {
47 width.is_auto() && height.is_auto()
48}
49
50pub use self::GenericBackgroundSize as BackgroundSize;
51
52impl<LengthPercentage> BackgroundSize<LengthPercentage> {
53 pub fn auto() -> Self {
55 GenericBackgroundSize::ExplicitSize {
56 width: LengthPercentageOrAuto::Auto,
57 height: LengthPercentageOrAuto::Auto,
58 }
59 }
60}