freya_core/
text_cache.rs

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>;