summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-07-31 01:37:41 -0400
committera1xd <[email protected]>2020-07-31 01:37:41 -0400
commitb3ed8fd4e4fcad0b749126dee62588260d74b106 (patch)
tree5a2621096e038f29ca64f8cfac5f452a85f15056
parentMake weight a member of accel_base (diff)
downloadrawaccel-b3ed8fd4e4fcad0b749126dee62588260d74b106.tar.xz
rawaccel-b3ed8fd4e4fcad0b749126dee62588260d74b106.zip
add more tweaks for st-refactor
-rw-r--r--common/accel-base.hpp16
-rw-r--r--common/accel-classic.hpp4
-rw-r--r--common/accel-linear.hpp8
-rw-r--r--common/accel-logarithmic.hpp2
-rw-r--r--common/accel-natural.hpp4
-rw-r--r--common/accel-noaccel.hpp3
-rw-r--r--common/accel-power.hpp4
-rw-r--r--common/accel-sigmoid.hpp4
-rw-r--r--common/external/tagged-union-single.h2
-rw-r--r--common/rawaccel-userspace.hpp2
-rw-r--r--common/rawaccel.hpp28
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>