INSTINCT Code Coverage Report


Directory: src/
File: internal/gui/widgets/imgui_ex.cpp
Date: 2025-11-25 23:34:18
Exec Total Coverage
Lines: 0 149 0.0%
Functions: 0 47 0.0%
Branches: 0 68 0.0%

Line Branch Exec Source
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 #include "imgui_ex.hpp"
10
11 #include <imgui_stdlib.h>
12 #include <algorithm>
13
14 namespace ImGui
15 {
16
17 // ###########################################################################################################
18
19 ✗ bool DragDouble(const char* label, double* v, float v_speed, double v_min, double v_max, const char* format, ImGuiSliderFlags flags)
20 {
21 ✗ return DragScalar(label, ImGuiDataType_Double, v, v_speed, &v_min, &v_max, format, flags);
22 }
23
24 ✗ bool DragDouble2(const char* label, double v[2], float v_speed, double v_min, double v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
25 {
26 ✗ return DragScalarN(label, ImGuiDataType_Double, v, 2, v_speed, &v_min, &v_max, format, flags);
27 }
28
29 ✗ bool DragDouble3(const char* label, double v[3], float v_speed, double v_min, double v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
30 {
31 ✗ return DragScalarN(label, ImGuiDataType_Double, v, 3, v_speed, &v_min, &v_max, format, flags);
32 }
33
34 ✗ bool DragDouble4(const char* label, double v[4], float v_speed, double v_min, double v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
35 {
36 ✗ return DragScalarN(label, ImGuiDataType_Double, v, 4, v_speed, &v_min, &v_max, format, flags);
37 }
38
39 // ###########################################################################################################
40
41 ✗ bool DragLong(const char* label, int64_t* v, float v_speed, int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags)
42 {
43 ✗ return DragScalar(label, ImGuiDataType_S64, v, v_speed, &v_min, &v_max, format, flags);
44 }
45
46 ✗ bool DragLong2(const char* label, int64_t v[2], float v_speed, int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
47 {
48 ✗ return DragScalarN(label, ImGuiDataType_S64, v, 2, v_speed, &v_min, &v_max, format, flags);
49 }
50
51 ✗ bool DragLong3(const char* label, int64_t v[3], float v_speed, int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
52 {
53 ✗ return DragScalarN(label, ImGuiDataType_S64, v, 3, v_speed, &v_min, &v_max, format, flags);
54 }
55
56 ✗ bool DragLong4(const char* label, int64_t v[4], float v_speed, int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
57 {
58 ✗ return DragScalarN(label, ImGuiDataType_S64, v, 4, v_speed, &v_min, &v_max, format, flags);
59 }
60
61 // ###########################################################################################################
62
63 ✗ bool DragULong(const char* label, uint64_t* v, float v_speed, uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags)
64 {
65 ✗ return DragScalar(label, ImGuiDataType_U64, v, v_speed, &v_min, &v_max, format, flags);
66 }
67
68 ✗ bool DragULong2(const char* label, uint64_t v[2], float v_speed, uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
69 {
70 ✗ return DragScalarN(label, ImGuiDataType_U64, v, 2, v_speed, &v_min, &v_max, format, flags);
71 }
72
73 ✗ bool DragULong3(const char* label, uint64_t v[3], float v_speed, uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
74 {
75 ✗ return DragScalarN(label, ImGuiDataType_U64, v, 3, v_speed, &v_min, &v_max, format, flags);
76 }
77
78 ✗ bool DragULong4(const char* label, uint64_t v[4], float v_speed, uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
79 {
80 ✗ return DragScalarN(label, ImGuiDataType_U64, v, 4, v_speed, &v_min, &v_max, format, flags);
81 }
82
83 // ###########################################################################################################
84
85 ✗ bool SliderDouble(const char* label, double* v, double v_min, double v_max, const char* format, ImGuiSliderFlags flags)
86 {
87 ✗ return SliderScalar(label, ImGuiDataType_Double, v, &v_min, &v_max, format, flags);
88 }
89
90 ✗ bool SliderDouble2(const char* label, double v[2], double v_min, double v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
91 {
92 ✗ return SliderScalarN(label, ImGuiDataType_Double, v, 2, &v_min, &v_max, format, flags);
93 }
94
95 ✗ bool SliderDouble3(const char* label, double v[3], double v_min, double v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
96 {
97 ✗ return SliderScalarN(label, ImGuiDataType_Double, v, 3, &v_min, &v_max, format, flags);
98 }
99
100 ✗ bool SliderDouble4(const char* label, double v[4], double v_min, double v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
101 {
102 ✗ return SliderScalarN(label, ImGuiDataType_Double, v, 4, &v_min, &v_max, format, flags);
103 }
104
105 // ###########################################################################################################
106
107 ✗ bool SliderLong(const char* label, int64_t* v, int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags)
108 {
109 ✗ return SliderScalar(label, ImGuiDataType_S64, v, &v_min, &v_max, format, flags);
110 }
111
112 ✗ bool SliderLong2(const char* label, int64_t v[2], int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
113 {
114 ✗ return SliderScalarN(label, ImGuiDataType_S64, v, 2, &v_min, &v_max, format, flags);
115 }
116
117 ✗ bool SliderLong3(const char* label, int64_t v[3], int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
118 {
119 ✗ return SliderScalarN(label, ImGuiDataType_S64, v, 3, &v_min, &v_max, format, flags);
120 }
121
122 ✗ bool SliderLong4(const char* label, int64_t v[4], int64_t v_min, int64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
123 {
124 ✗ return SliderScalarN(label, ImGuiDataType_S64, v, 4, &v_min, &v_max, format, flags);
125 }
126
127 // ###########################################################################################################
128
129 ✗ bool SliderULong(const char* label, uint64_t* v, uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags)
130 {
131 ✗ return SliderScalar(label, ImGuiDataType_U64, v, &v_min, &v_max, format, flags);
132 }
133
134 ✗ bool SliderULong2(const char* label, uint64_t v[2], uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
135 {
136 ✗ return SliderScalarN(label, ImGuiDataType_U64, v, 2, &v_min, &v_max, format, flags);
137 }
138
139 ✗ bool SliderULong3(const char* label, uint64_t v[3], uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
140 {
141 ✗ return SliderScalarN(label, ImGuiDataType_U64, v, 3, &v_min, &v_max, format, flags);
142 }
143
144 ✗ bool SliderULong4(const char* label, uint64_t v[4], uint64_t v_min, uint64_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
145 {
146 ✗ return SliderScalarN(label, ImGuiDataType_U64, v, 4, &v_min, &v_max, format, flags);
147 }
148
149 // ###########################################################################################################
150
151 ✗ bool SliderUInt(const char* label, uint32_t* v, uint32_t v_min, uint32_t v_max, const char* format, ImGuiSliderFlags flags)
152 {
153 ✗ return SliderScalar(label, ImGuiDataType_U32, v, &v_min, &v_max, format, flags);
154 }
155
156 ✗ bool SliderUInt2(const char* label, uint32_t v[2], uint32_t v_min, uint32_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
157 {
158 ✗ return SliderScalarN(label, ImGuiDataType_U32, v, 2, &v_min, &v_max, format, flags);
159 }
160
161 ✗ bool SliderUInt3(const char* label, uint32_t v[3], uint32_t v_min, uint32_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
162 {
163 ✗ return SliderScalarN(label, ImGuiDataType_U32, v, 3, &v_min, &v_max, format, flags);
164 }
165
166 ✗ bool SliderUInt4(const char* label, uint32_t v[4], uint32_t v_min, uint32_t v_max, const char* format, ImGuiSliderFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
167 {
168 ✗ return SliderScalarN(label, ImGuiDataType_U32, v, 4, &v_min, &v_max, format, flags);
169 }
170
171 // ###########################################################################################################
172
173 ✗ bool InputDouble2(const char* label, double v[2], const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
174 {
175 ✗ return InputScalarN(label, ImGuiDataType_Double, v, 2, nullptr, nullptr, format, flags);
176 }
177
178 ✗ bool InputDouble3(const char* label, double v[3], const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
179 {
180 ✗ return InputScalarN(label, ImGuiDataType_Double, v, 3, nullptr, nullptr, format, flags);
181 }
182
183 ✗ bool InputDouble4(const char* label, double v[4], const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
184 {
185 ✗ return InputScalarN(label, ImGuiDataType_Double, v, 4, nullptr, nullptr, format, flags);
186 }
187
188 // ###########################################################################################################
189
190 ✗ bool InputFloatL(const char* label, float* v, float v_min, float v_max, float step, float step_fast, const char* format, ImGuiInputTextFlags flags)
191 {
192 ✗ if (InputFloat(label, v, step, step_fast, format, flags))
193 {
194 ✗ *v = std::clamp(*v, v_min, v_max);
195 ✗ return true;
196 }
197 ✗ return false;
198 }
199
200 ✗ bool InputFloat2L(const char* label, float v[2], float v_min, float v_max, const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
201 {
202 ✗ if (InputFloat2(label, v, format, flags))
203 {
204 ✗ for (size_t i = 0; i < 2; i++)
205 {
206 ✗ v[i] = std::clamp(v[i], v_min, v_max);
207 }
208
209 ✗ return true;
210 }
211 ✗ return false;
212 }
213
214 ✗ bool InputFloat3L(const char* label, float v[3], float v_min, float v_max, const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
215 {
216 ✗ if (InputFloat3(label, v, format, flags))
217 {
218 ✗ for (size_t i = 0; i < 3; i++)
219 {
220 ✗ v[i] = std::clamp(v[i], v_min, v_max);
221 }
222
223 ✗ return true;
224 }
225 ✗ return false;
226 }
227
228 ✗ bool InputFloat4L(const char* label, float v[4], float v_min, float v_max, const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
229 {
230 ✗ if (InputFloat4(label, v, format, flags))
231 {
232 ✗ for (size_t i = 0; i < 4; i++)
233 {
234 ✗ v[i] = std::clamp(v[i], v_min, v_max);
235 }
236
237 ✗ return true;
238 }
239 ✗ return false;
240 }
241
242 ✗ bool InputIntL(const char* label, int* v, int v_min, int v_max, int step, int step_fast, ImGuiInputTextFlags flags)
243 {
244 ✗ if (InputInt(label, v, step, step_fast, flags))
245 {
246 ✗ *v = std::clamp(*v, v_min, v_max);
247 ✗ return true;
248 }
249 ✗ return false;
250 }
251
252 ✗ bool InputInt2L(const char* label, int v[2], int v_min, int v_max, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
253 {
254 ✗ if (InputInt2(label, v, flags))
255 {
256 ✗ for (size_t i = 0; i < 2; i++)
257 {
258 ✗ v[i] = std::clamp(v[i], v_min, v_max);
259 }
260
261 ✗ return true;
262 }
263 ✗ return false;
264 }
265
266 ✗ bool InputInt3L(const char* label, int v[3], int v_min, int v_max, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
267 {
268 ✗ if (InputInt3(label, v, flags))
269 {
270 ✗ for (size_t i = 0; i < 3; i++)
271 {
272 ✗ v[i] = std::clamp(v[i], v_min, v_max);
273 }
274
275 ✗ return true;
276 }
277 ✗ return false;
278 }
279
280 ✗ bool InputInt4L(const char* label, int v[4], int v_min, int v_max, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
281 {
282 ✗ if (InputInt4(label, v, flags))
283 {
284 ✗ for (size_t i = 0; i < 4; i++)
285 {
286 ✗ v[i] = std::clamp(v[i], v_min, v_max);
287 }
288
289 ✗ return true;
290 }
291 ✗ return false;
292 }
293
294 ✗ bool InputDoubleL(const char* label, double* v, double v_min, double v_max, double step, double step_fast, const char* format, ImGuiInputTextFlags flags)
295 {
296 ✗ if (InputDouble(label, v, step, step_fast, format, flags))
297 {
298 ✗ *v = std::clamp(*v, v_min, v_max);
299 ✗ return true;
300 }
301 ✗ return false;
302 }
303
304 ✗ bool InputDouble2L(const char* label, double v[2], double v_min, double v_max, const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
305 {
306 ✗ if (InputDouble2(label, v, format, flags))
307 {
308 ✗ for (size_t i = 0; i < 2; i++)
309 {
310 ✗ v[i] = std::clamp(v[i], v_min, v_max);
311 }
312
313 ✗ return true;
314 }
315 ✗ return false;
316 }
317
318 ✗ bool InputDouble3L(const char* label, double v[3], double v_min, double v_max, const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
319 {
320 ✗ if (InputDouble3(label, v, format, flags))
321 {
322 ✗ for (size_t i = 0; i < 3; i++)
323 {
324 ✗ v[i] = std::clamp(v[i], v_min, v_max);
325 }
326
327 ✗ return true;
328 }
329 ✗ return false;
330 }
331
332 ✗ bool InputDouble4L(const char* label, double v[4], double v_min, double v_max, const char* format, ImGuiInputTextFlags flags) // NOLINT(hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-avoid-c-arrays)
333 {
334 ✗ if (InputDouble4(label, v, format, flags))
335 {
336 ✗ for (size_t i = 0; i < 4; i++)
337 {
338 ✗ v[i] = std::clamp(v[i], v_min, v_max);
339 }
340
341 ✗ return true;
342 }
343 ✗ return false;
344 }
345
346 ✗ bool InputTextL(const char* label, std::string* str, size_t limit, ImGuiInputTextFlags flags)
347 {
348 ✗ std::pair<std::string, size_t> oldTextLimit = std::make_pair(*str, limit);
349 ✗ auto callback = [](ImGuiInputTextCallbackData* data) -> int {
350 ✗ if (data->EventFlag == ImGuiInputTextFlags_CallbackEdit)
351 {
352 ✗ auto* oldTextLimit = static_cast<std::pair<std::string, size_t>*>(data->UserData);
353 ✗ int limit = static_cast<int>(oldTextLimit->second);
354 ✗ if (data->BufTextLen > limit)
355 {
356 ✗ strncpy(data->Buf, oldTextLimit->first.data(), oldTextLimit->first.length() + 1);
357 ✗ data->BufTextLen = static_cast<int>(oldTextLimit->first.length());
358 ✗ data->BufDirty = true;
359 ✗ if (data->CursorPos != limit) { data->CursorPos--; }
360 }
361 }
362 ✗ return 0;
363 };
364
365 ✗ return InputText(label, str, flags | ImGuiInputTextFlags_CallbackEdit, callback, &oldTextLimit);
366 ✗ }
367
368 } // namespace ImGui
369
370 ✗ bool operator==(const ImVec4& lhs, const ImVec4& rhs)
371 {
372 ✗ return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z && lhs.w == rhs.w;
373 }
374
375 ✗ bool operator!=(const ImVec4& lhs, const ImVec4& rhs)
376 {
377 ✗ return lhs.x != rhs.x || lhs.y != rhs.y || lhs.z != rhs.z || lhs.w != rhs.w;
378 }
379