{ /// Creates a new [`Plain`] paragraph. pub fn new(text: Text<&str, P::Font>) -> Self { let content = text.content.to_owned(); Self { raw: P::with_text(text), content, } } /// Updates the plain [`Paragraph`] to match the given [`Text`], if needed. pub fn update(&mut self, text: Text<&str, P::Font>) { if self.content != text.content { text.content.clone_into(&mut self.content); self.raw = P::with_text(text); return; } match self.raw.compare(Text { content: (), bounds: text.bounds, size: text.size, line_height: text.line_height, font: text.font, horizontal_alignment: text.horizontal_alignment, vertical_alignment: text.vertical_alignment, shaping: text.shaping, wrapping: text.wrapping, }) { Difference::None => {} Difference::Bounds => { self.raw.resize(text.bounds); } Difference::Shape => { self.raw = P::with_text(text); } } } /// Returns the horizontal alignment of the [`Paragraph`]. pub fn horizontal_alignment(&self) -> alignment::Horizontal { self.raw.horizontal_alignment() } /// Returns the vertical alignment of the [`Paragraph`]. pub fn vertical_alignment(&self) -> alignment::Vertical { self.raw.vertical_alignment() } /// Returns the minimum boundaries that can fit the contents of the /// [`Paragraph`]. pub fn min_bounds(&self) -> Size { self.raw.min_bounds() } /// Returns the minimum width that can fit the contents of the /// [`Paragraph`]. pub fn min_width(&self) -> f32 { self.raw.min_width() } /// Returns the minimum height that can fit the contents of the /// [`Paragraph`]. pub fn min_height(&self) -> f32 { self.raw.min_height() } /// Returns the cached [`Paragraph`]. pub fn raw(&self) -> &P { &self.raw } }