61 lines
1.4 KiB
Rust
61 lines
1.4 KiB
Rust
use crate::core::alignment;
|
|
use crate::core::text;
|
|
use crate::core::{Color, Font, Pixels, Point, Rectangle};
|
|
use crate::graphics::text::editor;
|
|
use crate::graphics::text::paragraph;
|
|
|
|
/// A text primitive.
|
|
#[derive(Debug, Clone)]
|
|
pub enum Text<'a> {
|
|
/// A paragraph.
|
|
#[allow(missing_docs)]
|
|
Paragraph {
|
|
paragraph: paragraph::Weak,
|
|
position: Point,
|
|
color: Color,
|
|
clip_bounds: Rectangle,
|
|
},
|
|
/// An editor.
|
|
#[allow(missing_docs)]
|
|
Editor {
|
|
editor: editor::Weak,
|
|
position: Point,
|
|
color: Color,
|
|
clip_bounds: Rectangle,
|
|
},
|
|
/// A cached text.
|
|
Cached(Cached<'a>),
|
|
}
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Cached<'a> {
|
|
/// The content of the [`Text`].
|
|
pub content: &'a str,
|
|
|
|
/// The layout bounds of the [`Text`].
|
|
pub bounds: Rectangle,
|
|
|
|
/// The color of the [`Text`], in __linear RGB_.
|
|
pub color: Color,
|
|
|
|
/// The size of the [`Text`] in logical pixels.
|
|
pub size: Pixels,
|
|
|
|
/// The line height of the [`Text`].
|
|
pub line_height: text::LineHeight,
|
|
|
|
/// The font of the [`Text`].
|
|
pub font: Font,
|
|
|
|
/// The horizontal alignment of the [`Text`].
|
|
pub horizontal_alignment: alignment::Horizontal,
|
|
|
|
/// The vertical alignment of the [`Text`].
|
|
pub vertical_alignment: alignment::Vertical,
|
|
|
|
/// The shaping strategy of the text.
|
|
pub shaping: text::Shaping,
|
|
|
|
/// The clip bounds of the text.
|
|
pub clip_bounds: Rectangle,
|
|
}
|