#![cfg_attr(docs_rs, feature(doc_cfg))]
#![deny(missing_docs)]
#![warn(clippy::pedantic)]
use std::collections::HashMap;
use std::num::NonZeroU8;
#[cfg_attr(feature = "serde-serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "serde-deserialize", derive(serde::Deserialize))]
#[cfg_attr(feature = "rkyv", derive(rkyv::Archive))]
#[cfg_attr(feature = "rkyv-serialize", derive(rkyv::Serialize))]
#[cfg_attr(feature = "rkyv-deserialize", derive(rkyv::Deserialize))]
pub struct SourceRect {
pub x: u16,
pub y: u16,
pub width: NonZeroU8,
pub height: NonZeroU8,
}
#[cfg_attr(feature = "serde-serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "serde-deserialize", derive(serde::Deserialize))]
#[cfg_attr(feature = "rkyv", derive(rkyv::Archive))]
#[cfg_attr(feature = "rkyv-serialize", derive(rkyv::Serialize))]
#[cfg_attr(feature = "rkyv-deserialize", derive(rkyv::Deserialize))]
pub struct BitmapGlyph {
pub bitmap_source: Option<SourceRect>,
pub advance_width: f32,
pub left_side_bearing: f32,
pub ascent: f32,
}
#[cfg_attr(feature = "serde-serialize", derive(serde::Serialize))]
#[cfg_attr(feature = "serde-deserialize", derive(serde::Deserialize))]
#[cfg_attr(feature = "rkyv", derive(rkyv::Archive))]
#[cfg_attr(feature = "rkyv-serialize", derive(rkyv::Serialize))]
#[cfg_attr(feature = "rkyv-deserialize", derive(rkyv::Deserialize))]
pub struct BitmapFont {
pub glyphs: HashMap<char, BitmapGlyph>,
pub kerning_table: Option<HashMap<(char, char), f32>>,
pub ascent: f32,
pub descent: f32,
pub line_gap: f32,
pub padding: u32,
}