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)]
29pub enum GenericBackgroundSize<LengthPercent> {
30 ExplicitSize {
32 width: GenericLengthPercentageOrAuto<LengthPercent>,
34 #[css(contextual_skip_if = "width_and_height_are_auto")]
36 #[typed(skip_if = "GenericLengthPercentageOrAuto::is_auto")]
37 height: GenericLengthPercentageOrAuto<LengthPercent>,
38 },
39 #[animation(error)]
41 Cover,
42 #[animation(error)]
44 Contain,
45}
46
47#[inline]
48fn width_and_height_are_auto<LengthPercent>(
49 width: &GenericLengthPercentageOrAuto<LengthPercent>,
50 height: &GenericLengthPercentageOrAuto<LengthPercent>,
51) -> bool {
52 width.is_auto() && height.is_auto()
53}
54
55pub use self::GenericBackgroundSize as BackgroundSize;
56
57impl<LengthPercentage> BackgroundSize<LengthPercentage> {
58 pub fn auto() -> Self {
60 GenericBackgroundSize::ExplicitSize {
61 width: LengthPercentageOrAuto::Auto,
62 height: LengthPercentageOrAuto::Auto,
63 }
64 }
65}