From b3ed8fd4e4fcad0b749126dee62588260d74b106 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Fri, 31 Jul 2020 01:37:41 -0400 Subject: add more tweaks for st-refactor --- common/accel-base.hpp | 16 +++++++++------- common/accel-classic.hpp | 4 ++-- common/accel-linear.hpp | 8 ++------ common/accel-logarithmic.hpp | 2 +- common/accel-natural.hpp | 4 ++-- common/accel-noaccel.hpp | 3 +-- common/accel-power.hpp | 4 ++-- common/accel-sigmoid.hpp | 4 ++-- common/external/tagged-union-single.h | 2 +- common/rawaccel-userspace.hpp | 2 +- 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,18 +31,20 @@ namespace rawaccel { /// Generally, the acceleration ramp rate. double speed_coeff = 0; - /// - /// Initializes a new instance of the struct. - /// - /// - /// - accel_base(accel_args args) { + accel_base(const accel_args& args) { verify(args); speed_coeff = args.accel; weight = args.weight; } + /// + /// Default transformation of speed -> acceleration. + /// + inline double accelerate(double speed) const { + return speed_coeff * speed; + } + /// /// Default transformation of acceleration -> mouse input multipliers. /// @@ -57,7 +59,7 @@ namespace rawaccel { /// Verifies arguments as valid. Errors if not. /// /// Arguments to verified. - 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 { /// Struct to hold linear acceleration implementation. - 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 { /// Struct to hold logarithmic acceleration implementation. 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 { /// Struct to hold acceleration implementation which applies no acceleration. 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) char bytes[max_size_of]; + alignas(max_align_of) char bytes[max_size_of] = ""; template 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 +#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 -#include "vec2.h" #include "x64-util.hpp" #include "external/tagged-union-single.h" @@ -104,8 +103,9 @@ namespace rawaccel { /// The object which sets a min and max for the acceleration scale. vec2 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 }; }); @@ -116,15 +116,6 @@ namespace rawaccel { clamp.y = accel_scale_clamp(args.cap.y); } - /// - /// Verifies acceleration arguments, via visitor function to accel_impl_t - /// - /// Arguments to be verified - 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"); - } - /// /// Applies weighted acceleration to given input for given time period. /// @@ -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; - 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; } /// -- cgit v1.2.3