119 lines
2.8 KiB
Rust
119 lines
2.8 KiB
Rust
//! 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<u16>,
|
|
pub color: Option<Color>,
|
|
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<C: Into<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,
|
|
}
|