diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2017-10-13 18:53:28 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2017-10-13 18:53:28 +0200 |
commit | 9da6dff1800d6b6598e6ad04465ee8b9cabb4167 (patch) | |
tree | 2f1692597748ce37d2ce147e8ed9f0c7d71d00e9 /tracker-pt/ftnoir_tracker_pt_dialog.cpp | |
parent | 535e81402a65fa410e98899cd1780784d2f9815a (diff) |
tracker/pt, options: fix threshold slider
It's only the tie_setting(slider_value, QSlider) that
has race-free slider updates. Needed to update the
threshold slider representation.
Remove the tie_setting(int, QSlider) overload since it
doesn't have the logic.
Add a migration.
Add base_value::notify() for use-cases like the
checkbox updating the label.
Diffstat (limited to 'tracker-pt/ftnoir_tracker_pt_dialog.cpp')
-rw-r--r-- | tracker-pt/ftnoir_tracker_pt_dialog.cpp | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.cpp b/tracker-pt/ftnoir_tracker_pt_dialog.cpp index a4b8c668..4094f4dc 100644 --- a/tracker-pt/ftnoir_tracker_pt_dialog.cpp +++ b/tracker-pt/ftnoir_tracker_pt_dialog.cpp @@ -28,7 +28,7 @@ TrackerDialog_PT::TrackerDialog_PT() tie_setting(s.cam_res_y, ui.res_y_spin); tie_setting(s.cam_fps, ui.fps_spin); - tie_setting(s.threshold, ui.threshold_slider); + tie_setting(s.threshold_slider, ui.threshold_slider); tie_setting(s.min_point_size, ui.mindiam_spin); tie_setting(s.max_point_size, ui.maxdiam_spin); @@ -94,22 +94,32 @@ TrackerDialog_PT::TrackerDialog_PT() tie_setting(s.blob_color, ui.blob_color); - tie_setting(s.threshold, ui.threshold_value_display, [this](int x) { - if (!s.auto_threshold) - return tr("Brightness %1/255").arg(x); - else - { - CamInfo info; - int w = 640, h = 480; + tie_setting(s.threshold_slider, ui.threshold_value_display, [this](const slider_value& val) { + return threshold_display_text(int(val)); + }); - if (tracker && tracker->get_cam_info(&info) && info.res_x * info.res_y != 0) - w = info.res_x, h = info.res_y; + // refresh threshold display on auto-threshold checkbox state change + tie_setting(s.auto_threshold, + this, + [this](bool) { s.threshold_slider.notify(); }); +} - double value = PointExtractor::threshold_radius_value(w, h, x); +QString TrackerDialog_PT::threshold_display_text(int threshold_value) +{ + if (!s.auto_threshold) + return tr("Brightness %1/255").arg(threshold_value); + else + { + CamInfo info; + int w = 640, h = 480; - return tr("LED radius %1 pixels").arg(value, 0, 'f', 2); - } - }); + if (tracker && tracker->get_cam_info(&info) && info.res_x * info.res_y != 0) + w = info.res_x, h = info.res_y; + + double value = PointExtractor::threshold_radius_value(w, h, threshold_value); + + return tr("LED radius %1 pixels").arg(value, 0, 'f', 2); + } } void TrackerDialog_PT::startstop_trans_calib(bool start) |