0.4.1
Loading...
Searching...
No Matches
InputWithUnit.hpp
Go to the documentation of this file.
1// This file is part of INSTINCT, the INS Toolkit for Integrated
2// Navigation Concepts and Training by the Institute of Navigation of
3// the University of Stuttgart, Germany.
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9/// @file InputWithUnit.hpp
10/// @brief Defines Widgets which allow the input of values and the selection of the unit
11/// @author T. Topp (topp@ins.uni-stuttgart.de)
12/// @date 2021-10-21
13
14#pragma once
15
16#include <cstdint>
17#include <fmt/format.h>
18#include <imgui.h>
19#include <string>
20#include <algorithm>
21#include "imgui_ex.hpp"
22
23namespace NAV
24{
25
26/// @brief Units separated by '\0' and terminated by double '\0'
27template<typename T>
28[[nodiscard]] std::string MakeComboItems()
29{
30 std::string str;
31 for (size_t i = 0; i < static_cast<size_t>(T::COUNT); i++)
32 {
33 if (!str.empty()) { str += '\0'; }
34 str += to_string(static_cast<T>(i));
35 }
36 str += '\0';
37 str += '\0';
38 return str;
39}
40
41namespace gui::widgets
42{
43/// Return value signaling that the input or the unit changed
44enum InputWithUnitChange : uint8_t
45{
46 InputWithUnitChange_None = 0, ///< Nothing changed
47 InputWithUnitChange_Input, ///< The Input changed
48 InputWithUnitChange_Unit, ///< The Unit changed
49};
50
51namespace internal
52{
53
54/// @brief Shows a Unit input combo
55/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
56/// @param unitWidth Width of the unit combo
57/// @param combo_current_item The selected item in the unit combo
58/// @param combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
59/// @param combo_popup_max_height_in_items Maximum height of the combo in number of items
60/// @return Returns if the unit was changed
61template<typename U>
62InputWithUnitChange Unit(const char* label, float unitWidth,
63 U& combo_current_item, const char* combo_items_separated_by_zeros,
64 int combo_popup_max_height_in_items)
65{
67
68 ImGui::SetNextItemWidth(unitWidth - ImGui::GetStyle().ItemSpacing.x);
69
70 char first = '1';
71 char second = '1';
72 bool disable = true;
73 for (size_t i = 0; first != '\0' || second != '\0'; i++)
74 {
75 first = *(combo_items_separated_by_zeros + i);
76 second = *(combo_items_separated_by_zeros + i + 1);
77
78 if (first == '\0' && second != '\0')
79 {
80 disable = false;
81 break;
82 }
83 }
84
85 if (disable) { ImGui::BeginDisabled(); }
86 if (auto current_item = static_cast<int>(combo_current_item);
87 ImGui::Combo(fmt::format("##{} - unit", label).c_str(), &current_item, combo_items_separated_by_zeros, combo_popup_max_height_in_items))
88 {
89 combo_current_item = static_cast<U>(current_item);
91 }
92 if (disable) { ImGui::EndDisabled(); }
93 ImGui::SameLine();
94 ImGui::SetCursorPosX(ImGui::GetCursorPosX() - ImGui::GetStyle().ItemSpacing.x + ImGui::GetStyle().ItemInnerSpacing.x);
95 std::string strLabel{ label };
96 ImGui::TextUnformatted(strLabel.substr(0, strLabel.find('#')).c_str());
97
98 return retVal;
99}
100
101/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
102/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
103/// @param[in] itemWidth Width of the input element(s) + unit combo
104/// @param[in] unitWidth Width of the unit combo
105/// @param[in, out] v Pointer to the value to modify
106/// @param[in, out] combo_current_item The selected item in the unit combo
107/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
108/// @param[in] step Step size of the InputText
109/// @param[in] step_fast Fast step size of the InputText
110/// @param[in] format Printf format to display the value with
111/// @param[in] flags InputText flags to modify the behavior
112/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
113/// @return Returns if the value or unit was changed
114template<ImGuiDataType_ _Scalar, unsigned int _Size, typename T, typename U>
115InputWithUnitChange InputWithUnit(const char* label, float itemWidth, float unitWidth,
116 T v[_Size], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
117 T step, T step_fast, const char* format, ImGuiInputTextFlags flags,
118 int combo_popup_max_height_in_items)
119{
121
122 ImGui::SetNextItemWidth(itemWidth - unitWidth);
123 if constexpr (_Size == 1)
124 {
125 flags |= ImGuiInputTextFlags_CharsScientific;
126 if (ImGui::InputScalar(fmt::format("##{} - input", label).c_str(), _Scalar, static_cast<void*>(v), static_cast<void*>(step > 0.0 ? &step : nullptr), static_cast<void*>(step_fast > 0.0 ? &step_fast : nullptr), format, flags))
127 {
129 }
130 }
131 else
132 {
133 if (ImGui::InputScalarN(fmt::format("##{} - input", label).c_str(), _Scalar, v, _Size, nullptr, nullptr, format, flags))
134 {
136 }
137 }
138 ImGui::SameLine();
139 retVal = static_cast<InputWithUnitChange>(retVal | Unit(label, unitWidth, combo_current_item, combo_items_separated_by_zeros, combo_popup_max_height_in_items));
140
141 return retVal;
142}
143
144/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
145/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
146/// @param[in] itemWidth Width of the input element(s) + unit combo
147/// @param[in] unitWidth Width of the unit combo
148/// @param[in, out] v Pointer to the value to modify
149/// @param[in, out] combo_current_item The selected item in the unit combo
150/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
151/// @param[in] min Minimum value allowed
152/// @param[in] max Maximum value allowed
153/// @param[in] format Printf format to display the value with
154/// @param[in] flags Slider flags to modify the behavior
155/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
156/// @return Returns if the value or unit was changed
157template<ImGuiDataType_ _Scalar, unsigned int _Size, typename T, typename U>
158InputWithUnitChange SliderWithUnit(const char* label, float itemWidth, float unitWidth,
159 T v[_Size], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
160 T min, T max, const char* format, ImGuiInputTextFlags flags,
161 int combo_popup_max_height_in_items)
162{
164
165 ImGui::SetNextItemWidth(itemWidth - unitWidth);
166 if constexpr (_Size == 1)
167 {
168 flags |= ImGuiInputTextFlags_CharsScientific;
169 if (ImGui::SliderScalar(fmt::format("##{} - input", label).c_str(), _Scalar, static_cast<void*>(v), &min, &max, format, flags))
170 {
172 }
173 }
174 else
175 {
176 if (ImGui::SliderScalarN(fmt::format("##{} - input", label).c_str(), _Scalar, v, _Size, &min, &max, format, flags))
177 {
179 }
180 }
181 ImGui::SameLine();
182 retVal = static_cast<InputWithUnitChange>(retVal | Unit(label, unitWidth, combo_current_item, combo_items_separated_by_zeros, combo_popup_max_height_in_items));
183
184 return retVal;
185}
186
187} // namespace internal
188
189/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
190/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
191/// @param[in] itemWidth Width of the input element(s) + unit combo
192/// @param[in] unitWidth Width of the unit combo
193/// @param[in, out] v Pointer to the value to modify
194/// @param[in, out] combo_current_item The selected item in the unit combo
195/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
196/// @param[in] step Step size of the InputText
197/// @param[in] step_fast Fast step size of the InputText
198/// @param[in] format Printf format to display the value with
199/// @param[in] flags InputText flags to modify the behavior
200/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
201/// @return Returns if the value or unit was changed
202template<typename U>
203InputWithUnitChange InputFloatWithUnit(const char* label, float itemWidth, float unitWidth,
204 float* v, U& combo_current_item, const char* combo_items_separated_by_zeros,
205 float step = 0.0, float step_fast = 0.0, const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
206 int combo_popup_max_height_in_items = -1)
207{
208 return internal::InputWithUnit<ImGuiDataType_Float, 1, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, step, step_fast, format, flags, combo_popup_max_height_in_items);
209}
210
211/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
212/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
213/// @param[in] itemWidth Width of the input element(s) + unit combo
214/// @param[in] unitWidth Width of the unit combo
215/// @param[in, out] v Pointer to the value to modify
216/// @param[in, out] combo_current_item The selected item in the unit combo
217/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
218/// @param[in] format Printf format to display the value with
219/// @param[in] flags InputText flags to modify the behavior
220/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
221/// @return Returns if the value or unit was changed
222template<typename U>
223InputWithUnitChange InputFloat2WithUnit(const char* label, float itemWidth, float unitWidth,
224 float v[2], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
225 const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
226 int combo_popup_max_height_in_items = -1)
227{
228 return internal::InputWithUnit<ImGuiDataType_Float, 2, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
229}
230
231/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
232/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
233/// @param[in] itemWidth Width of the input element(s) + unit combo
234/// @param[in] unitWidth Width of the unit combo
235/// @param[in, out] v Pointer to the value to modify
236/// @param[in, out] combo_current_item The selected item in the unit combo
237/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
238/// @param[in] format Printf format to display the value with
239/// @param[in] flags InputText flags to modify the behavior
240/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
241/// @return Returns if the value or unit was changed
242template<typename U>
243InputWithUnitChange InputFloat3WithUnit(const char* label, float itemWidth, float unitWidth,
244 float v[3], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
245 const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
246 int combo_popup_max_height_in_items = -1)
247{
248 return internal::InputWithUnit<ImGuiDataType_Float, 3, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
249}
250
251/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
252/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
253/// @param[in] itemWidth Width of the input element(s) + unit combo
254/// @param[in] unitWidth Width of the unit combo
255/// @param[in, out] v Pointer to the value to modify
256/// @param[in, out] combo_current_item The selected item in the unit combo
257/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
258/// @param[in] format Printf format to display the value with
259/// @param[in] flags InputText flags to modify the behavior
260/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
261/// @return Returns if the value or unit was changed
262template<typename U>
263InputWithUnitChange InputFloat4WithUnit(const char* label, float itemWidth, float unitWidth,
264 float v[4], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
265 const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
266 int combo_popup_max_height_in_items = -1)
267{
268 return internal::InputWithUnit<ImGuiDataType_Float, 4, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
269}
270
271/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
272/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
273/// @param[in] itemWidth Width of the input element(s) + unit combo
274/// @param[in] unitWidth Width of the unit combo
275/// @param[in, out] v Pointer to the value to modify
276/// @param[in, out] combo_current_item The selected item in the unit combo
277/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
278/// @param[in] step Step size of the InputText
279/// @param[in] step_fast Fast step size of the InputText
280/// @param[in] format Printf format to display the value with
281/// @param[in] flags InputText flags to modify the behavior
282/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
283/// @return Returns if the value or unit was changed
284template<typename U>
285InputWithUnitChange InputDoubleWithUnit(const char* label, float itemWidth, float unitWidth,
286 double* v, U& combo_current_item, const char* combo_items_separated_by_zeros,
287 double step = 0.0, double step_fast = 0.0, const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
288 int combo_popup_max_height_in_items = -1)
289{
290 return internal::InputWithUnit<ImGuiDataType_Double, 1, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, step, step_fast, format, flags, combo_popup_max_height_in_items);
291}
292
293/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
294/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
295/// @param[in] itemWidth Width of the input element(s) + unit combo
296/// @param[in] unitWidth Width of the unit combo
297/// @param[in, out] v Pointer to the value to modify
298/// @param[in, out] combo_current_item The selected item in the unit combo
299/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
300/// @param[in] format Printf format to display the value with
301/// @param[in] flags InputText flags to modify the behavior
302/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
303/// @return Returns if the value or unit was changed
304template<typename U>
305InputWithUnitChange InputDouble2WithUnit(const char* label, float itemWidth, float unitWidth,
306 double v[2], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
307 const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
308 int combo_popup_max_height_in_items = -1)
309{
310 return internal::InputWithUnit<ImGuiDataType_Double, 2, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
311}
312
313/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
314/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
315/// @param[in] itemWidth Width of the input element(s) + unit combo
316/// @param[in] unitWidth Width of the unit combo
317/// @param[in, out] v Pointer to the value to modify
318/// @param[in, out] combo_current_item The selected item in the unit combo
319/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
320/// @param[in] format Printf format to display the value with
321/// @param[in] flags InputText flags to modify the behavior
322/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
323/// @return Returns if the value or unit was changed
324template<typename U>
325InputWithUnitChange InputDouble3WithUnit(const char* label, float itemWidth, float unitWidth,
326 double v[3], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
327 const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
328 int combo_popup_max_height_in_items = -1)
329{
330 return internal::InputWithUnit<ImGuiDataType_Double, 3, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
331}
332
333/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
334/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
335/// @param[in] itemWidth Width of the input element(s) + unit combo
336/// @param[in] unitWidth Width of the unit combo
337/// @param[in, out] v Pointer to the value to modify
338/// @param[in, out] combo_current_item The selected item in the unit combo
339/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
340/// @param[in] format Printf format to display the value with
341/// @param[in] flags InputText flags to modify the behavior
342/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
343/// @return Returns if the value or unit was changed
344template<typename U>
345InputWithUnitChange InputDouble4WithUnit(const char* label, float itemWidth, float unitWidth,
346 double v[4], U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
347 const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
348 int combo_popup_max_height_in_items = -1)
349{
350 return internal::InputWithUnit<ImGuiDataType_Double, 4, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
351}
352
353// ###########################################################################################################
354
355/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
356/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
357/// @param[in] itemWidth Width of the input element(s) + unit combo
358/// @param[in] unitWidth Width of the unit combo
359/// @param[in, out] v Pointer to the value to modify
360/// @param[in] v_min Minimum value allowed
361/// @param[in] v_max Maximum value allowed
362/// @param[in, out] combo_current_item The selected item in the unit combo
363/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
364/// @param[in] step Step size of the InputText
365/// @param[in] step_fast Fast step size of the InputText
366/// @param[in] format Printf format to display the value with
367/// @param[in] flags InputText flags to modify the behavior
368/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
369/// @return Returns if the value or unit was changed
370template<typename U>
371InputWithUnitChange InputFloatLWithUnit(const char* label, float itemWidth, float unitWidth,
372 float* v, float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros,
373 float step = 0.0, float step_fast = 0.0, const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
374 int combo_popup_max_height_in_items = -1)
375{
376 auto change = internal::InputWithUnit<ImGuiDataType_Float, 1, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, step, step_fast, format, flags, combo_popup_max_height_in_items);
378 {
379 *v = std::clamp(*v, v_min, v_max);
380 }
381 return change;
382}
383
384/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
385/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
386/// @param[in] itemWidth Width of the input element(s) + unit combo
387/// @param[in] unitWidth Width of the unit combo
388/// @param[in, out] v Pointer to the value to modify
389/// @param[in] v_min Minimum value allowed
390/// @param[in] v_max Maximum value allowed
391/// @param[in, out] combo_current_item The selected item in the unit combo
392/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
393/// @param[in] format Printf format to display the value with
394/// @param[in] flags InputText flags to modify the behavior
395/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
396/// @return Returns if the value or unit was changed
397template<typename U>
398InputWithUnitChange InputFloat2LWithUnit(const char* label, float itemWidth, float unitWidth,
399 float v[2], float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
400 const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
401 int combo_popup_max_height_in_items = -1)
402{
403 auto change = internal::InputWithUnit<ImGuiDataType_Float, 2, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
405 {
406 for (size_t i = 0; i < 2; i++)
407 {
408 v[i] = std::clamp(v[i], v_min, v_max);
409 }
410 }
411 return change;
412}
413
414/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
415/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
416/// @param[in] itemWidth Width of the input element(s) + unit combo
417/// @param[in] unitWidth Width of the unit combo
418/// @param[in, out] v Pointer to the value to modify
419/// @param[in] v_min Minimum value allowed
420/// @param[in] v_max Maximum value allowed
421/// @param[in, out] combo_current_item The selected item in the unit combo
422/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
423/// @param[in] format Printf format to display the value with
424/// @param[in] flags InputText flags to modify the behavior
425/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
426/// @return Returns if the value or unit was changed
427template<typename U>
428InputWithUnitChange InputFloat3LWithUnit(const char* label, float itemWidth, float unitWidth,
429 float v[3], float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
430 const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
431 int combo_popup_max_height_in_items = -1)
432{
433 auto change = internal::InputWithUnit<ImGuiDataType_Float, 3, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
435 {
436 for (size_t i = 0; i < 3; i++)
437 {
438 v[i] = std::clamp(v[i], v_min, v_max);
439 }
440 }
441 return change;
442}
443
444/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
445/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
446/// @param[in] itemWidth Width of the input element(s) + unit combo
447/// @param[in] unitWidth Width of the unit combo
448/// @param[in, out] v Pointer to the value to modify
449/// @param[in] v_min Minimum value allowed
450/// @param[in] v_max Maximum value allowed
451/// @param[in, out] combo_current_item The selected item in the unit combo
452/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
453/// @param[in] format Printf format to display the value with
454/// @param[in] flags InputText flags to modify the behavior
455/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
456/// @return Returns if the value or unit was changed
457template<typename U>
458InputWithUnitChange InputFloat4LWithUnit(const char* label, float itemWidth, float unitWidth,
459 float v[4], float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
460 const char* format = "%.3f", ImGuiInputTextFlags flags = 0,
461 int combo_popup_max_height_in_items = -1)
462{
463 auto change = internal::InputWithUnit<ImGuiDataType_Float, 4, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
465 {
466 for (size_t i = 0; i < 4; i++)
467 {
468 v[i] = std::clamp(v[i], v_min, v_max);
469 }
470 }
471 return change;
472}
473
474/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
475/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
476/// @param[in] itemWidth Width of the input element(s) + unit combo
477/// @param[in] unitWidth Width of the unit combo
478/// @param[in, out] v Pointer to the value to modify
479/// @param[in] v_min Minimum value allowed
480/// @param[in] v_max Maximum value allowed
481/// @param[in, out] combo_current_item The selected item in the unit combo
482/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
483/// @param[in] step Step size of the InputText
484/// @param[in] step_fast Fast step size of the InputText
485/// @param[in] format Printf format to display the value with
486/// @param[in] flags InputText flags to modify the behavior
487/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
488/// @return Returns if the value or unit was changed
489template<typename U>
490InputWithUnitChange InputDoubleLWithUnit(const char* label, float itemWidth, float unitWidth,
491 double* v, double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros,
492 double step = 0.0, double step_fast = 0.0, const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
493 int combo_popup_max_height_in_items = -1)
494{
495 auto change = internal::InputWithUnit<ImGuiDataType_Double, 1, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, step, step_fast, format, flags, combo_popup_max_height_in_items);
497 {
498 *v = std::clamp(*v, v_min, v_max);
499 }
500 return change;
501}
502
503/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
504/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
505/// @param[in] itemWidth Width of the input element(s) + unit combo
506/// @param[in] unitWidth Width of the unit combo
507/// @param[in, out] v Pointer to the value to modify
508/// @param[in] v_min Minimum value allowed
509/// @param[in] v_max Maximum value allowed
510/// @param[in, out] combo_current_item The selected item in the unit combo
511/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
512/// @param[in] format Printf format to display the value with
513/// @param[in] flags InputText flags to modify the behavior
514/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
515/// @return Returns if the value or unit was changed
516template<typename U>
517InputWithUnitChange InputDouble2LWithUnit(const char* label, float itemWidth, float unitWidth,
518 double v[2], double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
519 const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
520 int combo_popup_max_height_in_items = -1)
521{
522 auto change = internal::InputWithUnit<ImGuiDataType_Double, 2, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
524 {
525 for (size_t i = 0; i < 2; i++)
526 {
527 v[i] = std::clamp(v[i], v_min, v_max);
528 }
529 }
530 return change;
531}
532
533/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
534/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
535/// @param[in] itemWidth Width of the input element(s) + unit combo
536/// @param[in] unitWidth Width of the unit combo
537/// @param[in, out] v Pointer to the value to modify
538/// @param[in] v_min Minimum value allowed
539/// @param[in] v_max Maximum value allowed
540/// @param[in, out] combo_current_item The selected item in the unit combo
541/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
542/// @param[in] format Printf format to display the value with
543/// @param[in] flags InputText flags to modify the behavior
544/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
545/// @return Returns if the value or unit was changed
546template<typename U>
547InputWithUnitChange InputDouble3LWithUnit(const char* label, float itemWidth, float unitWidth,
548 double v[3], double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
549 const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
550 int combo_popup_max_height_in_items = -1)
551{
552 auto change = internal::InputWithUnit<ImGuiDataType_Double, 3, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
554 {
555 for (size_t i = 0; i < 3; i++)
556 {
557 v[i] = std::clamp(v[i], v_min, v_max);
558 }
559 }
560 return change;
561}
562
563/// @brief Shows an InputText GUI element to modify the provided value and also set its unit
564/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
565/// @param[in] itemWidth Width of the input element(s) + unit combo
566/// @param[in] unitWidth Width of the unit combo
567/// @param[in, out] v Pointer to the value to modify
568/// @param[in] v_min Minimum value allowed
569/// @param[in] v_max Maximum value allowed
570/// @param[in, out] combo_current_item The selected item in the unit combo
571/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
572/// @param[in] format Printf format to display the value with
573/// @param[in] flags InputText flags to modify the behavior
574/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
575/// @return Returns if the value or unit was changed
576template<typename U>
577InputWithUnitChange InputDouble4LWithUnit(const char* label, float itemWidth, float unitWidth,
578 double v[4], double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
579 const char* format = "%.6f", ImGuiInputTextFlags flags = 0,
580 int combo_popup_max_height_in_items = -1)
581{
582 auto change = internal::InputWithUnit<ImGuiDataType_Double, 4, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, 0.0, 0.0, format, flags, combo_popup_max_height_in_items);
584 {
585 for (size_t i = 0; i < 4; i++)
586 {
587 v[i] = std::clamp(v[i], v_min, v_max);
588 }
589 }
590 return change;
591}
592
593// ###########################################################################################################
594
595/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
596/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
597/// @param[in] itemWidth Width of the input element(s) + unit combo
598/// @param[in] unitWidth Width of the unit combo
599/// @param[in, out] v Pointer to the value to modify
600/// @param[in] v_min Minimum value allowed
601/// @param[in] v_max Maximum value allowed
602/// @param[in, out] combo_current_item The selected item in the unit combo
603/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
604/// @param[in] format Printf format to display the value with
605/// @param[in] flags Slider flags to modify the behavior
606/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
607/// @return Returns if the value or unit was changed
608template<typename U>
609InputWithUnitChange SliderFloatWithUnit(const char* label, float itemWidth, float unitWidth,
610 float* v, float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros,
611 const char* format = "%.3f", ImGuiSliderFlags flags = 0,
612 int combo_popup_max_height_in_items = -1)
613{
614 return internal::SliderWithUnit<ImGuiDataType_Float, 1, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
615}
616
617/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
618/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
619/// @param[in] itemWidth Width of the input element(s) + unit combo
620/// @param[in] unitWidth Width of the unit combo
621/// @param[in, out] v Pointer to the value to modify
622/// @param[in] v_min Minimum value allowed
623/// @param[in] v_max Maximum value allowed
624/// @param[in, out] combo_current_item The selected item in the unit combo
625/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
626/// @param[in] format Printf format to display the value with
627/// @param[in] flags Slider flags to modify the behavior
628/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
629/// @return Returns if the value or unit was changed
630template<typename U>
631InputWithUnitChange SliderFloat2WithUnit(const char* label, float itemWidth, float unitWidth,
632 float v[2], float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
633 const char* format = "%.3f", ImGuiSliderFlags flags = 0,
634 int combo_popup_max_height_in_items = -1)
635{
636 return internal::SliderWithUnit<ImGuiDataType_Float, 2, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
637}
638
639/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
640/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
641/// @param[in] itemWidth Width of the input element(s) + unit combo
642/// @param[in] unitWidth Width of the unit combo
643/// @param[in, out] v Pointer to the value to modify
644/// @param[in] v_min Minimum value allowed
645/// @param[in] v_max Maximum value allowed
646/// @param[in, out] combo_current_item The selected item in the unit combo
647/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
648/// @param[in] format Printf format to display the value with
649/// @param[in] flags Slider flags to modify the behavior
650/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
651/// @return Returns if the value or unit was changed
652template<typename U>
653InputWithUnitChange SliderFloat3WithUnit(const char* label, float itemWidth, float unitWidth,
654 float v[3], float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
655 const char* format = "%.3f", ImGuiSliderFlags flags = 0,
656 int combo_popup_max_height_in_items = -1)
657{
658 return internal::SliderWithUnit<ImGuiDataType_Float, 3, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
659}
660
661/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
662/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
663/// @param[in] itemWidth Width of the input element(s) + unit combo
664/// @param[in] unitWidth Width of the unit combo
665/// @param[in, out] v Pointer to the value to modify
666/// @param[in] v_min Minimum value allowed
667/// @param[in] v_max Maximum value allowed
668/// @param[in, out] combo_current_item The selected item in the unit combo
669/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
670/// @param[in] format Printf format to display the value with
671/// @param[in] flags Slider flags to modify the behavior
672/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
673/// @return Returns if the value or unit was changed
674template<typename U>
675InputWithUnitChange SliderFloat4WithUnit(const char* label, float itemWidth, float unitWidth,
676 float v[4], float v_min, float v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
677 const char* format = "%.3f", ImGuiSliderFlags flags = 0,
678 int combo_popup_max_height_in_items = -1)
679{
680 return internal::SliderWithUnit<ImGuiDataType_Float, 4, float>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
681}
682
683/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
684/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
685/// @param[in] itemWidth Width of the input element(s) + unit combo
686/// @param[in] unitWidth Width of the unit combo
687/// @param[in, out] v Pointer to the value to modify
688/// @param[in] v_min Minimum value allowed
689/// @param[in] v_max Maximum value allowed
690/// @param[in, out] combo_current_item The selected item in the unit combo
691/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
692/// @param[in] format Printf format to display the value with
693/// @param[in] flags Slider flags to modify the behavior
694/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
695/// @return Returns if the value or unit was changed
696template<typename U>
697InputWithUnitChange SliderDoubleWithUnit(const char* label, float itemWidth, float unitWidth,
698 double* v, double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros,
699 const char* format = "%.6f", ImGuiSliderFlags flags = 0,
700 int combo_popup_max_height_in_items = -1)
701{
702 return internal::SliderWithUnit<ImGuiDataType_Double, 1, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
703}
704
705/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
706/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
707/// @param[in] itemWidth Width of the input element(s) + unit combo
708/// @param[in] unitWidth Width of the unit combo
709/// @param[in, out] v Pointer to the value to modify
710/// @param[in] v_min Minimum value allowed
711/// @param[in] v_max Maximum value allowed
712/// @param[in, out] combo_current_item The selected item in the unit combo
713/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
714/// @param[in] format Printf format to display the value with
715/// @param[in] flags Slider flags to modify the behavior
716/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
717/// @return Returns if the value or unit was changed
718template<typename U>
719InputWithUnitChange SliderDouble2WithUnit(const char* label, float itemWidth, float unitWidth,
720 double v[2], double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
721 const char* format = "%.6f", ImGuiSliderFlags flags = 0,
722 int combo_popup_max_height_in_items = -1)
723{
724 return internal::SliderWithUnit<ImGuiDataType_Double, 2, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
725}
726
727/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
728/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
729/// @param[in] itemWidth Width of the input element(s) + unit combo
730/// @param[in] unitWidth Width of the unit combo
731/// @param[in, out] v Pointer to the value to modify
732/// @param[in] v_min Minimum value allowed
733/// @param[in] v_max Maximum value allowed
734/// @param[in, out] combo_current_item The selected item in the unit combo
735/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
736/// @param[in] format Printf format to display the value with
737/// @param[in] flags Slider flags to modify the behavior
738/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
739/// @return Returns if the value or unit was changed
740template<typename U>
741InputWithUnitChange SliderDouble3WithUnit(const char* label, float itemWidth, float unitWidth,
742 double v[3], double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
743 const char* format = "%.6f", ImGuiSliderFlags flags = 0,
744 int combo_popup_max_height_in_items = -1)
745{
746 return internal::SliderWithUnit<ImGuiDataType_Double, 3, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
747}
748
749/// @brief Shows an Slider GUI element to modify the provided value and also set its unit
750/// @param[in] label Label to display beside the input. Has to be unique (use # to hide text afterwards to append an uid)
751/// @param[in] itemWidth Width of the input element(s) + unit combo
752/// @param[in] unitWidth Width of the unit combo
753/// @param[in, out] v Pointer to the value to modify
754/// @param[in] v_min Minimum value allowed
755/// @param[in] v_max Maximum value allowed
756/// @param[in, out] combo_current_item The selected item in the unit combo
757/// @param[in] combo_items_separated_by_zeros Items to display in the unit combo (separated by \0 and ends with \0\0)
758/// @param[in] format Printf format to display the value with
759/// @param[in] flags Slider flags to modify the behavior
760/// @param[in] combo_popup_max_height_in_items Maximum height of the combo in number of items
761/// @return Returns if the value or unit was changed
762template<typename U>
763InputWithUnitChange SliderDouble4WithUnit(const char* label, float itemWidth, float unitWidth,
764 double v[4], double v_min, double v_max, U& combo_current_item, const char* combo_items_separated_by_zeros, // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
765 const char* format = "%.6f", ImGuiSliderFlags flags = 0,
766 int combo_popup_max_height_in_items = -1)
767{
768 return internal::SliderWithUnit<ImGuiDataType_Double, 4, double>(label, itemWidth, unitWidth, v, combo_current_item, combo_items_separated_by_zeros, v_min, v_max, format, flags, combo_popup_max_height_in_items);
769}
770
771} // namespace gui::widgets
772} // namespace NAV
ImGui extensions.
InputWithUnitChange InputWithUnit(const char *label, float itemWidth, float unitWidth, T v[_Size], U &combo_current_item, const char *combo_items_separated_by_zeros, T step, T step_fast, const char *format, ImGuiInputTextFlags flags, int combo_popup_max_height_in_items)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange Unit(const char *label, float unitWidth, U &combo_current_item, const char *combo_items_separated_by_zeros, int combo_popup_max_height_in_items)
Shows a Unit input combo.
InputWithUnitChange SliderWithUnit(const char *label, float itemWidth, float unitWidth, T v[_Size], U &combo_current_item, const char *combo_items_separated_by_zeros, T min, T max, const char *format, ImGuiInputTextFlags flags, int combo_popup_max_height_in_items)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderDouble4WithUnit(const char *label, float itemWidth, float unitWidth, double v[4], double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderFloat4WithUnit(const char *label, float itemWidth, float unitWidth, float v[4], float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderDouble3WithUnit(const char *label, float itemWidth, float unitWidth, double v[3], double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloat3WithUnit(const char *label, float itemWidth, float unitWidth, float v[3], U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDoubleWithUnit(const char *label, float itemWidth, float unitWidth, double *v, U &combo_current_item, const char *combo_items_separated_by_zeros, double step=0.0, double step_fast=0.0, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDouble4LWithUnit(const char *label, float itemWidth, float unitWidth, double v[4], double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderFloatWithUnit(const char *label, float itemWidth, float unitWidth, float *v, float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderDoubleWithUnit(const char *label, float itemWidth, float unitWidth, double *v, double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloat2LWithUnit(const char *label, float itemWidth, float unitWidth, float v[2], float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange
Return value signaling that the input or the unit changed.
@ InputWithUnitChange_None
Nothing changed.
@ InputWithUnitChange_Unit
The Unit changed.
@ InputWithUnitChange_Input
The Input changed.
InputWithUnitChange InputDouble3WithUnit(const char *label, float itemWidth, float unitWidth, double v[3], U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDouble2WithUnit(const char *label, float itemWidth, float unitWidth, double v[2], U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderFloat3WithUnit(const char *label, float itemWidth, float unitWidth, float v[3], float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDouble2LWithUnit(const char *label, float itemWidth, float unitWidth, double v[2], double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloatLWithUnit(const char *label, float itemWidth, float unitWidth, float *v, float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, float step=0.0, float step_fast=0.0, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderDouble2WithUnit(const char *label, float itemWidth, float unitWidth, double v[2], double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloatWithUnit(const char *label, float itemWidth, float unitWidth, float *v, U &combo_current_item, const char *combo_items_separated_by_zeros, float step=0.0, float step_fast=0.0, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange SliderFloat2WithUnit(const char *label, float itemWidth, float unitWidth, float v[2], float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiSliderFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an Slider GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloat2WithUnit(const char *label, float itemWidth, float unitWidth, float v[2], U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDouble3LWithUnit(const char *label, float itemWidth, float unitWidth, double v[3], double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDouble4WithUnit(const char *label, float itemWidth, float unitWidth, double v[4], U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputDoubleLWithUnit(const char *label, float itemWidth, float unitWidth, double *v, double v_min, double v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, double step=0.0, double step_fast=0.0, const char *format="%.6f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloat4LWithUnit(const char *label, float itemWidth, float unitWidth, float v[4], float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloat3LWithUnit(const char *label, float itemWidth, float unitWidth, float v[3], float v_min, float v_max, U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
InputWithUnitChange InputFloat4WithUnit(const char *label, float itemWidth, float unitWidth, float v[4], U &combo_current_item, const char *combo_items_separated_by_zeros, const char *format="%.3f", ImGuiInputTextFlags flags=0, int combo_popup_max_height_in_items=-1)
Shows an InputText GUI element to modify the provided value and also set its unit.
const char * to_string(gui::widgets::PositionWithFrame::ReferenceFrame refFrame)
Converts the enum to a string.
std::string MakeComboItems()
Units separated by '\0' and terminated by double '\0'.