mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-26 21:08:40 +00:00
Update slider example #565
Full range of slider is half the ::MIN/MAX for f32/f64
This commit is contained in:
parent
da549297b7
commit
2ac1a56ec5
@ -43,17 +43,25 @@ fn example_1(ui: &Ui, state: &mut State) {
|
|||||||
ui.text("Unsigned: u8 u16 u32 u64");
|
ui.text("Unsigned: u8 u16 u32 u64");
|
||||||
ui.text("Floats: f32 f64");
|
ui.text("Floats: f32 f64");
|
||||||
|
|
||||||
Slider::new("u8 value", 0, 255)
|
// Full ranges can be specified with Rust's `::MIN/MAX` constants
|
||||||
|
Slider::new("u8 value", u8::MIN, u8::MAX)
|
||||||
.build(ui, &mut state.u8_value);
|
.build(ui, &mut state.u8_value);
|
||||||
|
|
||||||
Slider::new("f32 value", -f32::MIN, f32::MAX)
|
// However for larger data-types, it's usually best to specify
|
||||||
|
// a much smaller range. The following slider is hard to use.
|
||||||
|
Slider::new("Full range f32 value", -f32::MIN/2.0, f32::MAX/2.0)
|
||||||
.build(ui, &mut state.f32_value);
|
.build(ui, &mut state.f32_value);
|
||||||
|
// Note the `... / 2.0` - anything larger is not supported by
|
||||||
|
// the upstream C++ library
|
||||||
|
ui.text("Note that for 32-bit/64-bit types, sliders are always limited to half of the natural type range!");
|
||||||
|
|
||||||
|
// Most of the time, it's best to specify the range
|
||||||
ui.separator();
|
ui.separator();
|
||||||
ui.text("Slider range can be limited:");
|
ui.text("Slider range can be limited:");
|
||||||
Slider::new("i32 value with range", -999, 999)
|
Slider::new("i32 value with range", -999, 999)
|
||||||
.build(ui, &mut state.i32_value);
|
.build(ui, &mut state.i32_value);
|
||||||
ui.text("Note that for 32-bit/64-bit types, sliders are always limited to half of the natural type range!");
|
Slider::new("f32 value", -10.0, 10.0)
|
||||||
|
.build(ui, &mut state.f32_value);
|
||||||
|
|
||||||
ui.separator();
|
ui.separator();
|
||||||
ui.text("Value formatting can be customized with a C-style printf string:");
|
ui.text("Value formatting can be customized with a C-style printf string:");
|
||||||
@ -61,6 +69,14 @@ fn example_1(ui: &Ui, state: &mut State) {
|
|||||||
.display_format("%09.0f")
|
.display_format("%09.0f")
|
||||||
.build(ui, &mut state.f64_formatted);
|
.build(ui, &mut state.f64_formatted);
|
||||||
|
|
||||||
|
// This formatting impacts the increments the slider operates in:
|
||||||
|
Slider::new("f32 with %.01f", 0.0, 1.0)
|
||||||
|
.display_format("%.01f")
|
||||||
|
.build(ui, &mut state.f32_value);
|
||||||
|
Slider::new("Same f32 with %.05f", 0.0, 1.0)
|
||||||
|
.display_format("%.05f")
|
||||||
|
.build(ui, &mut state.f32_value);
|
||||||
|
|
||||||
ui.separator();
|
ui.separator();
|
||||||
ui.text("Vertical sliders require a size parameter but otherwise work in a similar way:");
|
ui.text("Vertical sliders require a size parameter but otherwise work in a similar way:");
|
||||||
VerticalSlider::new("vertical\nu8 value", [50.0, 50.0], u8::MIN, u8::MAX)
|
VerticalSlider::new("vertical\nu8 value", [50.0, 50.0], u8::MIN, u8::MAX)
|
||||||
|
|||||||
@ -67,6 +67,11 @@ where
|
|||||||
///
|
///
|
||||||
/// It is safe, though up to C++ Dear ImGui, on how to handle when
|
/// It is safe, though up to C++ Dear ImGui, on how to handle when
|
||||||
/// `min > max`.
|
/// `min > max`.
|
||||||
|
///
|
||||||
|
/// Note for f32 and f64 sliders, Dear ImGui limits the available
|
||||||
|
/// range to half their full range (e.g `-f32::MIN/2.0 .. f32::MAX/2.0`)
|
||||||
|
/// Specifying a value above this will cause an abort.
|
||||||
|
/// For large ranged values, consider using [`Ui::input_scalar`] instead
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn range(mut self, min: Data, max: Data) -> Self {
|
pub fn range(mut self, min: Data, max: Data) -> Self {
|
||||||
self.min = min;
|
self.min = min;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user