use std::fmt::Debug;
use crate::helpers::u32_to_u8_arr;
use crate::helpers::file_type::ToBinary;
#[derive(Debug, Default, Clone)]
pub struct KfnHeader {
pub diff_men: u32,
pub diff_women: u32,
pub genre: u32,
pub sftv: u32,
pub musl: u32,
pub anme: u32,
pub kfn_type: u32,
pub flid: String,
pub language: String,
pub album: String,
pub title: String,
pub artist: String,
pub composer: String,
pub comment: String,
pub copyright: String,
pub source_file: String,
pub year: String,
pub trak: String,
pub rght: u32,
pub prov: u32,
pub karafunizer: String,
pub idus: String,
}
impl KfnHeader {
}
impl ToBinary for KfnHeader {
fn to_binary(&mut self) -> Vec<u8> {
let mut data: Vec<u8> = Vec::new();
data.append(&mut "KFNB".as_bytes().to_owned());
data.append(&mut "DIFM".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.diff_men));
data.append(&mut "DIFW".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.diff_women));
data.append(&mut "GNRE".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.genre));
data.append(&mut "SFTV".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.sftv));
data.append(&mut "MUSL".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.musl));
data.append(&mut "ANME".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.anme));
data.append(&mut "TYPE".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.kfn_type));
data.append(&mut "FLID".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.flid.len() as u32));
data.append(&mut self.flid.as_bytes().to_owned());
data.append(&mut "LANG".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.language.len() as u32));
data.append(&mut self.language.as_bytes().to_owned());
data.append(&mut "TITL".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.title.len() as u32));
data.append(&mut self.title.as_bytes().to_owned());
data.append(&mut "ARTS".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.artist.len() as u32));
data.append(&mut self.artist.as_bytes().to_owned());
data.append(&mut "ALBM".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.album.len() as u32));
data.append(&mut self.album.as_bytes().to_owned());
data.append(&mut "COMP".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.composer.len() as u32));
data.append(&mut self.composer.as_bytes().to_owned());
data.append(&mut "COMM".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.comment.len() as u32));
data.append(&mut self.comment.as_bytes().to_owned());
data.append(&mut "COPY".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.copyright.len() as u32));
data.append(&mut self.copyright.as_bytes().to_owned());
data.append(&mut "SORC".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.source_file.len() as u32));
data.append(&mut self.source_file.as_bytes().to_owned());
data.append(&mut "YEAR".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.year.len() as u32));
data.append(&mut self.year.as_bytes().to_owned());
data.append(&mut "TRAK".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.trak.len() as u32));
data.append(&mut self.trak.as_bytes().to_owned());
data.append(&mut "KFNZ".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.karafunizer.len() as u32));
data.append(&mut self.karafunizer.as_bytes().to_owned());
data.append(&mut "RGHT".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.rght));
data.append(&mut "PROV".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut u32_to_u8_arr(self.prov));
data.append(&mut "IDUS".as_bytes().to_owned());
data.push(2_u8);
data.append(&mut u32_to_u8_arr(self.idus.len() as u32));
data.append(&mut self.idus.as_bytes().to_owned());
data.append(&mut "ENDH".as_bytes().to_owned());
data.push(1_u8);
data.append(&mut vec![255, 255, 255, 255]);
data
}
}