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 ToTyped,
27)]
28#[repr(C, u8)]
29#[typed_value(derive_fields)]
30pub enum GenericBackgroundSize<LengthPercent> {
31 ExplicitSize {
33 width: GenericLengthPercentageOrAuto<LengthPercent>,
35 #[css(contextual_skip_if = "width_and_height_are_auto")]
37 #[typed_value(skip_if = "GenericLengthPercentageOrAuto::is_auto")]
38 height: GenericLengthPercentageOrAuto<LengthPercent>,
39 },
40 #[animation(error)]
42 Cover,
43 #[animation(error)]
45 Contain,
46}
47
48#[inline]
49fn width_and_height_are_auto<LengthPercent>(
50 width: &GenericLengthPercentageOrAuto<LengthPercent>,
51 height: &GenericLengthPercentageOrAuto<LengthPercent>,
52) -> bool {
53 width.is_auto() && height.is_auto()
54}
55
56pub use self::GenericBackgroundSize as BackgroundSize;
57
58impl<LengthPercentage> BackgroundSize<LengthPercentage> {
59 pub fn auto() -> Self {
61 GenericBackgroundSize::ExplicitSize {
62 width: LengthPercentageOrAuto::Auto,
63 height: LengthPercentageOrAuto::Auto,
64 }
65 }
66}