ferroui_base/input/
data_transfer_item_extensions.rs1use super::{DataFormat, DataFormatOf, IDataTransferItem};
2use crate::media::imaging::Bitmap;
3use crate::platform::storage::IStorageItem;
4use std::rc::Rc;
5
6pub trait DataTransferItemExtensions: IDataTransferItem {
8 fn contains(&self, format: &DataFormat) -> bool {
10 self.formats().iter().any(|candidate| candidate == format)
11 }
12
13 fn try_get_value<T: Clone + 'static>(&self, format: &DataFormatOf<T>) -> Option<T> {
16 self.try_get_raw(format).and_then(|value| value.downcast_ref::<T>().cloned())
17 }
18
19 fn try_get_text(&self) -> Option<String> {
21 self.try_get_value(&DataFormat::text())
22 }
23
24 fn try_get_bitmap(&self) -> Option<Rc<Bitmap>> {
26 self.try_get_value(&DataFormat::bitmap())
27 }
28
29 fn try_get_file(&self) -> Option<Rc<dyn IStorageItem>> {
33 self.try_get_value(&DataFormat::file())
34 }
35}
36
37impl<I: IDataTransferItem + ?Sized> DataTransferItemExtensions for I {}