pub struct PowerMapper { /* private fields */ }Expand description
Power curve range mapping.
Provides non-linear mapping using a power curve to give more resolution at one end of the range. Works with any range (positive, negative, or mixed).
Common use cases:
- Threshold parameters where more precision is needed near 0 dB
- Any parameter where UI feel should be skewed toward one end
§Behavior
exponent > 1.0: More resolution at the maximum (e.g., near 0 dB for threshold)exponent < 1.0: More resolution at the minimumexponent = 1.0: Linear (same as LinearMapper)
§Panics
Panics if the exponent is not positive, or if the range end is not greater than the range start.
§Example
ⓘ
// More resolution near 0 dB (max), less at -60 dB (min)
let mapper = PowerMapper::new(-60.0..=0.0, 2.0);
// With exponent 2.0, normalized 0.5 maps to -15 dB (not -30 dB)
let mid = mapper.denormalize(0.5);
assert!((mid - -15.0).abs() < 0.1);Implementations§
Source§impl PowerMapper
impl PowerMapper
Sourcepub fn new(range: RangeInclusive<f64>, exponent: f64) -> Self
pub fn new(range: RangeInclusive<f64>, exponent: f64) -> Self
Create a new power curve mapper.
§Arguments
range- Value range (can be negative, positive, or mixed)exponent- Power curve exponent (typical: 2.0-3.0)exponent > 1.0: More resolution at maxexponent < 1.0: More resolution at minexponent = 1.0: Linear (same as LinearMapper)
§Panics
Panics if:
exponent <= 0.0(must be positive)max <= min(invalid range)
Trait Implementations§
Source§impl Clone for PowerMapper
impl Clone for PowerMapper
Source§fn clone(&self) -> PowerMapper
fn clone(&self) -> PowerMapper
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PowerMapper
impl Debug for PowerMapper
Source§impl RangeMapper for PowerMapper
impl RangeMapper for PowerMapper
Source§fn normalize(&self, plain: f64) -> f64
fn normalize(&self, plain: f64) -> f64
Convert a plain value to normalized (0.0-1.0). Read more
Source§fn denormalize(&self, normalized: f64) -> f64
fn denormalize(&self, normalized: f64) -> f64
Convert a normalized value (0.0-1.0) to plain. Read more
Source§fn default_normalized(&self, plain_default: f64) -> f64
fn default_normalized(&self, plain_default: f64) -> f64
Get the default normalized value for a given plain default.
Auto Trait Implementations§
impl Freeze for PowerMapper
impl RefUnwindSafe for PowerMapper
impl Send for PowerMapper
impl Sync for PowerMapper
impl Unpin for PowerMapper
impl UnwindSafe for PowerMapper
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more