style/values/generics/
background.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5//! Generic types for CSS values related to backgrounds.
6
7use crate::derives::*;
8use crate::values::generics::length::{GenericLengthPercentageOrAuto, LengthPercentageOrAuto};
9
10/// A generic value for the `background-size` property.
11#[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    /// `<width> <height>`
30    ExplicitSize {
31        /// Explicit width.
32        width: GenericLengthPercentageOrAuto<LengthPercent>,
33        /// Explicit height.
34        #[css(skip_if = "GenericLengthPercentageOrAuto::is_auto")]
35        height: GenericLengthPercentageOrAuto<LengthPercent>,
36    },
37    /// `cover`
38    #[animation(error)]
39    Cover,
40    /// `contain`
41    #[animation(error)]
42    Contain,
43}
44
45pub use self::GenericBackgroundSize as BackgroundSize;
46
47impl<LengthPercentage> BackgroundSize<LengthPercentage> {
48    /// Returns `auto auto`.
49    pub fn auto() -> Self {
50        GenericBackgroundSize::ExplicitSize {
51            width: LengthPercentageOrAuto::Auto,
52            height: LengthPercentageOrAuto::Auto,
53        }
54    }
55}