1use std::hash::Hash;
2
3use freya_engine::prelude::SkParagraph;
4
5use crate::{
6 data::TextStyleState,
7 lru_cache::LRUCache,
8 node_id::NodeId,
9 prelude::Span,
10};
11
12pub struct CachedParagraph<'a> {
13 pub text_style_state: &'a TextStyleState,
14 pub spans: &'a [Span<'a>],
15 pub max_lines: Option<usize>,
16 pub line_height: Option<f32>,
17 pub width: f32,
18}
19
20impl Hash for CachedParagraph<'_> {
21 fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
22 self.text_style_state.hash(state);
23 self.spans.hash(state);
24 self.max_lines.hash(state);
25 if let Some(v) = self.line_height {
26 v.to_bits().hash(state)
27 }
28 self.width.to_bits().hash(state);
29 }
30}
31
32pub type TextCache = LRUCache<SkParagraph, NodeId>;