diff options
| author | Jacob Palecki <[email protected]> | 2020-07-29 15:51:53 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-07-29 15:51:53 -0700 |
| commit | 0a91af55f79d9a9d5bda600e8eee7e17c65bd0b6 (patch) | |
| tree | 642659b6ed96b00bc4e9bf6d3152978889ea0079 /common/rawaccel-userspace.hpp | |
| parent | add sum types (diff) | |
| parent | Use modifier object in wrapper (diff) | |
| download | rawaccel-0a91af55f79d9a9d5bda600e8eee7e17c65bd0b6.tar.xz rawaccel-0a91af55f79d9a9d5bda600e8eee7e17c65bd0b6.zip | |
Merge remote-tracking branch 'downstream/Inheritance' into st-refactor
Diffstat (limited to 'common/rawaccel-userspace.hpp')
| -rw-r--r-- | common/rawaccel-userspace.hpp | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index db50b35..3e8886f 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -16,10 +16,8 @@ void error(const char* s) { throw std::domain_error(s); } -variables parse(int argc, char** argv) { - double degrees = 0; - vec2d sens = { 1, 1 }; - accel_function::args_t accel_args{}; +mouse_modifier parse(int argc, char** argv) { + modifier_args modifier_args{}; auto make_opt_vec = [](vec2d& v, auto first_flag, auto... rest) { return clipp::option(first_flag, rest...) & ( @@ -40,64 +38,64 @@ variables parse(int argc, char** argv) { }; // default options - auto opt_sens = "sensitivity (default = 1)" % make_opt_vec(sens, "sens"); + auto opt_sens = "sensitivity (default = 1)" % make_opt_vec(modifier_args.sens, "sens"); auto opt_rot = "counter-clockwise rotation (default = 0)" % ( clipp::option("rotate") & - clipp::number("degrees", degrees) + clipp::number("degrees", modifier_args.degrees) ); // mode-independent accel options auto opt_weight = "accel multiplier (default = 1)" % - make_opt_vec(accel_args.weight, "weight"); + make_opt_vec(modifier_args.acc_fn_args.weight, "weight"); auto opt_offset = "speed (dots/ms) where accel kicks in (default = 0)" % ( - clipp::option("offset") & clipp::number("speed", accel_args.offset) + clipp::option("offset") & clipp::number("speed", modifier_args.acc_fn_args.acc_args.offset) ); auto opt_cap = "accel scale cap (default = 9)" % - make_opt_vec(accel_args.cap, "cap"); + make_opt_vec(modifier_args.acc_fn_args.cap, "cap"); auto opt_tmin = "minimum time between polls (default = 0.4)" % ( clipp::option("tmin") & - clipp::number("ms", accel_args.time_min) + clipp::number("ms", modifier_args.acc_fn_args.acc_args.time_min) ); - auto accel_var = (clipp::required("accel") & clipp::number("num", accel_args.accel)) % "ramp rate"; - auto limit_var = (clipp::required("limit") & clipp::number("scale", accel_args.lim_exp)) % "limit"; + auto accel_var = (clipp::required("accel") & clipp::number("num", modifier_args.acc_fn_args.acc_args.accel)) % "ramp rate"; + auto limit_var = (clipp::required("limit") & clipp::number("scale", modifier_args.acc_fn_args.acc_args.lim_exp)) % "limit"; // modes auto noaccel_mode = "no-accel mode" % ( - clipp::command("off", "noaccel").set(accel_args.accel_mode, mode::noaccel) + clipp::command("off", "noaccel").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_noaccel>) ); auto lin_mode = "linear accel mode:" % ( - clipp::command("linear").set(accel_args.accel_mode, mode::linear), + clipp::command("linear").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_linear>), accel_var ); auto classic_mode = "classic accel mode:" % ( - clipp::command("classic").set(accel_args.accel_mode, mode::classic), + clipp::command("classic").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_classic>), accel_var, - (clipp::required("exponent") & clipp::number("num", accel_args.lim_exp)) % "exponent" + (clipp::required("exponent") & clipp::number("num", modifier_args.acc_fn_args.acc_args.lim_exp)) % "exponent" ); auto nat_mode = "natural accel mode:" % ( - clipp::command("natural").set(accel_args.accel_mode, mode::natural), + clipp::command("natural").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_natural>), accel_var, limit_var ); auto log_mode = "logarithmic accel mode:" % ( - clipp::command("logarithmic").set(accel_args.accel_mode, mode::logarithmic), + clipp::command("logarithmic").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_logarithmic>), accel_var ); auto sig_mode = "sigmoid accel mode:" % ( - clipp::command("sigmoid").set(accel_args.accel_mode, mode::sigmoid), + clipp::command("sigmoid").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_sigmoid>), accel_var, limit_var, - (clipp::required("midpoint") & clipp::number("speed", accel_args.midpoint)) % "midpoint" + (clipp::required("midpoint") & clipp::number("speed", modifier_args.acc_fn_args.acc_args.midpoint)) % "midpoint" ); auto pow_mode = "power accel mode:" % ( - clipp::command("power").set(accel_args.accel_mode, mode::power) >> [&] { accel_args.accel = 1; }, - (clipp::required("exponent") & clipp::number("num", accel_args.lim_exp)) % "exponent", - (clipp::option("scale") & clipp::number("num", accel_args.accel)) % "scale factor" + clipp::command("power").set(modifier_args.acc_fn_args.accel_mode, accel_implementation_t::id<accel_power>) >> [&] { modifier_args.acc_fn_args.acc_args.accel = 1; }, + (clipp::required("exponent") & clipp::number("num", modifier_args.acc_fn_args.acc_args.lim_exp)) % "exponent", + (clipp::option("scale") & clipp::number("num", modifier_args.acc_fn_args.acc_args.accel)) % "scale factor" ); auto accel_mode_exclusive = (lin_mode | classic_mode | nat_mode | log_mode | sig_mode | pow_mode); @@ -121,7 +119,7 @@ variables parse(int argc, char** argv) { std::exit(0); } - return variables(-degrees, sens, accel_args); + return mouse_modifier(modifier_args); } } // rawaccel |