#[derive(Copy, Clone, Debug, Eq, PartialEq)]
#[non_exhaustive]
pub struct WriteOptions {
pub(crate) preferred_padding: Option<u32>,
pub(crate) remove_others: bool,
pub(crate) respect_read_only: bool,
pub(crate) uppercase_id3v2_chunk: bool,
pub(crate) use_id3v23: bool,
pub(crate) lossy_text_encoding: bool,
}
impl WriteOptions {
pub const DEFAULT_PREFERRED_PADDING: u32 = 1024;
pub const fn new() -> Self {
Self {
preferred_padding: Some(Self::DEFAULT_PREFERRED_PADDING),
remove_others: false,
respect_read_only: true,
uppercase_id3v2_chunk: true,
use_id3v23: false,
lossy_text_encoding: true,
}
}
pub fn preferred_padding(mut self, preferred_padding: u32) -> Self {
match preferred_padding {
0 => self.preferred_padding = None,
_ => self.preferred_padding = Some(preferred_padding),
}
self
}
pub fn remove_others(mut self, remove_others: bool) -> Self {
self.remove_others = remove_others;
self
}
pub fn respect_read_only(mut self, respect_read_only: bool) -> Self {
self.respect_read_only = respect_read_only;
self
}
pub fn uppercase_id3v2_chunk(mut self, uppercase_id3v2_chunk: bool) -> Self {
self.uppercase_id3v2_chunk = uppercase_id3v2_chunk;
self
}
pub fn use_id3v23(&mut self, use_id3v23: bool) -> Self {
self.use_id3v23 = use_id3v23;
*self
}
pub fn lossy_text_encoding(&mut self, lossy_text_encoding: bool) -> Self {
self.lossy_text_encoding = lossy_text_encoding;
*self
}
}
impl Default for WriteOptions {
fn default() -> Self {
Self::new()
}
}