ferroui_base/media/text_formatting/
wrapping_text_line_break.rs1use std::rc::Rc;
2
3use crate::media::text_formatting::{TextLineBreak, TextRun};
4use crate::media::FlowDirection;
5
6pub struct WrappingTextLineBreak;
15
16impl WrappingTextLineBreak {
17 pub fn new(
18 text_end_of_line: Option<Rc<dyn TextRun>>,
19 flow_direction: FlowDirection,
20 remaining_runs: Vec<Rc<dyn TextRun>>,
21 ) -> TextLineBreak {
22 debug_assert!(!remaining_runs.is_empty());
23
24 let line_break = TextLineBreak::new(text_end_of_line, flow_direction, true);
25 *line_break.remaining_runs.borrow_mut() = Some(remaining_runs);
26 line_break.is_wrapping.set(true);
27 line_break
28 }
29
30 pub fn is_wrapping(line_break: &TextLineBreak) -> bool {
32 line_break.is_wrapping.get()
33 }
34
35 pub fn acquire_remaining_runs(line_break: &TextLineBreak) -> Option<Vec<Rc<dyn TextRun>>> {
37 line_break.remaining_runs.borrow_mut().take()
38 }
39}