Skip to main content

ferroui_base/media/
text_path_segment_trimming.rs

1use std::fmt;
2use std::rc::Rc;
3
4use crate::media::text_formatting::TextCollapsingProperties;
5use crate::media::{TextCollapsingCreateInfo, TextPathSegmentEllipsis, TextTrimming};
6
7/// Provides path segment-based text trimming with ellipsis for file paths
8/// and similar text content.
9pub struct TextPathSegmentTrimming {
10    ellipsis: String,
11}
12
13impl TextPathSegmentTrimming {
14    /// Creates the trimming with the ellipsis string to use for trimming.
15    pub fn new(ellipsis: &str) -> Self {
16        Self { ellipsis: ellipsis.to_owned() }
17    }
18}
19
20impl TextTrimming for TextPathSegmentTrimming {
21    fn create_collapsing_properties(&self, create_info: &TextCollapsingCreateInfo) -> Rc<dyn TextCollapsingProperties> {
22        Rc::new(TextPathSegmentEllipsis::new(
23            &self.ellipsis,
24            create_info.width,
25            create_info.text_run_properties.clone(),
26            create_info.flow_direction,
27        ))
28    }
29}
30
31impl fmt::Display for TextPathSegmentTrimming {
32    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33        f.write_str("PathSegmentEllipsis")
34    }
35}