diff options
| author | a1xd <[email protected]> | 2020-07-31 01:37:41 -0400 |
|---|---|---|
| committer | a1xd <[email protected]> | 2020-07-31 01:37:41 -0400 |
| commit | b3ed8fd4e4fcad0b749126dee62588260d74b106 (patch) | |
| tree | 5a2621096e038f29ca64f8cfac5f452a85f15056 | |
| parent | Make weight a member of accel_base (diff) | |
| download | rawaccel-b3ed8fd4e4fcad0b749126dee62588260d74b106.tar.xz rawaccel-b3ed8fd4e4fcad0b749126dee62588260d74b106.zip | |
add more tweaks for st-refactor
| -rw-r--r-- | common/accel-base.hpp | 16 | ||||
| -rw-r--r-- | common/accel-classic.hpp | 4 | ||||
| -rw-r--r-- | common/accel-linear.hpp | 8 | ||||
| -rw-r--r-- | common/accel-logarithmic.hpp | 2 | ||||
| -rw-r--r-- | common/accel-natural.hpp | 4 | ||||
| -rw-r--r-- | common/accel-noaccel.hpp | 3 | ||||
| -rw-r--r-- | common/accel-power.hpp | 4 | ||||
| -rw-r--r-- | common/accel-sigmoid.hpp | 4 | ||||
| -rw-r--r-- | common/external/tagged-union-single.h | 2 | ||||
| -rw-r--r-- | common/rawaccel-userspace.hpp | 2 | ||||
| -rw-r--r-- | common/rawaccel.hpp | 28 |
11 files changed, 34 insertions, 43 deletions
diff --git a/common/accel-base.hpp b/common/accel-base.hpp index e87b463..da2c96b 100644 --- a/common/accel-base.hpp +++ b/common/accel-base.hpp @@ -31,12 +31,7 @@ namespace rawaccel { /// <summary> Generally, the acceleration ramp rate. double speed_coeff = 0; - /// <summary> - /// Initializes a new instance of the <see cref="accel_base"/> struct. - /// </summary> - /// <param name="args"></param> - /// <returns></returns> - accel_base(accel_args args) { + accel_base(const accel_args& args) { verify(args); speed_coeff = args.accel; @@ -44,6 +39,13 @@ namespace rawaccel { } /// <summary> + /// Default transformation of speed -> acceleration. + /// </summary> + inline double accelerate(double speed) const { + return speed_coeff * speed; + } + + /// <summary> /// Default transformation of acceleration -> mouse input multipliers. /// </summary> inline vec2d scale(double accel_val) const { @@ -57,7 +59,7 @@ namespace rawaccel { /// Verifies arguments as valid. Errors if not. /// </summary> /// <param name="args">Arguments to verified.</param> - void verify(accel_args args) const { + void verify(const accel_args& args) const { if (args.accel < 0) error("accel can not be negative, use a negative weight to compensate"); } diff --git a/common/accel-classic.hpp b/common/accel-classic.hpp index e2eb494..1a2adca 100644 --- a/common/accel-classic.hpp +++ b/common/accel-classic.hpp @@ -10,7 +10,7 @@ namespace rawaccel { struct accel_classic : accel_base { double exponent; - accel_classic(accel_args args) : accel_base(args) { + accel_classic(const accel_args& args) : accel_base(args) { verify(args); exponent = args.exponent - 1; @@ -21,7 +21,7 @@ namespace rawaccel { return pow(speed_coeff * speed, exponent); } - void verify(accel_args args) const { + void verify(const accel_args& args) const { if (args.exponent <= 1) error("exponent must be greater than 1"); } }; diff --git a/common/accel-linear.hpp b/common/accel-linear.hpp index 28150a8..5cbb7c6 100644 --- a/common/accel-linear.hpp +++ b/common/accel-linear.hpp @@ -5,14 +5,10 @@ namespace rawaccel { /// <summary> Struct to hold linear acceleration implementation. </summary> - struct accel_linear : accel_base { + struct accel_linear : accel_base { - accel_linear(accel_args args) : accel_base(args) {} + using accel_base::accel_base; - inline double accelerate(double speed) const { - //f(x) = mx - return speed_coeff * speed; - } }; } diff --git a/common/accel-logarithmic.hpp b/common/accel-logarithmic.hpp index b628327..928eda9 100644 --- a/common/accel-logarithmic.hpp +++ b/common/accel-logarithmic.hpp @@ -9,7 +9,7 @@ namespace rawaccel { /// <summary> Struct to hold logarithmic acceleration implementation. </summary> struct accel_logarithmic : accel_base { - accel_logarithmic(accel_args args) : accel_base(args) {} + using accel_base::accel_base; inline double accelerate(double speed) const { //f(x) = log(m*x+1) diff --git a/common/accel-natural.hpp b/common/accel-natural.hpp index 6ccb193..c87fda8 100644 --- a/common/accel-natural.hpp +++ b/common/accel-natural.hpp @@ -11,7 +11,7 @@ namespace rawaccel { double limit = 1; double midpoint = 0; - accel_natural(accel_args args) : accel_base(args) { + accel_natural(const accel_args& args) : accel_base(args) { verify(args); limit = args.limit - 1; @@ -23,7 +23,7 @@ namespace rawaccel { return limit - (limit * exp(-speed_coeff * speed)); } - void verify(accel_args args) const { + void verify(const accel_args& args) const { if (args.limit <= 1) error("limit must be greater than 1"); } }; diff --git a/common/accel-noaccel.hpp b/common/accel-noaccel.hpp index 151002a..b7f730b 100644 --- a/common/accel-noaccel.hpp +++ b/common/accel-noaccel.hpp @@ -7,9 +7,8 @@ namespace rawaccel { /// <summary> Struct to hold acceleration implementation which applies no acceleration. </summary> struct accel_noaccel : accel_base { - accel_noaccel(accel_args args) : accel_base(args) {} + accel_noaccel(const accel_args&) : accel_base() {} - inline double accelerate(double) const { return 0; } }; } diff --git a/common/accel-power.hpp b/common/accel-power.hpp index d96cb96..7f4c220 100644 --- a/common/accel-power.hpp +++ b/common/accel-power.hpp @@ -11,7 +11,7 @@ namespace rawaccel { double exponent; double offset; - accel_power(accel_args args) { + accel_power(const accel_args& args) { verify(args); weight = args.weight; @@ -32,7 +32,7 @@ namespace rawaccel { }; } - void verify(accel_args args) const { + void verify(const accel_args& args) const { if (args.power_scale <= 0) error("scale must be positive"); if (args.exponent <= 0) error("exponent must be greater than 0"); } diff --git a/common/accel-sigmoid.hpp b/common/accel-sigmoid.hpp index e992e0c..7cfa6c4 100644 --- a/common/accel-sigmoid.hpp +++ b/common/accel-sigmoid.hpp @@ -11,7 +11,7 @@ namespace rawaccel { double limit = 1; double midpoint = 0; - accel_sigmoid(accel_args args) : accel_base(args) { + accel_sigmoid(const accel_args& args) : accel_base(args) { verify(args); limit = args.limit - 1; @@ -23,7 +23,7 @@ namespace rawaccel { return limit / (exp(-speed_coeff * (speed - midpoint)) + 1); } - void verify(accel_args args) const { + void verify(const accel_args& args) const { if (args.limit <= 1) error("exponent must be greater than 1"); if (args.midpoint < 0) error("midpoint must not be negative"); } diff --git a/common/external/tagged-union-single.h b/common/external/tagged-union-single.h index bcfc1cf..3353325 100644 --- a/common/external/tagged-union-single.h +++ b/common/external/tagged-union-single.h @@ -137,7 +137,7 @@ struct tagged_union { int tag = 0; struct storage_t { - alignas(max_align_of<First, Rest...>) char bytes[max_size_of<First, Rest...>]; + alignas(max_align_of<First, Rest...>) char bytes[max_size_of<First, Rest...>] = ""; template <typename T> inline constexpr T& as() { diff --git a/common/rawaccel-userspace.hpp b/common/rawaccel-userspace.hpp index 6a79d23..c80262c 100644 --- a/common/rawaccel-userspace.hpp +++ b/common/rawaccel-userspace.hpp @@ -4,7 +4,7 @@ #include "external/clipp.h" -#include <accel-error.hpp> +#include "accel-error.hpp" #include "rawaccel.hpp" namespace rawaccel { diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index 7be37c2..59a0360 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -3,7 +3,6 @@ #define _USE_MATH_DEFINES #include <math.h> -#include "vec2.h" #include "x64-util.hpp" #include "external/tagged-union-single.h" @@ -104,8 +103,9 @@ namespace rawaccel { /// <summary> The object which sets a min and max for the acceleration scale. </summary> vec2<accel_scale_clamp> clamp; - accel_function(accel_fn_args args) { - verify(args); + accel_function(const accel_fn_args& args) { + if (args.time_min <= 0) error("min time must be positive"); + if (args.acc_args.offset < 0) error("offset must not be negative"); accel.tag = args.accel_mode; accel.visit([&](auto& impl){ impl = { args.acc_args }; }); @@ -117,15 +117,6 @@ namespace rawaccel { } /// <summary> - /// Verifies acceleration arguments, via visitor function to accel_impl_t - /// </summary> - /// <param name="args">Arguments to be verified</param> - void verify(accel_fn_args args) { - if (args.time_min <= 0) error("min time must be positive"); - if (args.acc_args.offset < 0) error("offset must not be negative"); - } - - /// <summary> /// Applies weighted acceleration to given input for given time period. /// </summary> /// <param name="input">2d vector of {x, y} mouse movement to be accelerated</param> @@ -164,19 +155,22 @@ namespace rawaccel { accel_function accel_fn; vec2d sensitivity = { 1, 1 }; - mouse_modifier(modifier_args args) + mouse_modifier(const modifier_args& args) : accel_fn(args.acc_fn_args) { apply_rotate = args.degrees != 0; + if (apply_rotate) rotate = rotator(args.degrees); else rotate = rotator(); - apply_accel = args.acc_fn_args.acc_args.accel != 0 && + apply_accel = args.acc_fn_args.accel_mode != 0 && args.acc_fn_args.accel_mode != accel_impl_t::id<accel_noaccel>; - if (args.sens.x == 0) args.sens.x = 1; - if (args.sens.y == 0) args.sens.y = 1; - sensitivity = args.sens; + if (args.sens.x == 0) sensitivity.x = 1; + else sensitivity.x = args.sens.x; + + if (args.sens.y == 0) sensitivity.y = 1; + else sensitivity.y = args.sens.y; } /// <summary> |