use super::CanvasConfig;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DanmuType {
Float,
Top,
Bottom,
Reverse,
}
impl Default for DanmuType {
fn default() -> Self {
DanmuType::Float
}
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct Danmu {
pub timeline_s: f64,
pub content: String,
pub r#type: DanmuType,
pub fontsize: u32,
pub rgb: (u8, u8, u8),
}
impl Danmu {
pub fn length(&self, config: &CanvasConfig) -> f64 {
let pts = config.font_size
* self
.content
.chars()
.map(|ch| if ch.is_ascii() { 2 } else { 3 })
.sum::<u32>()
/ 3;
pts as f64 * config.width_ratio
}
}