Skip to main content

ferroui_base/media/
gradient_stops.rs

1use crate::media::immutable::ImmutableGradientStop;
2use crate::media::media_collection::media_collection_type;
3use crate::media::{GradientStop, MediaCollection, ResetBehavior};
4use crate::Ref;
5
6media_collection_type!(
7    /// A collection of [`GradientStop`]s.
8    GradientStops, Ref<GradientStop>
9);
10
11impl GradientStops {
12    /// Creates an empty collection.
13    pub fn new() -> Self {
14        let list = MediaCollection::new();
15        list.set_reset_behavior(ResetBehavior::Remove);
16        Self(list)
17    }
18
19    /// Creates a collection holding `items`.
20    pub fn from_items(items: impl IntoIterator<Item = Ref<GradientStop>>) -> Self {
21        let list = MediaCollection::from_items(items);
22        list.set_reset_behavior(ResetBehavior::Remove);
23        Self(list)
24    }
25
26    /// Creates an immutable copy of the gradient stops.
27    pub fn to_immutable(&self) -> Vec<ImmutableGradientStop> {
28        self.iter().map(|stop| ImmutableGradientStop::new(stop.offset(), stop.color())).collect()
29    }
30}