use std::mem::size_of;
use rocketsplash_formats::{AllocationTracker, GlyphData};
use super::cls_font::RuntimeGlyph;
use crate::Error;
pub(super) fn convert_glyph(
tracker: &mut AllocationTracker,
glyph: GlyphData,
) -> Result<RuntimeGlyph, Error> {
glyph.validate().map_err(Error::from)?;
let chars: Vec<char> = glyph.chars.chars().collect();
let char_bytes = chars.len() * size_of::<char>();
let opacity_bytes = glyph.opacity.as_ref().map(|o| o.len()).unwrap_or(0);
tracker.reserve(char_bytes + opacity_bytes)?;
Ok(RuntimeGlyph {
width: glyph.width as usize,
height: glyph.height as usize,
chars,
opacity: glyph.opacity,
})
}