Add formatters for percentages
This commit is contained in:
parent
24f3593de0
commit
2c6f65a342
|
@ -211,7 +211,8 @@ impl DiopserParams {
|
||||||
FloatRange::Linear { min: 0.0, max: 1.0 },
|
FloatRange::Linear { min: 0.0, max: 1.0 },
|
||||||
)
|
)
|
||||||
.with_unit("%")
|
.with_unit("%")
|
||||||
.with_value_to_string(Arc::new(|value| format!("{:.0}", value * 100.0))),
|
.with_value_to_string(formatters::f32_percentage(0))
|
||||||
|
.with_string_to_value(formatters::from_f32_percentage()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,24 @@ pub fn f32_rounded(digits: usize) -> Arc<dyn Fn(f32) -> String + Send + Sync> {
|
||||||
Arc::new(move |x| format!("{:.digits$}", x))
|
Arc::new(move |x| format!("{:.digits$}", x))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Format a `[0, 1]` number as a percentage. Does not include the percent sign, you should specify
|
||||||
|
/// this as the parameter's unit.
|
||||||
|
pub fn f32_percentage(digits: usize) -> Arc<dyn Fn(f32) -> String + Send + Sync> {
|
||||||
|
Arc::new(move |value| format!("{:.digits$}", value * 100.0))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Parse a `[0, 100]` percentage to a `[0, 1]` number. Handles the percentage unit for you. Used in
|
||||||
|
/// conjunction with [`f32_percentage`].
|
||||||
|
pub fn from_f32_percentage() -> Arc<dyn Fn(&str) -> Option<f32> + Send + Sync> {
|
||||||
|
Arc::new(|string| {
|
||||||
|
string
|
||||||
|
.trim_end_matches(&[' ', '%'])
|
||||||
|
.parse()
|
||||||
|
.ok()
|
||||||
|
.map(|x: f32| x / 100.0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// Format an order/power of two. Useful in conjunction with [`from_power_of_two()`] to limit
|
/// Format an order/power of two. Useful in conjunction with [`from_power_of_two()`] to limit
|
||||||
/// integer parameter ranges to be only powers of two.
|
/// integer parameter ranges to be only powers of two.
|
||||||
pub fn i32_power_of_two() -> Arc<dyn Fn(i32) -> String + Send + Sync> {
|
pub fn i32_power_of_two() -> Arc<dyn Fn(i32) -> String + Send + Sync> {
|
||||||
|
|
Loading…
Reference in a new issue