background.rs (1495B)
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 7 use crate::derives::*; 8 use 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)] 28 pub 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 45 pub use self::GenericBackgroundSize as BackgroundSize; 46 47 impl<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 }