view formats/src/th06/pos.rs @ 789:b5bca9274335

utils: Make some math functions const Sadly f32::sqrt() isn’t const, so we can’t make normalize() const nor any function which depends on it.
author Link Mauve <linkmauve@linkmauve.fr>
date Sun, 04 Jan 2026 11:49:03 +0100
parents ec1e06402a97
children
line wrap: on
line source

//! POS music track format support.

use nom::{IResult, Parser, number::complete::le_u32};

/// A struct describing the loop points of Touhou background music.
#[derive(Debug, Clone)]
pub struct LoopPoints {
    /// Time to which the music should loop after reaching end.
    pub start: u32,

    /// Time at which to loop back to start.
    pub end: u32,
}

impl LoopPoints {
    /// Parse a slice of bytes into a `LoopPoints` struct.
    pub fn from_slice(input: &[u8]) -> IResult<&[u8], LoopPoints> {
        let (i, (start, end)) = (le_u32, le_u32).parse(input)?;
        Ok((i, LoopPoints { start, end }))
    }
}