use crate::Ui;
use crate::internal::DataTypeKind;
use super::{AngleSlider, Slider, SliderFlags, VerticalSlider};
impl Ui {
pub fn slider<T: AsRef<str>, K: DataTypeKind>(
&self,
label: T,
min: K,
max: K,
value: &mut K,
) -> bool {
self.slider_config(label, min, max).build(value)
}
pub fn slider_config<T: AsRef<str>, K: DataTypeKind>(
&self,
label: T,
min: K,
max: K,
) -> Slider<'_, T, K> {
Slider {
ui: self,
label,
min,
max,
display_format: Option::<&'static str>::None,
flags: SliderFlags::NONE,
}
}
#[doc(alias = "SliderFloat")]
pub fn slider_f32(&self, label: impl AsRef<str>, value: &mut f32, min: f32, max: f32) -> bool {
self.slider_config(label, min, max).build(value)
}
#[doc(alias = "SliderInt")]
pub fn slider_i32(&self, label: impl AsRef<str>, value: &mut i32, min: i32, max: i32) -> bool {
self.slider_config(label, min, max).build(value)
}
#[doc(alias = "SliderFloat2")]
pub fn slider_float2(
&self,
label: impl AsRef<str>,
value: &mut [f32; 2],
min: f32,
max: f32,
) -> bool {
self.slider_config(label, min, max)
.build_array(value.as_mut_slice())
}
#[doc(alias = "SliderFloat3")]
pub fn slider_float3(
&self,
label: impl AsRef<str>,
value: &mut [f32; 3],
min: f32,
max: f32,
) -> bool {
self.slider_config(label, min, max)
.build_array(value.as_mut_slice())
}
#[doc(alias = "SliderFloat4")]
pub fn slider_float4(
&self,
label: impl AsRef<str>,
value: &mut [f32; 4],
min: f32,
max: f32,
) -> bool {
self.slider_config(label, min, max)
.build_array(value.as_mut_slice())
}
#[doc(alias = "SliderInt2")]
pub fn slider_int2(
&self,
label: impl AsRef<str>,
value: &mut [i32; 2],
min: i32,
max: i32,
) -> bool {
self.slider_config(label, min, max)
.build_array(value.as_mut_slice())
}
#[doc(alias = "SliderInt3")]
pub fn slider_int3(
&self,
label: impl AsRef<str>,
value: &mut [i32; 3],
min: i32,
max: i32,
) -> bool {
self.slider_config(label, min, max)
.build_array(value.as_mut_slice())
}
#[doc(alias = "SliderInt4")]
pub fn slider_int4(
&self,
label: impl AsRef<str>,
value: &mut [i32; 4],
min: i32,
max: i32,
) -> bool {
self.slider_config(label, min, max)
.build_array(value.as_mut_slice())
}
#[doc(alias = "VSliderFloat")]
pub fn v_slider_f32(
&self,
label: impl AsRef<str>,
size: impl Into<[f32; 2]>,
value: &mut f32,
min: f32,
max: f32,
) -> bool {
VerticalSlider::new(label, size, min, max).build(self, value)
}
#[doc(alias = "VSliderInt")]
pub fn v_slider_i32(
&self,
label: impl AsRef<str>,
size: impl Into<[f32; 2]>,
value: &mut i32,
min: i32,
max: i32,
) -> bool {
VerticalSlider::new(label, size, min, max).build(self, value)
}
#[doc(alias = "SliderAngle")]
pub fn slider_angle(&self, label: impl AsRef<str>, value_rad: &mut f32) -> bool {
AngleSlider::new(label).build(self, value_rad)
}
}