#[cfg(feature = "accesskit")]
mod accessibility;
mod alignment;
mod cluster;
mod glyph;
mod line;
mod line_break;
mod run;
#[expect(
clippy::module_inception,
reason = "Private inner module for code organisation"
)]
mod layout;
pub(crate) mod data;
#[cfg(feature = "accesskit")]
pub use accessibility::LayoutAccessibility;
pub use alignment::{Alignment, AlignmentOptions};
pub use cluster::{Affinity, Cluster, ClusterPath, ClusterSide};
pub use data::BreakReason;
pub use glyph::Glyph;
pub use layout::Layout;
pub use line::{GlyphRun, Line, LineMetrics, PositionedInlineBox, PositionedLayoutItem};
pub use line_break::{
BoxBreakData, BreakLines, BreakerState, LineBreakData, MaxHeightBreakData, YieldData,
};
pub use run::{Run, RunMetrics};
pub(crate) use data::{LayoutData, LayoutItem, LayoutItemKind, LineData, LineItemData};
pub(crate) use line::LineItem;
#[deprecated(since = "TBD", note = "Access from the `editing` module instead.")]
pub use crate::editing::{Cursor, Selection};
use crate::style::Brush;
use crate::{LineHeight, OverflowWrap, TextWrapMode};
#[allow(clippy::partial_pub_fields)]
#[derive(Clone, Debug, PartialEq)]
pub struct Style<B: Brush> {
pub brush: B,
pub underline: Option<Decoration<B>>,
pub strikethrough: Option<Decoration<B>>,
pub(crate) line_height: LineHeight,
pub(crate) overflow_wrap: OverflowWrap,
pub(crate) text_wrap_mode: TextWrapMode,
#[cfg(feature = "accesskit")]
pub(crate) locale: Option<fontique::Language>,
}
#[derive(Clone, Debug, PartialEq)]
pub struct Decoration<B: Brush> {
pub brush: B,
pub offset: Option<f32>,
pub size: Option<f32>,
}
#[derive(Copy, Clone, Debug)]
pub struct ContentWidths {
pub min: f32,
pub max: f32,
}
#[derive(Copy, Clone, Default, PartialEq, Debug)]
pub struct IndentOptions {
pub each_line: bool,
pub hanging: bool,
}