4个版本

0.1.3 2020年11月26日
0.1.2 2020年11月24日
0.1.1 2020年11月18日
0.1.0 2020年10月29日

#1811 in 算法


用于 audio-widgets

MIT/Apache

40KB
1K SLoC

Scales

Build Status Current Crates.io Version

值之间转换的实用库。

它做什么?

它提供了可重用的转换器,使得将一个刻度范围内的值转换为另一个刻度值变得容易。想象一下,在你的UI中有一个滑块,它有一个线性内部值,但控制着一个对数参数。通常你会这样做

let relative = (slider.value() - slider.min()) / (slider.max() - slider.min());
let log_range = parameter.max().log10() - parameter.min().log10();
let exp = parameter.min().log10() + relative * log_range;
let new_value = 10f64.powf(exp);
parameter.set(new_value);

使用刻度,你可以将其简化为

let new_value = (&slider_scale, &parameter_scale).convert(slider.value());
parameter.set(new_value);

其中 slider_scaleparameter_scale 是类似这样的可重用组件

let slider_scale = LinearScale::new(slider.min(), slider.max());
let parameter_scale = LogarithmicScale::new(parameter.min(), parameter.max());

早期开发状态!

随时可能会有破坏性变更!

无运行时依赖