From 9ef0dea80ef67d739c11cd3d88f12250ddecf612 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 26 Apr 2022 18:58:49 +0200 Subject: tracker/trackhat: merge gain/exposure sliders --- tracker-trackhat/camera.cpp | 2 +- tracker-trackhat/dialog.cpp | 7 ++-- tracker-trackhat/dialog.ui | 83 ++++++++++-------------------------------- tracker-trackhat/lang/nl_NL.ts | 4 -- tracker-trackhat/lang/ru_RU.ts | 4 -- tracker-trackhat/lang/stub.ts | 4 -- tracker-trackhat/lang/zh_CN.ts | 4 -- tracker-trackhat/settings.cpp | 12 +++++- tracker-trackhat/trackhat.hpp | 8 +++- 9 files changed, 40 insertions(+), 88 deletions(-) diff --git a/tracker-trackhat/camera.cpp b/tracker-trackhat/camera.cpp index 033fd532..94b81272 100644 --- a/tracker-trackhat/camera.cpp +++ b/tracker-trackhat/camera.cpp @@ -54,7 +54,7 @@ trackhat_camera::trackhat_camera() s.set_raii_dtor_state(false); t.set_raii_dtor_state(false); - for (auto* slider : { &t.exposure, &t.gain, &t.threshold, }) + for (auto* slider : { &t.exposure, &t.threshold, }) { QObject::connect(slider, options::value_::value_changed(), &sig, &trackhat_impl::setting_receiver::settings_changed, diff --git a/tracker-trackhat/dialog.cpp b/tracker-trackhat/dialog.cpp index 2a7bf119..19563143 100644 --- a/tracker-trackhat/dialog.cpp +++ b/tracker-trackhat/dialog.cpp @@ -31,16 +31,15 @@ trackhat_dialog::trackhat_dialog() // exposure + ui.exposure_slider->setMinimum((int)t.exposure->min()); + ui.exposure_slider->setMaximum((int)t.exposure->max()); + tie_setting(t.exposure, ui.exposure_slider); - tie_setting(t.gain, ui.gain_slider); ui.exposure_label->setValue((int)*t.exposure); - ui.gain_label->setValue((int)*t.gain); ui.point_filter_limit_label->setValue(*t.point_filter_limit); connect(&t.exposure, value_::value_changed(), ui.exposure_label, [this] { ui.exposure_label->setValue((int)*t.exposure); }, Qt::QueuedConnection); - connect(&t.gain, value_::value_changed(), ui.gain_label, - [this] { ui.gain_label->setValue((int)*t.gain); }, Qt::QueuedConnection); connect(&t.point_filter_limit, value_::value_changed(), ui.point_filter_limit_label, [this] { ui.point_filter_limit_label->setValue(*t.point_filter_limit); }, Qt::QueuedConnection); diff --git a/tracker-trackhat/dialog.ui b/tracker-trackhat/dialog.ui index 6bb7f515..3195cf24 100644 --- a/tracker-trackhat/dialog.ui +++ b/tracker-trackhat/dialog.ui @@ -7,7 +7,7 @@ 0 0 365 - 485 + 460 @@ -31,48 +31,6 @@ - - - - 0 - 0 - - - - 51 - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - 239 - - - 10 - - - Qt::Horizontal - - - - - - - Threshold - - - - @@ -92,14 +50,14 @@ - + - Gain + Threshold - - + + Qt::NoFocus @@ -117,27 +75,27 @@ - - - - Qt::NoFocus - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + 0 + 0 + - - true + + 239 - - QAbstractSpinBox::NoButtons + + 10 - - 999 + + Qt::Horizontal - - + + Qt::NoFocus @@ -595,7 +553,6 @@ exposure_slider - gain_slider threshold_slider model_type min_point_size diff --git a/tracker-trackhat/lang/nl_NL.ts b/tracker-trackhat/lang/nl_NL.ts index 50fdef30..9166a143 100644 --- a/tracker-trackhat/lang/nl_NL.ts +++ b/tracker-trackhat/lang/nl_NL.ts @@ -55,10 +55,6 @@ Exposure - - Gain - - Model diff --git a/tracker-trackhat/lang/ru_RU.ts b/tracker-trackhat/lang/ru_RU.ts index 23c14ed4..3d587010 100644 --- a/tracker-trackhat/lang/ru_RU.ts +++ b/tracker-trackhat/lang/ru_RU.ts @@ -55,10 +55,6 @@ Exposure - - Gain - - Model diff --git a/tracker-trackhat/lang/stub.ts b/tracker-trackhat/lang/stub.ts index 17ca6da6..d1a07ea6 100644 --- a/tracker-trackhat/lang/stub.ts +++ b/tracker-trackhat/lang/stub.ts @@ -19,10 +19,6 @@ Exposure - - Gain - - Model diff --git a/tracker-trackhat/lang/zh_CN.ts b/tracker-trackhat/lang/zh_CN.ts index 1c7f83ae..ca9ff5c6 100644 --- a/tracker-trackhat/lang/zh_CN.ts +++ b/tracker-trackhat/lang/zh_CN.ts @@ -55,10 +55,6 @@ Exposure - - Gain - - Model diff --git a/tracker-trackhat/settings.cpp b/tracker-trackhat/settings.cpp index f9a866bf..0ecca16d 100644 --- a/tracker-trackhat/settings.cpp +++ b/tracker-trackhat/settings.cpp @@ -7,6 +7,14 @@ namespace trackhat_impl { trackhat_settings::trackhat_settings() : opts{"tracker-trackhat"} { } +int trackhat_settings::effective_exposure() const +{ + return std::clamp((int)*exposure, min_exposure, max_exposure); +} +int trackhat_settings::effective_gain() const +{ + return min_gain + std::clamp((int)*exposure - max_exposure, 0, max_gain - min_gain); +} void setting_receiver::settings_changed() { @@ -80,12 +88,12 @@ void trackhat_camera::set_pt_options() bool trackhat_camera::init_regs() { - auto exp = (uint8_t)t.exposure; + auto exp = (uint8_t)t.effective_exposure(); auto exp2 = (uint8_t)(exp == 0xff ? 0xf0 : 0xff); auto thres = (uint8_t)t.threshold; auto thres2 = (uint8_t)3; - auto gain = (uint8_t)((int)*t.gain); + auto gain = (uint8_t)t.effective_gain(); auto gain_c = (uint8_t)(gain/0x10); gain %= 0x10; gain_c %= 4; diff --git a/tracker-trackhat/trackhat.hpp b/tracker-trackhat/trackhat.hpp index 1e1857f5..1ae67e1c 100644 --- a/tracker-trackhat/trackhat.hpp +++ b/tracker-trackhat/trackhat.hpp @@ -30,9 +30,13 @@ TH_ErrorCode log_error(TH_ErrorCode error, const char* source, const char* file, struct trackhat_settings : opts { + static constexpr int min_gain = 16, max_gain = 47, + min_exposure = 0x10, max_exposure = 0xff; + static constexpr int num_exposure_steps = max_gain + max_exposure - min_gain - min_exposure; + int effective_exposure() const; + int effective_gain() const; trackhat_settings(); - value exposure{b, "exposure", {0x80, 0x10, 0xff}}; - value gain{b, "gain", {16, 0, 47}}; + value exposure{b, "exposure", {min_exposure, min_exposure, max_exposure + max_gain - min_gain}}; value threshold{b, "threshold", {0x97, 64, 0xfe}}; value model{b, "model", model_mini_clip_left}; value min_pt_size{b, "min-point-size", 10}; -- cgit v1.2.3