//! Write some text for your users to read. use crate::{Color, Length}; /// A paragraph of text. /// /// # Example /// /// ``` /// use iced_core::Text; /// /// Text::new("I <3 iced!") /// .size(40); /// ``` #[derive(Debug, Clone)] pub struct Text { pub content: String, pub size: Option, pub color: Option, pub width: Length, pub height: Length, pub horizontal_alignment: HorizontalAlignment, pub vertical_alignment: VerticalAlignment, } impl Text { /// Create a new fragment of [`Text`] with the given contents. /// /// [`Text`]: struct.Text.html pub fn new(label: &str) -> Self { Text { content: String::from(label), size: None, color: None, width: Length::Fill, height: Length::Shrink, horizontal_alignment: HorizontalAlignment::Left, vertical_alignment: VerticalAlignment::Top, } } /// Sets the size of the [`Text`]. /// /// [`Text`]: struct.Text.html pub fn size(mut self, size: u16) -> Self { self.size = Some(size); self } /// Sets the `Color` of the [`Text`]. /// /// [`Text`]: struct.Text.html pub fn color>(mut self, color: C) -> Self { self.color = Some(color.into()); self } /// Sets the width of the [`Text`] boundaries. /// /// [`Text`]: struct.Text.html pub fn width(mut self, width: Length) -> Self { self.width = width; self } /// Sets the height of the [`Text`] boundaries. /// /// [`Text`]: struct.Text.html pub fn height(mut self, height: Length) -> Self { self.height = height; self } /// Sets the [`HorizontalAlignment`] of the [`Text`]. /// /// [`Text`]: struct.Text.html /// [`HorizontalAlignment`]: enum.HorizontalAlignment.html pub fn horizontal_alignment( mut self, alignment: HorizontalAlignment, ) -> Self { self.horizontal_alignment = alignment; self } /// Sets the [`VerticalAlignment`] of the [`Text`]. /// /// [`Text`]: struct.Text.html /// [`VerticalAlignment`]: enum.VerticalAlignment.html pub fn vertical_alignment(mut self, alignment: VerticalAlignment) -> Self { self.vertical_alignment = alignment; self } } /// The horizontal alignment of some resource. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum HorizontalAlignment { /// Align left Left, /// Horizontally centered Center, /// Align right Right, } /// The vertical alignment of some resource. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum VerticalAlignment { /// Align top Top, /// Vertically centered Center, /// Align bottom Bottom, }