mirror of
https://github.com/obsqrbtz/egui_knob.git
synced 2026-04-08 20:19:17 +03:00
another sizing fix
This commit is contained in:
26
.vscode/launch.json
vendored
Normal file
26
.vscode/launch.json
vendored
Normal file
@@ -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}"
|
||||
},
|
||||
]
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
26
src/lib.rs
26
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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user