summaryrefslogtreecommitdiffhomepage
path: root/logic/main-settings.cpp
blob: b1b9a132dc393891f81f659e24a6a0d52772a783 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "main-settings.hpp"

main_settings::main_settings() :
    b(make_bundle("opentrack-ui")),
    b_map(make_bundle("opentrack-mappings")),
    a_x(b, b_map, "x", TX),
    a_y(b, b_map, "y", TY),
    a_z(b, b_map, "z", TZ),
    a_yaw(b, b_map, "yaw", Yaw),
    a_pitch(b, b_map, "pitch", Pitch),
    a_roll(b, b_map, "roll", Roll),
    all_axis_opts { &a_x, &a_y, &a_z, &a_yaw, &a_pitch, &a_roll },
    tcomp_p(b, "compensate-translation", false),
    tcomp_disable_tx(b, "compensate-translation-disable-x-axis", false),
    tcomp_disable_ty(b, "compensate-translation-disable-y-axis", false),
    tcomp_disable_tz(b, "compensate-translation-disable-z-axis", false),
    tcomp_disable_src_yaw(b, "compensate-translation-disable-source-yaw", false),
    tcomp_disable_src_pitch(b, "compensate-translation-disable-source-pitch", false),
    tcomp_disable_src_roll(b, "compensate-translation-disable-source-roll", false),
    tray_enabled(b, "use-system-tray", false),
    tray_start(b, "start-in-tray", false),
    center_at_startup(b, "center-at-startup", true),
    center_method(b, "centering-method", 1),
    neck_z(b, "neck-depth", 0),
    neck_enable(b, "neck-enable", false),
    key_start_tracking1(b, "start-tracking"),
    key_start_tracking2(b, "start-tracking-alt"),
    key_stop_tracking1(b, "stop-tracking"),
    key_stop_tracking2(b, "stop-tracking-alt"),
    key_toggle_tracking1(b, "toggle-tracking"),
    key_toggle_tracking2(b, "toggle-tracking-alt"),
    key_restart_tracking1(b, "restart-tracking"),
    key_restart_tracking2(b, "restart-tracking-alt"),
    key_center1(b, "center"),
    key_center2(b, "center-alt"),
    key_toggle1(b, "toggle"),
    key_toggle2(b, "toggle-alt"),
    key_zero1(b, "zero"),
    key_zero2(b, "zero-alt"),
    key_toggle_press1(b, "toggle-press"),
    key_toggle_press2(b, "toggle-press-alt"),
    key_zero_press1(b, "zero-press"),
    key_zero_press2(b, "zero-press-alt"),
    tracklogging_enabled(b, "tracklogging-enabled", false),
    tracklogging_filename(b, "tracklogging-filename", QString())
{
}

module_settings::module_settings() :
    b(make_bundle("modules")),
    tracker_dll(b, "tracker-dll", "PointTracker 1.1"),
    filter_dll(b, "filter-dll", "Accela"),
    protocol_dll(b, "protocol-dll", "freetrack 2.0 Enhanced")
{
}

key_opts::key_opts(bundle b, const QString& name) :
    keycode(b, QString("keycode-%1").arg(name), ""),
    guid(b, QString("guid-%1").arg(name), ""),
    button(b, QString("button-%1").arg(name), -1)
{}

using max_clamp = axis_opts::max_clamp;

static max_clamp get_max_x(Axis k)
{
    if (k == Pitch)
        return max_clamp::r90;
    if (k >= Yaw)
        return max_clamp::r180;
    return max_clamp::t30;
}

axis_opts::axis_opts(bundle b_settings_window, bundle b_mapping_window, QString pfx, Axis idx) :
    b_settings_window(b_settings_window),
    b_mapping_window(b_mapping_window),
    zero(b_settings_window, n(pfx, "zero-pos"), 0),
    src(b_settings_window, n(pfx, "source-index"), idx),
    invert(b_settings_window, n(pfx, "invert-sign"), false),
    altp(b_mapping_window, n(pfx, "alt-axis-sign"), false),
    clamp_x(b_mapping_window, n(pfx, "max-value"), get_max_x(idx)),
    clamp_y(b_mapping_window, n(pfx, "max-output-value"), idx >= Yaw ? o_r90 : o_t75)
{}

QString axis_opts::n(QString pfx, QString name)
{
    return QString("%1-%2").arg(pfx, name);
}