Add finer step sizes to parameters

This commit is contained in:
Robbert van der Helm
2022-11-08 22:03:26 +01:00
parent 8885713ea1
commit e583b8e777
10 changed files with 58 additions and 40 deletions

View File

@@ -219,8 +219,8 @@ impl ParamWidgetBase {
param_ptr_forward!(pub fn default_plain_value(&self) -> f32);
param_ptr_forward!(pub fn default_normalized_value(&self) -> f32);
param_ptr_forward!(pub fn step_count(&self) -> Option<usize>);
param_ptr_forward!(pub fn previous_normalized_step(&self, from: f32) -> f32);
param_ptr_forward!(pub fn next_normalized_step(&self, from: f32) -> f32);
param_ptr_forward!(pub fn previous_normalized_step(&self, from: f32, finer: bool) -> f32);
param_ptr_forward!(pub fn next_normalized_step(&self, from: f32, finer: bool) -> f32);
param_ptr_forward!(pub fn normalized_value_to_string(&self, normalized: f32, include_unit: bool) -> String);
param_ptr_forward!(pub fn string_to_normalized_value(&self, string: &str) -> Option<f32>);
param_ptr_forward!(pub fn preview_normalized(&self, plain: f32) -> f32);

View File

@@ -364,8 +364,8 @@ impl ParamSlider {
(previous_step, discrete_values.recip())
}
ParamSliderStyle::CurrentStep { .. } | ParamSliderStyle::CurrentStepLabeled { .. } => {
let previous_step = param.previous_normalized_step(current_value);
let next_step = param.next_normalized_step(current_value);
let previous_step = param.previous_normalized_step(current_value, false);
let next_step = param.next_normalized_step(current_value, false);
(
(previous_step + current_value) / 2.0,
@@ -570,13 +570,15 @@ impl View for ParamSlider {
let mut current_value = self.param_base.unmodulated_normalized_value();
while self.scrolled_lines >= 1.0 {
current_value = self.param_base.next_normalized_step(current_value);
current_value = self.param_base.next_normalized_step(current_value, false);
self.param_base.set_normalized_value(cx, current_value);
self.scrolled_lines -= 1.0;
}
while self.scrolled_lines <= -1.0 {
current_value = self.param_base.previous_normalized_step(current_value);
current_value = self
.param_base
.previous_normalized_step(current_value, false);
self.param_base.set_normalized_value(cx, current_value);
self.scrolled_lines += 1.0;
}