use oxitext_core::{
Decoration, DecorationLine, FlowDirection, ParagraphStyle, Rgba8, TextAlignment, TextStyle,
};
use std::collections::HashSet;
fn main() {
let style = TextStyle::default()
.with_font_size(18.0)
.with_max_width(400.0)
.with_alignment(TextAlignment::Justify);
println!(
"TextStyle: font_size={} max_width={} alignment={:?}",
style.font_size, style.max_width, style.alignment
);
assert_eq!(style.font_size, 18.0);
assert_eq!(style.alignment, TextAlignment::Justify);
let para = ParagraphStyle {
alignment: TextAlignment::Center,
indent: 24.0,
spacing_before: 8.0,
spacing_after: 8.0,
direction: FlowDirection::Horizontal,
..ParagraphStyle::default()
};
println!(
"ParagraphStyle: alignment={:?} indent={} spacing=({}, {})",
para.alignment, para.indent, para.spacing_before, para.spacing_after
);
let red = Rgba8 {
r: 220,
g: 40,
b: 40,
a: 255,
};
let black = Rgba8 {
r: 0,
g: 0,
b: 0,
a: 255,
};
let decoration = Decoration {
underline: Some(DecorationLine {
position: -2.0,
thickness: 1.5,
color: black,
}),
overline: None,
strikethrough: Some(DecorationLine {
position: 6.0,
thickness: 1.5,
color: red,
}),
};
println!(
"Decoration::any() = {} (underline={}, overline={}, strikethrough={})",
decoration.any(),
decoration.underline.is_some(),
decoration.overline.is_some(),
decoration.strikethrough.is_some()
);
assert!(decoration.any());
assert!(!Decoration::default().any());
let mut seen_combinations: HashSet<(FlowDirection, TextAlignment)> = HashSet::new();
let requests = [
(FlowDirection::Horizontal, TextAlignment::Left),
(FlowDirection::Horizontal, TextAlignment::Left), (FlowDirection::Horizontal, TextAlignment::Center),
(FlowDirection::Vertical, TextAlignment::Left),
];
for req in requests {
seen_combinations.insert(req);
}
println!(
"{} requests collapsed to {} unique (flow, alignment) combinations",
requests.len(),
seen_combinations.len()
);
assert_eq!(
seen_combinations.len(),
3,
"the duplicate request must collapse away"
);
}