1use crate::{Bounds, Corners, Hsla, Pixels, ScaledPixels};
4use core::fmt::Debug;
5
6pub type DrawOrder = u32;
10
11#[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
15#[repr(C)]
16pub struct ContentMask<P: Clone + Debug + Default + PartialEq> {
17 pub bounds: Bounds<P>,
19}
20
21impl ContentMask<Pixels> {
22 pub fn scale(&self, factor: f32) -> ContentMask<ScaledPixels> {
24 ContentMask {
25 bounds: self.bounds.scale(factor),
26 }
27 }
28
29 pub fn intersect(&self, other: &Self) -> Self {
31 let bounds = self.bounds.intersect(&other.bounds);
32 ContentMask { bounds }
33 }
34}
35
36#[derive(Debug, Copy, Clone)]
37#[repr(C)]
38#[expect(missing_docs)]
39pub struct Shadow {
40 pub order: DrawOrder,
41 pub blur_radius: ScaledPixels,
42 pub bounds: Bounds<ScaledPixels>,
43 pub corner_radii: Corners<ScaledPixels>,
44 pub content_mask: ContentMask<ScaledPixels>,
45 pub color: Hsla,
46 pub element_bounds: Bounds<ScaledPixels>,
47 pub element_corner_radii: Corners<ScaledPixels>,
48 pub inset: u32,
50 pub pad: u32, }