use std::sync::Arc;
use reflexo::hash::{item_hash128, Fingerprint};
pub use reflexo::vector::ir::*;
use ttf_parser::GlyphId;
use typst::text::Font;
#[derive(Debug, Clone, Hash, PartialEq, Eq)]
pub enum GlyphItem {
None,
Raw(Font, GlyphId),
Image(Arc<ImageGlyphItem>),
Outline(Arc<OutlineGlyphItem>),
}
impl From<FlatGlyphItem> for GlyphItem {
fn from(item: FlatGlyphItem) -> Self {
match item {
FlatGlyphItem::Image(item) => GlyphItem::Image(item),
FlatGlyphItem::Outline(item) => GlyphItem::Outline(item),
FlatGlyphItem::None => GlyphItem::None,
}
}
}
impl GlyphItem {
#[comemo::memoize]
pub fn get_fingerprint(&self) -> Fingerprint {
Fingerprint::from_u128(item_hash128(self))
}
}