diff options
| author | Jacob Palecki <[email protected]> | 2020-07-22 20:48:59 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-07-22 20:48:59 -0700 |
| commit | 01d773c072e6b9efb4c2a9ebcc70b4cf98a6e32b (patch) | |
| tree | 51f94b33c7beba43b379124c45516563497cebe8 /common | |
| parent | add a license (diff) | |
| download | rawaccel-01d773c072e6b9efb4c2a9ebcc70b4cf98a6e32b.tar.xz rawaccel-01d773c072e6b9efb4c2a9ebcc70b4cf98a6e32b.zip | |
Added source-style power acceleration option
Diffstat (limited to 'common')
| -rw-r--r-- | common/rawaccel-userspace.hpp | 6 | ||||
| -rw-r--r-- | common/rawaccel.hpp | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 80fcecc..862c55d 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -82,8 +82,12 @@ variables parse(int argc, char** argv) { limit_var, (clipp::required("midpoint") & clipp::number("speed", accel_args.midpoint)) % "midpoint" ); + auto pow_mode = "power accel mode:" % ( + clipp::command("power").set(accel_args.accel_mode, mode::power), + accel_var + ); - auto accel_mode_exclusive = (lin_mode | classic_mode | nat_mode | log_mode | sig_mode); + auto accel_mode_exclusive = (lin_mode | classic_mode | nat_mode | log_mode | sig_mode | pow_mode); auto accel_opts = "mode-independent accel options:" % (opt_offset, opt_cap, opt_weight, opt_tmin); bool help = false; diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index 1483e67..a40b85b 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -8,7 +8,7 @@ namespace rawaccel { -enum class mode { noaccel, linear, classic, natural, logarithmic, sigmoid }; +enum class mode { noaccel, linear, classic, natural, logarithmic, sigmoid, power }; struct rotator { vec2d rot_vec = { 1, 0 }; @@ -98,6 +98,8 @@ struct accel_function { break; case mode::sigmoid: accel_val = k / (exp(-b * (speed - m)) + 1); break; + case mode::power: accel_val = pow(speed, b) - 1; + break; default: break; } |