realsense-ui-advanced-mode.h
Go to the documentation of this file.
1 // License: Apache 2.0. See LICENSE file in root directory.
2 // Copyright(c) 2017 Intel Corporation. All Rights Reserved.
3 
4 #pragma once
5 
7 #include <types.h>
8 
9 #define TEXT_BUFF_SIZE 1024
10 
11 template<class T>
12 bool* draw_edit_button(const char* id, T val, std::string*& val_str)
13 {
14  static std::map<const char*, bool> edit_mode;
15  static std::map<const char*, std::string> edit_value;
16 
19  if (!edit_mode[id])
20  {
21  std::string edit_id = rs2::to_string() << u8"\uf044##" << id;
22  ImGui::PushStyleColor(ImGuiCol_Text, { 0.8f, 0.8f, 0.8f, 1.f });
23  ImGui::PushStyleColor(ImGuiCol_TextSelectedBg, { 0.8f, 0.8f, 0.8f, 1.f } );
24  ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 1.f,1.f,1.f,0.f });
25  ImGui::PushStyleColor(ImGuiCol_Button, { 1.f,1.f,1.f,0.f });
26  if (ImGui::Button(edit_id.c_str(), { 20, 20 }))
27  {
28  edit_value[id] = rs2::to_string() << val;
29  edit_mode[id] = true;
30  }
32  {
33  ImGui::SetTooltip("Enter text-edit mode");
34  }
36  }
37  else
38  {
39  std::string edit_id = rs2::to_string() << u8"\uf044##" << id;
40  ImGui::PushStyleColor(ImGuiCol_Text, { 0.8f, 0.8f, 1.f, 1.f });
41  ImGui::PushStyleColor(ImGuiCol_TextSelectedBg, { 0.8f, 0.8f, 1.f, 1.f });
42  ImGui::PushStyleColor(ImGuiCol_ButtonHovered, { 1.f,1.f,1.f,0.f });
43  ImGui::PushStyleColor(ImGuiCol_Button, { 1.f,1.f,1.f,0.f });
44  if (ImGui::Button(edit_id.c_str(), { 20, 20 }))
45  {
46  edit_mode[id] = false;
47  }
49  {
50  ImGui::SetTooltip("Exit text-edit mode");
51  }
53  }
54 
55  val_str = &edit_value[id];
56  return &edit_mode[id];
57 }
58 
59 inline bool string_to_int(const std::string& str, float& result)
60 {
61  try
62  {
63  std::size_t lastChar;
64  result = std::stof(str, &lastChar);
65  return lastChar == str.size();
66  }
67  catch (std::invalid_argument&)
68  {
69  return false;
70  }
71  catch (std::out_of_range&)
72  {
73  return false;
74  }
75 }
76 
77 template<class T, class S>
78 inline void slider_int(std::string& error_message, const char* id, T* val, S T::* field, bool& to_set)
79 {
80  ImGui::Text("%s", id);
81  int temp = val->*field;
82  int min = (val + 1)->*field;
83  int max = (val + 2)->*field;
84 
85  std::string* val_ptr;
86  auto edit_mode = draw_edit_button(id, temp, val_ptr);
87 
88  std::string slider_id = rs2::to_string() << "##" << id;
89 
90  if (*edit_mode)
91  {
92  char buff[TEXT_BUFF_SIZE];
93  memset(buff, 0, TEXT_BUFF_SIZE);
94  strcpy(buff, val_ptr->c_str());
95  if (ImGui::InputText(slider_id.c_str(), buff, TEXT_BUFF_SIZE,
97  {
98  float new_value;
99  if (!string_to_int(buff, new_value))
100  {
101  error_message = "Invalid numeric input!";
102  }
103  else
104  {
105  val->*field = static_cast<S>(new_value);
106  to_set = true;
107  }
108 
109  *edit_mode = false;
110  }
111  *val_ptr = buff;
112  }
113  else if (ImGui::SliderInt(slider_id.c_str(), &temp, min, max))
114  {
115  val->*field = temp;
116  to_set = true;
117  }
118 }
119 
120 template<class T, class S>
121 inline void checkbox(const char* id, T* val, S T::* f, bool& to_set)
122 {
123  bool temp = (val->*f) > 0;
124 
125  if (ImGui::Checkbox(id, &temp))
126  {
127  val->*f = temp ? 1 : 0;
128  to_set = true;
129  }
130 }
131 
132 template<class T, class S>
133 inline void slider_float(std::string& error_message, const char* id, T* val, S T::* field, bool& to_set)
134 {
135  ImGui::Text("%s", id);
136  float temp = float(val->*field);
137  float min = float((val + 1)->*field);
138  float max = float((val + 2)->*field);
139 
140  std::string* val_ptr;
141  auto edit_mode = draw_edit_button(id, temp, val_ptr);
142 
143 
144  std::string slider_id = rs2::to_string() << "##" << id;
145 
146  if (*edit_mode)
147  {
148  char buff[TEXT_BUFF_SIZE];
149  memset(buff, 0, TEXT_BUFF_SIZE);
150  strcpy(buff, val_ptr->c_str());
151  if (ImGui::InputText(slider_id.c_str(), buff, TEXT_BUFF_SIZE,
153  {
154  float new_value;
155  if (!string_to_int(buff, new_value))
156  {
157  error_message = "Invalid numeric input!";
158  }
159  else
160  {
161  val->*field = static_cast<S>(new_value);
162  to_set = true;
163  }
164 
165  *edit_mode = false;
166  }
167  *val_ptr = buff;
168  }
169  else if (ImGui::SliderFloat(slider_id.c_str(), &temp, min, max))
170  {
171  val->*field = static_cast<S>(temp);
172  to_set = true;
173  }
174 }
175 
176 template<class T>
178 {
179  using group_type = T;
180  T vals[3];
181  bool update = false;
182 };
183 
185 {
199 };
200 
202  advanced_mode_control& amc, bool& get_curr_advanced_controls, bool& was_set, std::string& error_message)
203 {
204  if (get_curr_advanced_controls)
205  {
206  for (int k = 0; k < 3; ++k)
207  {
208  // Get Current Algo Control Values
209  amc.depth_controls.vals[k] = advanced.get_depth_control(k);
210  amc.rsm.vals[k] = advanced.get_rsm(k);
211  amc.rsvc.vals[k] = advanced.get_rau_support_vector_control(k);
212  amc.color_control.vals[k] = advanced.get_color_control(k);
213  amc.rctc.vals[k] = advanced.get_rau_thresholds_control(k);
214  amc.sctc.vals[k] = advanced.get_slo_color_thresholds_control(k);
215  amc.spc.vals[k] = advanced.get_slo_penalty_control(k);
216  amc.cc.vals[k] = advanced.get_color_correction(k);
217  amc.depth_table.vals[k] = advanced.get_depth_table(k);
218  amc.census.vals[k] = advanced.get_census(k);
219  amc.amp_factor.vals[k] = advanced.get_amp_factor(k);
220  }
221  amc.hdad.vals[0] = advanced.get_hdad();
222  amc.hdad.vals[1] = amc.hdad.vals[0]; //setting min/max to the same value
223  amc.hdad.vals[2] = amc.hdad.vals[0]; //setting min/max to the same value
224  amc.ae.vals[0] = advanced.get_ae_control();
225  amc.ae.vals[1] = amc.ae.vals[0]; //setting min/max to the same value
226  amc.ae.vals[2] = amc.ae.vals[0]; //setting min/max to the same value
227  get_curr_advanced_controls = false;
228  }
229 
230  if (ImGui::TreeNode("Depth Control"))
231  {
233 
234  auto to_set = false;
235 
236  slider_int(error_message, "DS Second Peak Threshold", amc.depth_controls.vals, &STDepthControlGroup::deepSeaSecondPeakThreshold, to_set);
237  slider_int(error_message, "DS Neighbor Threshold", amc.depth_controls.vals, &STDepthControlGroup::deepSeaNeighborThreshold, to_set);
238  slider_int(error_message, "DS Median Threshold", amc.depth_controls.vals, &STDepthControlGroup::deepSeaMedianThreshold, to_set);
239  slider_int(error_message, "Estimate Median Increment", amc.depth_controls.vals, &STDepthControlGroup::plusIncrement, to_set);
240  slider_int(error_message, "Estimate Median Decrement", amc.depth_controls.vals, &STDepthControlGroup::minusDecrement, to_set);
241  slider_int(error_message, "Score Minimum Threshold", amc.depth_controls.vals, &STDepthControlGroup::scoreThreshA, to_set);
242  slider_int(error_message, "Score Maximum Threshold", amc.depth_controls.vals, &STDepthControlGroup::scoreThreshB, to_set);
243  slider_int(error_message, "DS LR Threshold", amc.depth_controls.vals, &STDepthControlGroup::lrAgreeThreshold, to_set);
244  slider_int(error_message, "Texture Count Threshold", amc.depth_controls.vals, &STDepthControlGroup::textureCountThreshold, to_set);
245  slider_int(error_message, "Texture Difference Threshold", amc.depth_controls.vals, &STDepthControlGroup::textureDifferenceThreshold, to_set);
246 
248 
249  if (to_set)
250  {
251  try
252  {
253  advanced.set_depth_control(amc.depth_controls.vals[0]);
254  }
255  catch (...)
256  {
257  ImGui::TreePop();
258  throw;
259  }
260  was_set = true;
261  }
262 
263  ImGui::TreePop();
264  }
265 
266  if (ImGui::TreeNode("Rsm"))
267  {
269 
270  auto to_set = false;
271 
272  checkbox("RSM Bypass", amc.rsm.vals, &STRsm::rsmBypass, to_set);
273  slider_float(error_message, "Disparity Difference Threshold", amc.rsm.vals, &STRsm::diffThresh, to_set);
274  slider_float(error_message, "SLO RAU Difference Threshold", amc.rsm.vals, &STRsm::sloRauDiffThresh, to_set);
275  slider_int(error_message, "Remove Threshold", amc.rsm.vals, &STRsm::removeThresh, to_set);
276 
278 
279  if (to_set)
280  {
281  try
282  {
283  advanced.set_rsm(amc.rsm.vals[0]);
284  }
285  catch (...)
286  {
287  ImGui::TreePop();
288  throw;
289  }
290  was_set = true;
291  }
292 
293  ImGui::TreePop();
294  }
295 
296 
297  if (ImGui::TreeNode("Rau Support Vector Control"))
298  {
300 
301  auto to_set = false;
302 
303  slider_int(error_message, "Min West", amc.rsvc.vals, &STRauSupportVectorControl::minWest, to_set);
304  slider_int(error_message, "Min East", amc.rsvc.vals, &STRauSupportVectorControl::minEast, to_set);
305  slider_int(error_message, "Min WE Sum", amc.rsvc.vals, &STRauSupportVectorControl::minWEsum, to_set);
306  slider_int(error_message, "Min North", amc.rsvc.vals, &STRauSupportVectorControl::minNorth, to_set);
307  slider_int(error_message, "Min South", amc.rsvc.vals, &STRauSupportVectorControl::minSouth, to_set);
308  slider_int(error_message, "Min NS Sum", amc.rsvc.vals, &STRauSupportVectorControl::minNSsum, to_set);
309  slider_int(error_message, "U Shrink", amc.rsvc.vals, &STRauSupportVectorControl::uShrink, to_set);
310  slider_int(error_message, "V Shrink", amc.rsvc.vals, &STRauSupportVectorControl::vShrink, to_set);
311 
313 
314  if (to_set)
315  {
316  try
317  {
318  advanced.set_rau_support_vector_control(amc.rsvc.vals[0]);
319  }
320  catch (...)
321  {
322  ImGui::TreePop();
323  throw;
324  }
325  was_set = true;
326  }
327 
328  ImGui::TreePop();
329  }
330 
331  if (ImGui::TreeNode("Color Control"))
332  {
334 
335  auto to_set = false;
336 
337  checkbox("Disable SAD Color", amc.color_control.vals, &STColorControl::disableSADColor, to_set);
338  checkbox("Disable RAU Color", amc.color_control.vals, &STColorControl::disableRAUColor, to_set);
339  checkbox("Disable SLO Right Color", amc.color_control.vals, &STColorControl::disableSLORightColor, to_set);
340  checkbox("Disable SLO Left Color", amc.color_control.vals, &STColorControl::disableSLOLeftColor, to_set);
341  checkbox("Disable SAD Normalize", amc.color_control.vals, &STColorControl::disableSADNormalize, to_set);
342 
344 
345  if (to_set)
346  {
347  try
348  {
349  advanced.set_color_control(amc.color_control.vals[0]);
350  }
351  catch (...)
352  {
353  ImGui::TreePop();
354  throw;
355  }
356  was_set = true;
357  }
358 
359  ImGui::TreePop();
360  }
361 
362  if (ImGui::TreeNode("Rau Color Thresholds Control"))
363  {
365 
366  auto to_set = false;
367 
368  slider_int(error_message, "Diff Threshold Red", amc.rctc.vals, &STRauColorThresholdsControl::rauDiffThresholdRed, to_set);
369  slider_int(error_message, "Diff Threshold Green", amc.rctc.vals, &STRauColorThresholdsControl::rauDiffThresholdGreen, to_set);
370  slider_int(error_message, "Diff Threshold Blue", amc.rctc.vals, &STRauColorThresholdsControl::rauDiffThresholdBlue, to_set);
371 
373 
374  if (to_set)
375  {
376  try
377  {
378  advanced.set_rau_thresholds_control(amc.rctc.vals[0]);
379  }
380  catch (...)
381  {
382  ImGui::TreePop();
383  throw;
384  }
385  was_set = true;
386  }
387 
388  ImGui::TreePop();
389  }
390 
391  if (ImGui::TreeNode("SLO Color Thresholds Control"))
392  {
394 
395  auto to_set = false;
396 
397  slider_int(error_message, "Diff Threshold Red", amc.sctc.vals, &STSloColorThresholdsControl::diffThresholdRed, to_set);
398  slider_int(error_message, "Diff Threshold Green", amc.sctc.vals, &STSloColorThresholdsControl::diffThresholdGreen, to_set);
399  slider_int(error_message, "Diff Threshold Blue", amc.sctc.vals, &STSloColorThresholdsControl::diffThresholdBlue, to_set);
400 
402 
403  if (to_set)
404  {
405  try
406  {
407  advanced.set_slo_color_thresholds_control(amc.sctc.vals[0]);
408  }
409  catch (...)
410  {
411  ImGui::TreePop();
412  throw;
413  }
414  was_set = true;
415  }
416 
417  ImGui::TreePop();
418  }
419 
420  if (ImGui::TreeNode("SLO Penalty Control"))
421  {
423 
424  auto to_set = false;
425 
426  slider_int(error_message, "K1 Penalty", amc.spc.vals, &STSloPenaltyControl::sloK1Penalty, to_set);
427  slider_int(error_message, "K2 Penalty", amc.spc.vals, &STSloPenaltyControl::sloK2Penalty, to_set);
428  slider_int(error_message, "K1 Penalty Mod1", amc.spc.vals, &STSloPenaltyControl::sloK1PenaltyMod1, to_set);
429  slider_int(error_message, "K1 Penalty Mod2", amc.spc.vals, &STSloPenaltyControl::sloK1PenaltyMod2, to_set);
430  slider_int(error_message, "K2 Penalty Mod1", amc.spc.vals, &STSloPenaltyControl::sloK2PenaltyMod1, to_set);
431  slider_int(error_message, "K2 Penalty Mod2", amc.spc.vals, &STSloPenaltyControl::sloK2PenaltyMod2, to_set);
432 
434 
435  if (to_set)
436  {
437  try
438  {
439  advanced.set_slo_penalty_control(amc.spc.vals[0]);
440  }
441  catch (...)
442  {
443  ImGui::TreePop();
444  throw;
445  }
446  was_set = true;
447  }
448 
449  ImGui::TreePop();
450  }
451 
452  if (ImGui::TreeNode("HDAD"))
453  {
455 
456  auto to_set = false;
457 
458  checkbox("Ignore SAD", amc.hdad.vals, &STHdad::ignoreSAD, to_set);
459 
460  // TODO: Not clear from documents what is the valid range:
461  slider_float(error_message, "AD Lambda", amc.hdad.vals, &STHdad::lambdaAD, to_set);
462  slider_float(error_message, "Census Lambda", amc.hdad.vals, &STHdad::lambdaCensus, to_set);
463 
465 
466  if (to_set)
467  {
468  try
469  {
470  advanced.set_hdad(amc.hdad.vals[0]);
471  }
472  catch (...)
473  {
474  ImGui::TreePop();
475  throw;
476  }
477  was_set = true;
478  }
479 
480  ImGui::TreePop();
481  }
482 
483  if (ImGui::TreeNode("Color Correction"))
484  {
486 
487  auto to_set = false;
488 
489  slider_float(error_message, "Color Correction 1", amc.cc.vals, &STColorCorrection::colorCorrection1, to_set);
490  slider_float(error_message, "Color Correction 2", amc.cc.vals, &STColorCorrection::colorCorrection2, to_set);
491  slider_float(error_message, "Color Correction 3", amc.cc.vals, &STColorCorrection::colorCorrection3, to_set);
492  slider_float(error_message, "Color Correction 4", amc.cc.vals, &STColorCorrection::colorCorrection4, to_set);
493  slider_float(error_message, "Color Correction 5", amc.cc.vals, &STColorCorrection::colorCorrection5, to_set);
494  slider_float(error_message, "Color Correction 6", amc.cc.vals, &STColorCorrection::colorCorrection6, to_set);
495  slider_float(error_message, "Color Correction 7", amc.cc.vals, &STColorCorrection::colorCorrection7, to_set);
496  slider_float(error_message, "Color Correction 8", amc.cc.vals, &STColorCorrection::colorCorrection8, to_set);
497  slider_float(error_message, "Color Correction 9", amc.cc.vals, &STColorCorrection::colorCorrection9, to_set);
498  slider_float(error_message, "Color Correction 10",amc.cc.vals, &STColorCorrection::colorCorrection10, to_set);
499  slider_float(error_message, "Color Correction 11",amc.cc.vals, &STColorCorrection::colorCorrection11, to_set);
500  slider_float(error_message, "Color Correction 12",amc.cc.vals, &STColorCorrection::colorCorrection12, to_set);
501 
503 
504  if (to_set)
505  {
506  try
507  {
508  advanced.set_color_correction(amc.cc.vals[0]);
509  }
510  catch (...)
511  {
512  ImGui::TreePop();
513  throw;
514  }
515  was_set = true;
516  }
517 
518  ImGui::TreePop();
519  }
520 
521  if (ImGui::TreeNode("Depth Table"))
522  {
524 
525  auto to_set = false;
526 
527  slider_float(error_message, "Depth Units", amc.depth_table.vals, &STDepthTableControl::depthUnits, to_set);
528  slider_float(error_message, "Depth Clamp Min", amc.depth_table.vals, &STDepthTableControl::depthClampMin, to_set);
529  slider_float(error_message, "Depth Clamp Max", amc.depth_table.vals, &STDepthTableControl::depthClampMax, to_set);
530  slider_float(error_message, "Disparity Mode", amc.depth_table.vals, &STDepthTableControl::disparityMode, to_set);
531  slider_float(error_message, "Disparity Shift", amc.depth_table.vals, &STDepthTableControl::disparityShift, to_set);
532 
534 
535  if (to_set)
536  {
537  try
538  {
539  advanced.set_depth_table(amc.depth_table.vals[0]);
540  }
541  catch (...)
542  {
543  ImGui::TreePop();
544  throw;
545  }
546  was_set = true;
547  }
548 
549  ImGui::TreePop();
550  }
551 
552  if (ImGui::TreeNode("AE Control"))
553  {
555 
556  auto to_set = false;
557 
558  slider_float(error_message, "Mean Intensity Set Point", amc.ae.vals, &STAEControl::meanIntensitySetPoint, to_set);
559 
561 
562  if (to_set)
563  {
564  try
565  {
566  advanced.set_ae_control(amc.ae.vals[0]);
567  }
568  catch (...)
569  {
570  ImGui::TreePop();
571  throw;
572  }
573  was_set = true;
574  }
575 
576  ImGui::TreePop();
577  }
578 
579  if (ImGui::TreeNode("Census Enable Reg"))
580  {
582 
583  auto to_set = false;
584 
585  slider_float(error_message, "u-Diameter", amc.census.vals, &STCensusRadius::uDiameter, to_set);
586  slider_float(error_message, "v-Diameter", amc.census.vals, &STCensusRadius::vDiameter, to_set);
587 
589 
590  if (to_set)
591  {
592  try
593  {
594  advanced.set_census(amc.census.vals[0]);
595  }
596  catch (...)
597  {
598  ImGui::TreePop();
599  throw;
600  }
601  was_set = true;
602  }
603 
604  ImGui::TreePop();
605  }
606 
607  if (ImGui::TreeNode("Disparity Modulation"))
608  {
610 
611  auto to_set = false;
612 
613  slider_float(error_message, "A Factor", amc.amp_factor.vals, &STAFactor::amplitude, to_set);
614 
616 
617  if (to_set)
618  {
619  try
620  {
621  advanced.set_amp_factor(amc.amp_factor.vals[0]);
622  }
623  catch (...)
624  {
625  ImGui::TreePop();
626  throw;
627  }
628  was_set = true;
629  }
630 
631  ImGui::TreePop();
632  }
633 }
void set_color_control(const STColorControl &group)
void set_slo_color_thresholds_control(const STSloColorThresholdsControl &group)
float stof(const std::string &value)
IMGUI_API void SetTooltip(const char *fmt,...) IM_PRINTFARGS(1)
Definition: imgui.cpp:3288
void set_slo_penalty_control(const STSloPenaltyControl &group)
void slider_int(std::string &error_message, const char *id, T *val, S T::*field, bool &to_set)
STAEControl get_ae_control(int mode=0) const
void set_ae_control(const STAEControl &group)
void set_census(const STCensusRadius &group)
UINT8_TYPE u8
Definition: sqlite3.c:11450
STColorControl get_color_control(int mode=0) const
void slider_float(std::string &error_message, const char *id, T *val, S T::*field, bool &to_set)
GLsizei const GLchar *const * string
void checkbox(const char *id, T *val, S T::*f, bool &to_set)
#define TEXT_BUFF_SIZE
param_group< STSloPenaltyControl > spc
IMGUI_API bool InputText(const char *label, char *buf, size_t buf_size, ImGuiInputTextFlags flags=0, ImGuiTextEditCallback callback=NULL, void *user_data=NULL)
Definition: imgui.cpp:8216
IMGUI_API bool SliderInt(const char *label, int *v, int v_min, int v_max, const char *display_format="%.0f", bool render_bg=false)
Definition: imgui.cpp:6687
IMGUI_API bool TreeNode(const char *label)
Definition: imgui.cpp:6070
GLenum GLuint id
void set_depth_control(const STDepthControlGroup &group)
GLuint GLfloat * val
param_group< STRauSupportVectorControl > rsvc
IMGUI_API void SameLine(float pos_x=0.0f, float spacing_w=-1.0f)
Definition: imgui.cpp:9246
GLdouble f
void set_depth_table(const STDepthTableControl &group)
STDepthControlGroup get_depth_control(int mode=0) const
param_group< STSloColorThresholdsControl > sctc
STCensusRadius get_census(int mode=0) const
param_group< STRauColorThresholdsControl > rctc
void set_rau_thresholds_control(const STRauColorThresholdsControl &group)
void draw_advanced_mode_controls(rs400::advanced_mode &advanced, advanced_mode_control &amc, bool &get_curr_advanced_controls, bool &was_set, std::string &error_message)
param_group< STAFactor > amp_factor
param_group< STCensusRadius > census
uint32_t removeThresh
IMGUI_API void SetCursorPosX(float x)
Definition: imgui.cpp:5101
IMGUI_API void PushItemWidth(float item_width)
Definition: imgui.cpp:4486
bool string_to_int(const std::string &str, float &result)
IMGUI_API void Text(const char *fmt,...) IM_PRINTFARGS(1)
Definition: imgui.cpp:5223
IMGUI_API bool Button(const char *label, const ImVec2 &size=ImVec2(0, 0))
Definition: imgui.cpp:5573
STHdad get_hdad(int mode=0) const
param_group< STAEControl > ae
IMGUI_API void PushStyleColor(ImGuiCol idx, const ImVec4 &col)
Definition: imgui.cpp:4599
param_group< STDepthControlGroup > depth_controls
void set_hdad(const STHdad &group)
STAFactor get_amp_factor(int mode=0) const
STSloColorThresholdsControl get_slo_color_thresholds_control(int mode=0) const
STColorCorrection get_color_correction(int mode=0) const
IMGUI_API bool SliderFloat(const char *label, float *v, float v_min, float v_max, const char *display_format="%.3f", float power=1.0f, bool render_bg=false)
Definition: imgui.cpp:6570
param_group< STColorCorrection > cc
IMGUI_API void PopItemWidth()
Definition: imgui.cpp:4507
IMGUI_API void TreePop()
Definition: imgui.cpp:9530
STRauColorThresholdsControl get_rau_thresholds_control(int mode=0) const
param_group< STColorControl > color_control
int min(int a, int b)
Definition: lz4s.c:73
void set_rau_support_vector_control(const STRauSupportVectorControl &group)
IMGUI_API bool Checkbox(const char *label, bool *v)
Definition: imgui.cpp:7269
void set_color_correction(const STColorCorrection &group)
bool * draw_edit_button(const char *id, T val, std::string *&val_str)
void set_rsm(const STRsm &group)
uint32_t rsmBypass
param_group< STDepthTableControl > depth_table
STSloPenaltyControl get_slo_penalty_control(int mode=0) const
void set_amp_factor(const STAFactor &group)
STDepthTableControl get_depth_table(int mode=0) const
GLuint64EXT * result
Definition: glext.h:10921
IMGUI_API bool IsItemHovered()
Definition: imgui.cpp:3200
STRsm get_rsm(int mode=0) const
STRauSupportVectorControl get_rau_support_vector_control(int mode=0) const
IMGUI_API void PopStyleColor(int count=1)
Definition: imgui.cpp:4609
std::string to_string(T value)


librealsense2
Author(s): Sergey Dorodnicov , Doron Hirshberg , Mark Horn , Reagan Lopez , Itay Carpis
autogenerated on Mon May 3 2021 02:47:39