dear_imgui_rs/widget/input/numeric/
int_vectors.rs1use super::super::validation::validate_input_scalar_flags;
2use crate::ui::Ui;
3use crate::{InputScalarFlags, sys};
4
5#[must_use]
7pub struct InputInt2<'ui, 'p, L> {
8 label: L,
9 value: &'p mut [i32; 2],
10 flags: InputScalarFlags,
11 ui: &'ui Ui,
12}
13
14impl<'ui, 'p, L: AsRef<str>> InputInt2<'ui, 'p, L> {
15 #[doc(alias = "InputInt2")]
17 pub fn new(ui: &'ui Ui, label: L, value: &'p mut [i32; 2]) -> Self {
18 InputInt2 {
19 label,
20 value,
21 flags: InputScalarFlags::empty(),
22 ui,
23 }
24 }
25
26 #[inline]
28 pub fn flags(mut self, flags: InputScalarFlags) -> Self {
29 self.flags = flags;
30 self
31 }
32
33 pub fn build(self) -> bool {
37 validate_input_scalar_flags("InputInt2::build()", self.flags);
38 let label_cstr = self.ui.scratch_txt(self.label);
39
40 self.ui.run_with_bound_context(|| unsafe {
41 sys::igInputInt2(label_cstr, self.value.as_mut_ptr(), self.flags.raw())
42 })
43 }
44}
45
46#[must_use]
48pub struct InputInt3<'ui, 'p, L> {
49 label: L,
50 value: &'p mut [i32; 3],
51 flags: InputScalarFlags,
52 ui: &'ui Ui,
53}
54
55impl<'ui, 'p, L: AsRef<str>> InputInt3<'ui, 'p, L> {
56 #[doc(alias = "InputInt3")]
58 pub fn new(ui: &'ui Ui, label: L, value: &'p mut [i32; 3]) -> Self {
59 InputInt3 {
60 label,
61 value,
62 flags: InputScalarFlags::empty(),
63 ui,
64 }
65 }
66
67 #[inline]
69 pub fn flags(mut self, flags: InputScalarFlags) -> Self {
70 self.flags = flags;
71 self
72 }
73
74 pub fn build(self) -> bool {
78 validate_input_scalar_flags("InputInt3::build()", self.flags);
79 let label_cstr = self.ui.scratch_txt(self.label);
80
81 self.ui.run_with_bound_context(|| unsafe {
82 sys::igInputInt3(label_cstr, self.value.as_mut_ptr(), self.flags.raw())
83 })
84 }
85}
86
87#[must_use]
89pub struct InputInt4<'ui, 'p, L> {
90 label: L,
91 value: &'p mut [i32; 4],
92 flags: InputScalarFlags,
93 ui: &'ui Ui,
94}
95
96impl<'ui, 'p, L: AsRef<str>> InputInt4<'ui, 'p, L> {
97 #[doc(alias = "InputInt4")]
99 pub fn new(ui: &'ui Ui, label: L, value: &'p mut [i32; 4]) -> Self {
100 InputInt4 {
101 label,
102 value,
103 flags: InputScalarFlags::empty(),
104 ui,
105 }
106 }
107
108 #[inline]
110 pub fn flags(mut self, flags: InputScalarFlags) -> Self {
111 self.flags = flags;
112 self
113 }
114
115 pub fn build(self) -> bool {
119 validate_input_scalar_flags("InputInt4::build()", self.flags);
120 let label_cstr = self.ui.scratch_txt(self.label);
121
122 self.ui.run_with_bound_context(|| unsafe {
123 sys::igInputInt4(label_cstr, self.value.as_mut_ptr(), self.flags.raw())
124 })
125 }
126}