#[cfg_attr(
feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(default)
)]
#[cfg_attr(
feature = "quickcheck",
derive(::quickcheck_richderive::Arbitrary),
quickcheck(arbitrary = "crate::quickcheck_helpers::composite::replay_gain")
)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ReplayGain {
track_gain_db: f32,
track_peak: f32,
album_gain_db: Option<f32>,
album_peak: Option<f32>,
}
impl Default for ReplayGain {
#[cfg_attr(not(tarpaulin), inline(always))]
fn default() -> Self {
Self::new(0.0, 0.0, None, None)
}
}
impl ReplayGain {
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn new(
track_gain_db: f32,
track_peak: f32,
album_gain_db: Option<f32>,
album_peak: Option<f32>,
) -> Self {
Self {
track_gain_db,
track_peak,
album_gain_db,
album_peak,
}
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn track_gain_db(&self) -> f32 {
self.track_gain_db
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn track_peak(&self) -> f32 {
self.track_peak
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn album_gain_db(&self) -> Option<f32> {
self.album_gain_db
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn album_peak(&self) -> Option<f32> {
self.album_peak
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_track_gain_db(mut self, v: f32) -> Self {
self.track_gain_db = v;
self
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_track_peak(mut self, v: f32) -> Self {
self.track_peak = v;
self
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_album_gain_db(mut self, v: Option<f32>) -> Self {
self.album_gain_db = v;
self
}
#[must_use]
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn with_album_peak(mut self, v: Option<f32>) -> Self {
self.album_peak = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_track_gain_db(&mut self, v: f32) -> &mut Self {
self.track_gain_db = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_track_peak(&mut self, v: f32) -> &mut Self {
self.track_peak = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_album_gain_db(&mut self, v: Option<f32>) -> &mut Self {
self.album_gain_db = v;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_album_peak(&mut self, v: Option<f32>) -> &mut Self {
self.album_peak = v;
self
}
}
#[cfg(test)]
mod tests;