diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..31f0650 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug example 'example_knob'", + "cargo": { + "args": [ + "build", + "--example=example_knob", + "--package=egui_knob" + ], + "filter": { + "name": "example_knob", + "kind": "example" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + ] +} \ No newline at end of file diff --git a/examples/example_knob.rs b/examples/example_knob.rs index 3dd2cd5..897dfca 100644 --- a/examples/example_knob.rs +++ b/examples/example_knob.rs @@ -33,7 +33,6 @@ impl eframe::App for KnobExample { .with_label("Gain", egui_knob::LabelPosition::Bottom) .with_size(50.0), ); - ui.add_space(15.0); ui.add( Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Dot) .with_label("Gain", egui_knob::LabelPosition::Bottom) @@ -44,7 +43,6 @@ impl eframe::App for KnobExample { ) .with_size(50.0), ); - ui.add_space(15.0); ui.add( Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Wiper) .with_label("Gain", egui_knob::LabelPosition::Bottom) diff --git a/src/lib.rs b/src/lib.rs index 00159ba..f7be162 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -97,16 +97,12 @@ impl Widget for Knob<'_> { Vec2::ZERO }; - let label_padding = 12.0; + let label_padding = 2.0; - let adjusted_size = match self.label_position { - LabelPosition::Top | LabelPosition::Bottom => { - Vec2::new(knob_size.x, knob_size.y + label_size.y + label_padding) - } - LabelPosition::Left | LabelPosition::Right => { - Vec2::new(knob_size.x + label_size.x + label_padding, knob_size.y) - } - }; + let adjusted_size = Vec2::new( + knob_size.x + label_size.y + label_padding * 6.0, + knob_size.y + label_size.y + label_padding * 6.0, + ); let (rect, response) = ui.allocate_exact_size(adjusted_size, Sense::drag()); @@ -156,21 +152,20 @@ impl Widget for Knob<'_> { ) .size(); - let label_offset = label_padding; let label_pos = match self.label_position { LabelPosition::Top => { rect.center() - + Vec2::new(-text_size.x / 2.0, -radius - label_offset - text_size.y) + + Vec2::new(-text_size.x / 2.0, -radius - label_padding - text_size.y) } LabelPosition::Bottom => { - rect.center() + Vec2::new(-text_size.x / 2.0, radius + label_offset) + rect.center() + Vec2::new(-text_size.x / 2.0, radius + label_padding) } LabelPosition::Left => { rect.center() - + Vec2::new(-radius - label_offset - text_size.x, -text_size.y / 2.0) + + Vec2::new(-radius - label_padding - text_size.x, -text_size.y / 2.0) } LabelPosition::Right => { - rect.center() + Vec2::new(radius + label_offset, -text_size.y / 2.0) + rect.center() + Vec2::new(radius + label_padding, -text_size.y / 2.0) } }; @@ -183,6 +178,9 @@ impl Widget for Knob<'_> { ); } + // Draw the boundary rectangle + painter.rect_stroke(rect, 0.0, Stroke::new(1.0, Color32::RED)); + response } }