dear_imgui_rs/widget/slider/
ui.rs1use crate::Ui;
2use crate::internal::DataTypeKind;
3
4use super::{AngleSlider, Slider, SliderFlags, VerticalSlider};
5
6impl Ui {
7 pub fn slider<T: AsRef<str>, K: DataTypeKind>(
9 &self,
10 label: T,
11 min: K,
12 max: K,
13 value: &mut K,
14 ) -> bool {
15 self.slider_config(label, min, max).build(value)
16 }
17
18 pub fn slider_config<T: AsRef<str>, K: DataTypeKind>(
20 &self,
21 label: T,
22 min: K,
23 max: K,
24 ) -> Slider<'_, T, K> {
25 Slider {
26 ui: self,
27 label,
28 min,
29 max,
30 display_format: Option::<&'static str>::None,
31 flags: SliderFlags::NONE,
32 }
33 }
34
35 #[doc(alias = "SliderFloat")]
37 pub fn slider_f32(&self, label: impl AsRef<str>, value: &mut f32, min: f32, max: f32) -> bool {
38 self.slider_config(label, min, max).build(value)
39 }
40
41 #[doc(alias = "SliderInt")]
43 pub fn slider_i32(&self, label: impl AsRef<str>, value: &mut i32, min: i32, max: i32) -> bool {
44 self.slider_config(label, min, max).build(value)
45 }
46
47 #[doc(alias = "SliderFloat2")]
49 pub fn slider_float2(
50 &self,
51 label: impl AsRef<str>,
52 value: &mut [f32; 2],
53 min: f32,
54 max: f32,
55 ) -> bool {
56 self.slider_config(label, min, max)
57 .build_array(value.as_mut_slice())
58 }
59
60 #[doc(alias = "SliderFloat3")]
62 pub fn slider_float3(
63 &self,
64 label: impl AsRef<str>,
65 value: &mut [f32; 3],
66 min: f32,
67 max: f32,
68 ) -> bool {
69 self.slider_config(label, min, max)
70 .build_array(value.as_mut_slice())
71 }
72
73 #[doc(alias = "SliderFloat4")]
75 pub fn slider_float4(
76 &self,
77 label: impl AsRef<str>,
78 value: &mut [f32; 4],
79 min: f32,
80 max: f32,
81 ) -> bool {
82 self.slider_config(label, min, max)
83 .build_array(value.as_mut_slice())
84 }
85
86 #[doc(alias = "SliderInt2")]
88 pub fn slider_int2(
89 &self,
90 label: impl AsRef<str>,
91 value: &mut [i32; 2],
92 min: i32,
93 max: i32,
94 ) -> bool {
95 self.slider_config(label, min, max)
96 .build_array(value.as_mut_slice())
97 }
98
99 #[doc(alias = "SliderInt3")]
101 pub fn slider_int3(
102 &self,
103 label: impl AsRef<str>,
104 value: &mut [i32; 3],
105 min: i32,
106 max: i32,
107 ) -> bool {
108 self.slider_config(label, min, max)
109 .build_array(value.as_mut_slice())
110 }
111
112 #[doc(alias = "SliderInt4")]
114 pub fn slider_int4(
115 &self,
116 label: impl AsRef<str>,
117 value: &mut [i32; 4],
118 min: i32,
119 max: i32,
120 ) -> bool {
121 self.slider_config(label, min, max)
122 .build_array(value.as_mut_slice())
123 }
124
125 #[doc(alias = "VSliderFloat")]
127 pub fn v_slider_f32(
128 &self,
129 label: impl AsRef<str>,
130 size: impl Into<[f32; 2]>,
131 value: &mut f32,
132 min: f32,
133 max: f32,
134 ) -> bool {
135 VerticalSlider::new(label, size, min, max).build(self, value)
136 }
137
138 #[doc(alias = "VSliderInt")]
140 pub fn v_slider_i32(
141 &self,
142 label: impl AsRef<str>,
143 size: impl Into<[f32; 2]>,
144 value: &mut i32,
145 min: i32,
146 max: i32,
147 ) -> bool {
148 VerticalSlider::new(label, size, min, max).build(self, value)
149 }
150
151 #[doc(alias = "SliderAngle")]
153 pub fn slider_angle(&self, label: impl AsRef<str>, value_rad: &mut f32) -> bool {
154 AngleSlider::new(label).build(self, value_rad)
155 }
156}