|
@@ -181,22 +181,20 @@ impl PatternPen {
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
- for dst in (self.from..=self.to).skip(1) {
|
|
|
|
- // Clone to target pen
|
|
|
|
- let pen: &mut Pen = pens.get_mut(dst).expect("Invalid pen index");
|
|
|
|
- *pen = src.clone();
|
|
|
|
|
|
+ for idx in (self.from..=self.to).skip(1) {
|
|
|
|
+ let dst: &mut Pen = pens.get_mut(idx).expect("Invalid pen index");
|
|
|
|
|
|
// Calculate new setting
|
|
// Calculate new setting
|
|
setting = match (setting, &self.field) {
|
|
setting = match (setting, &self.field) {
|
|
(PatternField::Loops(prev), PatternField::Loops(incr)) => {
|
|
(PatternField::Loops(prev), PatternField::Loops(incr)) => {
|
|
let value: i32 = prev + incr;
|
|
let value: i32 = prev + incr;
|
|
- debug!("Patching loop count for pen #{}: {}", dst, value);
|
|
|
|
|
|
+ debug!("Patching loop count for pen #{}: {}", idx, value);
|
|
assert!(value > 0, "Pen loop count must be greater than zero");
|
|
assert!(value > 0, "Pen loop count must be greater than zero");
|
|
PatternField::Loops(value)
|
|
PatternField::Loops(value)
|
|
}
|
|
}
|
|
(PatternField::Speed(prev), PatternField::Speed(incr)) => {
|
|
(PatternField::Speed(prev), PatternField::Speed(incr)) => {
|
|
let value: f64 = prev + incr;
|
|
let value: f64 = prev + incr;
|
|
- debug!("Patching speed for pen #{}: {}", dst, value);
|
|
|
|
|
|
+ debug!("Patching speed for pen #{}: {}", idx, value);
|
|
assert!(
|
|
assert!(
|
|
value > SPEED_MIN && value <= SPEED_MAX,
|
|
value > SPEED_MIN && value <= SPEED_MAX,
|
|
"Pen speed must be between {} and {}",
|
|
"Pen speed must be between {} and {}",
|
|
@@ -207,7 +205,7 @@ impl PatternPen {
|
|
}
|
|
}
|
|
(PatternField::Power(prev), PatternField::Power(incr)) => {
|
|
(PatternField::Power(prev), PatternField::Power(incr)) => {
|
|
let value: f64 = prev + incr;
|
|
let value: f64 = prev + incr;
|
|
- debug!("Patching power for pen #{}: {}", dst, value);
|
|
|
|
|
|
+ debug!("Patching power for pen #{}: {}", idx, value);
|
|
assert!(
|
|
assert!(
|
|
value > POWER_MIN && value <= POWER_MAX,
|
|
value > POWER_MIN && value <= POWER_MAX,
|
|
"Pen power must be between {} and {}",
|
|
"Pen power must be between {} and {}",
|
|
@@ -218,7 +216,7 @@ impl PatternPen {
|
|
}
|
|
}
|
|
(PatternField::Frequency(prev), PatternField::Frequency(incr)) => {
|
|
(PatternField::Frequency(prev), PatternField::Frequency(incr)) => {
|
|
let value: i32 = prev + incr;
|
|
let value: i32 = prev + incr;
|
|
- debug!("Patching frequency for pen #{}: {}", dst, value);
|
|
|
|
|
|
+ debug!("Patching frequency for pen #{}: {}", idx, value);
|
|
assert!(
|
|
assert!(
|
|
value >= FREQUENCY_MIN.try_into().unwrap()
|
|
value >= FREQUENCY_MIN.try_into().unwrap()
|
|
&& value <= FREQUENCY_MAX.try_into().unwrap(),
|
|
&& value <= FREQUENCY_MAX.try_into().unwrap(),
|
|
@@ -233,17 +231,17 @@ impl PatternPen {
|
|
|
|
|
|
// Patch updated value
|
|
// Patch updated value
|
|
match setting {
|
|
match setting {
|
|
- PatternField::Loops(x) => *pen.loop_count = x.try_into().unwrap(),
|
|
|
|
- PatternField::Speed(x) => *pen.speed = x,
|
|
|
|
- PatternField::Power(x) => *pen.power = x,
|
|
|
|
|
|
+ PatternField::Loops(x) => *dst.loop_count = x.try_into().unwrap(),
|
|
|
|
+ PatternField::Speed(x) => *dst.speed = x,
|
|
|
|
+ PatternField::Power(x) => *dst.power = x,
|
|
PatternField::Frequency(x) => {
|
|
PatternField::Frequency(x) => {
|
|
- *pen.frequency = x.try_into().unwrap();
|
|
|
|
- *pen.frequency_2 = x.try_into().unwrap();
|
|
|
|
|
|
+ *dst.frequency = x.try_into().unwrap();
|
|
|
|
+ *dst.frequency_2 = x.try_into().unwrap();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// Always enable custom settings for pen
|
|
// Always enable custom settings for pen
|
|
- *pen.use_default = 0;
|
|
|
|
|
|
+ *dst.use_default = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|