PC Music Generator - a Virtual Modular Synthesizer

Improve visual's shift mode (#8)

authored by

Ivan Chinenov and committed by
GitHub
103be62f 5d4fb9fe

+10 -9
+4
rack-designer/src/app/state/widget_editor.rs
··· 307 307 } 308 308 }); 309 309 310 + if let Mode::Shift(shift) = &mut c.mode { 311 + two_drag_value(ui, "Shift by", "X", "Y", &mut shift.x, &mut shift.y); 312 + } 313 + 310 314 labelled_drag_value(ui, "Thickness", &mut c.thickness); 311 315 ui.separator(); 312 316 }
+6 -9
rack/src/visuals.rs
··· 17 17 vec2, 18 18 Pos2, 19 19 Rect, 20 + Vec2, 20 21 }; 21 22 use serde::{ 22 23 Deserialize, ··· 34 35 pub enum Mode { 35 36 Static, 36 37 Rotate, 37 - ShiftX, 38 - ShiftY, 38 + Shift(Vec2), 39 39 } 40 40 41 41 impl std::fmt::Display for Mode { ··· 45 45 } 46 46 47 47 impl Mode { 48 - pub fn all() -> [Self; 4] { 48 + pub fn all() -> [Self; 3] { 49 49 use Mode::*; 50 - [Static, Rotate, ShiftX, ShiftY] 50 + [Static, Rotate, Shift(Vec2::default())] 51 51 } 52 52 } 53 53 ··· 91 91 let ny = y * value.cos() + x * value.sin(); 92 92 widget_center + vec2(nx, ny) 93 93 }), 94 - Mode::ShiftX => { 95 - Box::new(|pos: Pos2| widget_center + pos.to_vec2() + vec2(value, 0.0)) 96 - } 97 - Mode::ShiftY => { 98 - Box::new(|pos: Pos2| widget_center + pos.to_vec2() + vec2(0.0, value)) 94 + Mode::Shift(shift) => { 95 + Box::new(move |pos: Pos2| widget_center + pos.to_vec2() + (shift * value)) 99 96 } 100 97 } 101 98 };