From a374d576166399c2e946d76d52740b33e00db695 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 21 Jan 2021 15:26:24 -0500 Subject: [PATCH 1/6] relax requirements when deserializing settings --- wrapper/wrapper.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 46e7e3af..c7318b8f 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -86,10 +86,10 @@ public ref struct DriverSettings [JsonProperty("Negative directional multipliers", Required = Required::Default)] Vec2 directionalMultipliers; - [JsonProperty("Stretches domain for horizontal vs vertical inputs")] + [JsonProperty("Stretches domain for horizontal vs vertical inputs", Required = Required::Default)] DomainArgs domainArgs; - [JsonProperty("Stretches accel range for horizontal vs vertical inputs")] + [JsonProperty("Stretches accel range for horizontal vs vertical inputs", Required = Required::Default)] Vec2 rangeXY; [JsonProperty(Required = Required::Default)] @@ -103,6 +103,12 @@ public ref struct DriverSettings { return minimumTime > 0 && minimumTime != DEFAULT_TIME_MIN; } + + DriverSettings() + { + domainArgs = { { 1, 1 }, 2 }; + rangeXY = { 1, 1 }; + } }; From e74f14f2d4fdd39001f98df9f3e2ec33b13c967f Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 21 Jan 2021 15:28:51 -0500 Subject: [PATCH 2/6] direction/distance calc - small opts --- common/rawaccel.hpp | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index c617bedc..d17a4607 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -232,7 +232,7 @@ namespace rawaccel { double sigma_x = 1.0; double sigma_y = 1.0; - weighted_distance(domain_args args) + weighted_distance(const domain_args& args) { sigma_x = args.domain_weights.x; sigma_y = args.domain_weights.y; @@ -250,19 +250,18 @@ namespace rawaccel { } } - double calculate(double x, double y) + inline double calculate(double x, double y) { double abs_x = fabs(x); double abs_y = fabs(y); - if (lp_norm_infinity) - { - return abs_x > abs_y ? abs_x : abs_y; - } + if (lp_norm_infinity) return maxsd(abs_x, abs_y); double x_scaled = abs_x * sigma_x; double y_scaled = abs_y * sigma_y; - return pow(pow(x_scaled, p) + pow(y_scaled, p), p_inverse); + + if (p == 2) return sqrtsd(x_scaled * x_scaled + y_scaled * y_scaled); + else return pow(pow(x_scaled, p) + pow(y_scaled, p), p_inverse); } weighted_distance() = default; @@ -273,19 +272,12 @@ namespace rawaccel { double start = 1.0; bool should_apply = false; - direction_weight(vec2d thetas) + direction_weight(const vec2d& thetas) { diff = thetas.y - thetas.x; start = thetas.x; - if (diff != 0) - { - should_apply = true; - } - else - { - should_apply = false; - } + should_apply = diff != 0; } inline double atan_scale(double x, double y) @@ -293,7 +285,7 @@ namespace rawaccel { return M_2_PI * atan2(fabs(y), fabs(x)); } - double apply(double x, double y) + inline double apply(double x, double y) { return atan_scale(x, y) * diff + start; } From 8dac6b3ff1d3fa434c4cd1db752ba34681cae8b4 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 21 Jan 2021 22:35:37 -0500 Subject: [PATCH 3/6] add angle snapping probably works like interaccel --- common/rawaccel-settings.h | 1 + common/rawaccel.hpp | 32 +++++++++++++++++++ driver/driver.cpp | 1 + grapher/Models/AccelGUI.cs | 1 + grapher/Models/Serialized/RawAccelSettings.cs | 1 + wrapper/wrapper.cpp | 3 ++ 6 files changed, 39 insertions(+) diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h index 6fa2aa95..dedef6d4 100644 --- a/common/rawaccel-settings.h +++ b/common/rawaccel-settings.h @@ -19,6 +19,7 @@ namespace rawaccel { struct settings { double degrees_rotation = 0; + double degrees_snap = 0; bool combine_mags = true; vec2 modes = { accel_mode::noaccel, accel_mode::noaccel }; vec2 argsv; diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index d17a4607..4c1e5973 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -42,6 +42,26 @@ namespace rawaccel { rotator() = default; }; + struct snapper { + double threshold = 0; + + inline vec2d apply(const vec2d& input) const { + if (input.x != 0 && input.y != 0) { + double angle = fabs(atan(input.y / input.x)); + auto mag = [&] { return sqrtsd(input.x * input.x + input.y * input.y); }; + + if (angle > M_PI_2 - threshold) return { 0, _copysign(mag(), input.y) }; + if (angle < threshold) return { _copysign(mag(), input.x), 0 }; + } + + return input; + } + + snapper(double degrees) : threshold(minsd(fabs(degrees), 45) * M_PI / 180) {} + + snapper() = default; + }; + /// Struct to hold clamp (min and max) details for acceleration application struct accel_scale_clamp { double lo = 0; @@ -296,9 +316,11 @@ namespace rawaccel { /// Struct to hold variables and methods for modifying mouse input struct mouse_modifier { bool apply_rotate = false; + bool apply_snap = false; bool apply_accel = false; bool combine_magnitudes = true; rotator rotate; + snapper snap; weighted_distance distance; direction_weight directional; vec2 accels; @@ -313,6 +335,11 @@ namespace rawaccel { apply_rotate = true; } + if (args.degrees_snap != 0) { + snap = snapper(args.degrees_snap); + apply_snap = true; + } + if (args.sens.x != 0) sensitivity.x = args.sens.x; if (args.sens.y != 0) sensitivity.y = args.sens.y; @@ -336,6 +363,7 @@ namespace rawaccel { void modify(vec2d& movement, milliseconds time) { apply_rotation(movement); + apply_angle_snap(movement); apply_acceleration(movement, [=] { return time; }); apply_sensitivity(movement); } @@ -344,6 +372,10 @@ namespace rawaccel { if (apply_rotate) movement = rotate.apply(movement); } + inline void apply_angle_snap(vec2d& movement) { + if (apply_snap) movement = snap.apply(movement); + } + template inline void apply_acceleration(vec2d& movement, TimeSupplier time_supp) { if (apply_accel) { diff --git a/driver/driver.cpp b/driver/driver.cpp index a92f7739..0c21f34b 100644 --- a/driver/driver.cpp +++ b/driver/driver.cpp @@ -74,6 +74,7 @@ Routine Description: }; global.modifier.apply_rotation(input); + global.modifier.apply_angle_snap(input); if (enable_accel) { auto time_supplier = [=] { diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 5cd70123..4dd7caa1 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -144,6 +144,7 @@ public void UpdateActiveSettingsFromFields() var settings = new DriverSettings { rotation = ApplyOptions.Rotation.Field.Data, + snap = driverSettings.snap, sensitivity = new Vec2 { x = ApplyOptions.Sensitivity.Fields.X, diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs index f4fb1e2d..17db9101 100644 --- a/grapher/Models/Serialized/RawAccelSettings.cs +++ b/grapher/Models/Serialized/RawAccelSettings.cs @@ -131,6 +131,7 @@ public static bool IsDefaultEquivalent(DriverSettings accelSettings) accelSettings.directionalMultipliers.x <= 0 && accelSettings.directionalMultipliers.y <= 0 && accelSettings.rotation == 0 && + accelSettings.snap == 0 && accelSettings.modes.x == AccelMode.noaccel && wholeOrNoY; } diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index c7318b8f..f5672a1b 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -70,6 +70,9 @@ public ref struct DriverSettings [JsonProperty("Degrees of rotation")] double rotation; + [JsonProperty("Degrees of angle snapping", Required = Required::Default)] + double snap; + [JsonProperty("Use x as whole/combined accel")] [MarshalAs(UnmanagedType::U1)] bool combineMagnitudes; From c346fa7baba3e14d8a2cc088eaee118ad269ace4 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 21 Jan 2021 22:40:56 -0500 Subject: [PATCH 4/6] update signed --- common/rawaccel-version.h | 2 +- installer/installer.rc | 2 +- signed/driver/rawaccel.sys | Bin 61640 -> 69896 bytes signed/installer.exe | Bin 59784 -> 60296 bytes signed/uninstaller.exe | Bin 55176 -> 55688 bytes 5 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/rawaccel-version.h b/common/rawaccel-version.h index 0e020368..d2c79229 100644 --- a/common/rawaccel-version.h +++ b/common/rawaccel-version.h @@ -4,7 +4,7 @@ #define RA_VER_MINOR 4 #define RA_VER_PATCH 0 -#define RA_MIN_OS "Win7" +#define RA_OS "Win7+" #define M_STR_HELPER(x) #x #define M_STR(x) M_STR_HELPER(x) diff --git a/installer/installer.rc b/installer/installer.rc index 43672d7d..6d69e2d5 100644 --- a/installer/installer.rc +++ b/installer/installer.rc @@ -70,7 +70,7 @@ BEGIN BEGIN BLOCK "040904b0" BEGIN - VALUE "FileDescription", "Raw Accel installer (" RA_MIN_OS ")" + VALUE "FileDescription", "Raw Accel installer (" RA_OS ")" VALUE "FileVersion", RA_VER_STRING VALUE "OriginalFilename", "installer.exe" VALUE "ProductName", "Raw Accel" diff --git a/signed/driver/rawaccel.sys b/signed/driver/rawaccel.sys index 0fef07f61f33d8fd0c5a7a361c12a9a27c1df955..653d9275758e1d22427bf7978e6fd3e46372d862 100644 GIT binary patch delta 25060 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 PkKQE4x99NE5QhDK!dwpl delta 16533 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 H=Y9VRCJD3O diff --git a/signed/installer.exe b/signed/installer.exe index 38f9201005a81dabd2e074793da549af61c06534..99f1d325a69f201f42b621d76fcb71fc9b784e21 100644 GIT binary patch delta 15894 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 SN6DQV$rInQi^kgLxc>q9ZhkQU delta 15706 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 ZCuUu-^z9T9J+aKQ%k(bxZ|EtJ{|5^dQQZIl diff --git a/signed/uninstaller.exe b/signed/uninstaller.exe index aa59df9917588b58ee6721c80fd32c680ad3d7b3..cfbf0dd483f02fe4e94b3e68c8486f5926cc399f 100644 GIT binary patch delta 14885 zcmeHti(gb#7xp=a85p_Ea2f8xfP)|)AfSSvf`T3p5EZ;%@P>Cqg``qP9Z>N|qB~8^ zO3ezbyrHIM1%jeQd3k$%wbzo$Yz#{)UnMi=d)AplV&9+eee?UR^Q^u0+H0?UUwgya z19od`?W$LpV!77YC6gr1MQW;-JA}pEgF5?}KHL`s8tf@1p4({3CMr)^#a?!D{U3!lT;hY550B$xU zc{XXuY!<;s+Z878Y#iT{Z)O{L58rSNGLLiI+F;;4j@tvcSjln48-xA%RCbN;Ep(s7 z+=Z_EQkEnPb(HllLdlVB5+eD7>|-H}KURB7i09oGcjGv*$|Y(hz}y&q`_)k_QuUoM zFrR7FAwp0-i&uB|@R@?#Z zD@+;AmUbG)=di1tQad#cBZKPBi&?OvH-DccIf}x#Va)6}Mu;`CZyd*J_Mn@fF`cD4 ziOzf0+3HWVM2%xFJN0#%vydEcfWmop-KjuuTFBy^g9Sqd8|gfbAIAfQ&<`&Htu`u^- z{CHOHo+7NwXI6J#VNVqE^N0{MfozaRmXIy7O&%u&RR+uT4E6pRj$~J<<_Q>1xpV&` zO6M$h**ecD{8jd|XA-}Kh3Q`td>*bYl`Wk`k&l%k zA-*iz+egs&vLf#|Ud6U~_Y>6V?3#C;u67_rs)%4v9wwyf6x-5=sR(`1?MDv|I zQBpU&g6#N4u`=D5Dw?17(TLKuMVPRi(oR_M6RR)_Y@K8|)r;fOrMil`(nQRSSn1RH z+l~+F`H~(8xBE{)`V}xBVM~16EhpG zqBpyxK+W8kH?ASBE~BEZ>tt3DFjM%% zmE8?U5!|9!_s%gwu_v3@Ii62un>u&%UfBm`r5(m|;ZL@2~k7TT%MVauHjsi0LWi1W_Nkv8dqS zK?_E69Mr3Fnk-m5a8N&wHYQ3JK~SAtrFMR*LR%_Svf5P!LZ#Ufd6Ti=0@nnLb9LoX zd7KJ2vIoHi;q4!oPe_usb_A(yPNc%>eq&i-NPl5jHQN>9F~(;bgyz2C01eiZUIQln zfmm7kiP)6U{BPh@1EA+QmNoxT)q6#_LRanH-%xq(x z<-fO>x$6l1@&44gQA=7~#Y!v2%{L}edbDL1)*3pRvX1?3wU*bFy4o^oB37DMZ!uKVX)C@(m92+GqheqX4B)uS zHx`TLN18=_#467M`Iy0;Gnx(S)TQ_Q9O|{aINNxJW7%Qeq#I|(*A-#M8ck*Mf z%O+CUOi#J&gC0~zm3}{_44N?*t+8yD?l?^Sg6io|5G&4?s4ec@X$ocVPtVlwWF~ob@$3E7-`gopjd0Ap zjG^T31(EfS8qLpQTcf%N8By$`C~skG9~P0FU>}}|C9{m_x`#R}$fO<%W+~lM`NM2k z_g(yVEGRmFKf_X@gZa83 z;McGhVhjiuUX2Oh7qa6qz4_PJy_f*kt%ImQ))gvn^9u8e&EcEa%-C)|A9_(Aml#EK zO6(*AVV`D77jO6UVS8iyY2Ly*vg$v`V0UAEG!^IvtNzDZ!a_-; zR4g{G@E}g$z#B5+&u3sBH`Qakt+47j9PYG0M_5E4VI7a-8X;X}Mi^#0cKQNu_rDhR^a z>22xciL%KVK_%z_BtJ#+tR3H88jZ=oQ6!gqXqk6YE}3CPsQ555vQ8X!sjbQxy@7MY zylk-C{21)i;n@`6q@AFiqqa&D(4^0-daq<#Ta&Q?qVk6{uqkM?gBV#aUTQ;QITma* zM)svfZ3>aMs2p$78bFc1acHyv+ibZHn1?Gx{B zK#)U?9sGawXABiJeTD9Cwwwx<9g>eHE{JxA9Y&funbJ62rnJ~6Q~G{F1A>P;m~u*d zkz|q2uPGD&QG78DE1TkrLr+z_Y%2ZRRT80Mi`HnS>gY^k-I8AxCiP*TB#+^5GT)S7 z{wtQ8V!#GAK4q}iEW|j~R=pnp!Kh=V)NIwyOJXNdc3|0$?E9P$o5;TCYZM%@YxM2L z-(Z3LQuX_L%Y`NZY=tgZ^@rKwevgF3er!SiAYr&4tL`5zj)tv+CDE zAA!{si(NQ#NR4;c-9+o^F-uFmBAoYOzG*>1jSuUS*3*4kSL!UBu{qLNxMZp9%2uZJ z>~hQxhC;3SvpDT#Luvoe>(P~6OY5Pze1;51onh_+-V(Zbvl9dS1!r$|Wk9Il63YG> z5b2Tb3rkw7J|Fv%Z0UlLB@YbNv@}r37aG~Lf#-xHdKR4?BrrW2njRr+=)zu1AMCNu z8zsZ6`ja@enlsUuo?Y0#)6+C(Pg6<5X%?7qP;mET7c=~Y|9P;VGmOH+VCFHXr-u<6 zXsfSPpMXSu#*RDhFJCfIM!vGTb|Kc8^~5=Mrf)(BBK!>vm=>P zg#vfxn-yj3j{~pceaL`K(5jymX`3OUB4Z=O)^K7~Z{>w4| zc{ESLbEGpAj>RF}YRs%k@uXX(u{}4dN@XGqx$I{aXUMaqJw^n`K!i;=(MG3DOq+n~ z$+!lK|4C}z4>$0|&(w@_8khL5vZeE4@~7JJ_fg8WxTMY}W)MHuh?`{h*JK{MuPF80 zDDx>sQR@3T*i0!Cp@bEVpUIIfVFy2(N!Pe2D?M`GO#t>jcqyzFlqcx0&X8Lk>*5Mn|(D6Z^MB?nt!wB{*Pi z)ZnPDmr)rX`4Gd_Kzejqj7rN-D@YreHVO@e^JCE1KX7TymcGx9{8ltc|H`a?thTfv zoXCj(S(NUHQk$6Epe=WxE!KS2ASVB=Eq_G4Qq_HX5rVmD+)rx2Pm}_oQT=D2?)wx7nVe zq-BAAT}|=uf&!$8E*Q+p1v;^5u#W?*6{T0kXm$2lH{AAfby~Nfy6npN$Q{(48!eif z4DJ3`Xz7BU{HM13D9UC^3p8T#*V^)JNMuV7#j3@)P5v%cO|(F#WL~D^*-P<4P~2EA z7dvP9z!}S`a&E7-%qCT@r+(PUehg{%qfKnGS281I7s!>WL9l*CTTu#EWDjU*Ua%bf z1IbF0CQ}-!$&A#}&>}RRYb>M@pDEV=p~f%;WlD`0V?){`n#XD5Cn0Ff2>W|UHnYf_ zmjs7S?8BT8;d>3ck>l$r%JCeYV?N8425Yh-Pg`z!v6b-&EHzgxI5@Gvx!pbPApmQ( zERsXB9Y^H_!ItE8!^6z3JYQi-S9U5dNVpWjzRnBxxQnw9J68#o-W6Q(tomCa%x74< zaTnw`pv{fp4b8Nc!mav2Mvgmi`!9}5t}k)1>Su(o1;b*rMNq_{9*ZNz*{V-u?++`| z{ee>xvQ)_MBG3@bx(tuk9eXN-;)-BaG<>*lq>!B)zQkEF$U6?Uo4p3scf?{oiX9pe zq@9Zz5m;r&;L?lT7||=ng!-ysIKrxL#DR=iZT{1$EuT%(nnHDu=rh`@gdN8ZWkBd18f0c@?*iYLldJ8&oMc+Y46}>DMN@1M} z!i4t%SzJL{z%V(hvWEYySY=X1rvBtkMht8o0`; zk3hFzL&vBT2C}Xry9(8vS?)+L=Q5jygH?Yeh!u~_(EW(Bnl3G55)7Ble ziivgpZ2ain!nLt%^XQR$FuOB4iVtAEV*=bACcwz~58(o*O>bDMemI^D9+PA`H68-# zTImdIsY_;CKElg4stT|8Z>bSCvA2;cFJSnpLwY}@-@$^0PIO#dYdk$~oPZ0W`J5Fo zpt=+aVx@XHfRcnrt^u4?55t!~$kU=6*Kk6OdM#6!b&RK5<~FOfv`n1pvJ?z@HHjI= zZt`3{j?9v-{G4c5(RcAU_UYJ2pIl_%!R1=1gQds`ryDkaf5Epz<}xmwA6PqlTq56f z_ZW^ti?rok(BO*mrCCjC2_kAeDo97vgc70b;CNpTJ6qzqFZ?-*hoL5Q4!b@+RVedi zffEJ@DWBF(nZS5se?7|3gpLM-#V9Awo$RFIXeArQiPq34<~zw~x-kld_EAL`eB4CT zXYu?a()}7o6>duEk(8Fy2M8+F2B?!}DtIGAP3lJ@IgZRWsqcd$mz&g26z(|2hZE=2 zk^2uI6Pr}L0MS!=lJwW^;=+D9nvNBjPj$p z)#Wf%z@=5Q#9;=_v=)qa%36q(R)oJ+-P3-Ur+vB3Cb8wbFKf_^+ZLKsb*{zsD^~S=576o^N_KSK*jx42b?oHyE~YiM z+!g=G-ATP+Zor9tW6^E$G?x6E1kakAt)W@)$r|b`e_iFTPX3aw)=*FR>m`3R^sp4# zN9METZ$J5aQU0FRnkf5-oOoOQZk4}3$=?$BTO@xI933odHwpwh=cRv1(m0 z@ji6hQGSrg`6@-$o=)F`H?q02gIU!K|7g$GQCM1+hr*({KK%CmeI3){?VFUYS{F;k zukK@4W^^?b;$CE%56CE_j9ijbtxF|-0Nt9%H@V2mugT_!m(7>h%qwZ}_B5o)-S*Nd zxwM>?%iphmHov^y>e^nQnyM>dl{15cn{{m8%)tDcdu2ZoDdVb*ze;?wjXzF&osHj0 z{E-eiH8#GC2Azoc1*Bgnppo!XKtXPrB2u;2+y(HaUZx2Gz; zib@~LjZ0Q5MbZ=yv^tXgbB7%*=P$AU%?gXXs*@|Mgxu1Ir!Tp}obYE%y(i15(4tE$ zdv>aD@e}sa>~PmDxOwB{CKk^jiI#1wakeqH@g10`TDO8)c-+Rz-4<0V%XgA|#m7%| zZh}_^*+6*--^h6~Z~2<_niD3NI3j_*W1v< zy{-t}Q}C36%?h?C_?v>7L$-OF$f7#!mFxaSnq~|N?Df?~pb4wLLfP#(+rYb1kuwm#orGhI8o>XwFg3A@GQ_5{u zutvdtO8zk=?fU*C#ZyJl?zgAX()It4m(Sr+DQ0TNor`Vhx_@B1o$GAO!Z2sgnKrFv zAPX)_sI6OA#`Biiq{aOO|J((JS@Rc{OrAS;`ZU9|MYEopzQ|CtpmhGUXvf;crD;M+ z`@h8qFp9v9TfY$`j~o0@{$<7)a=fT<7UWqvs*%4v$p4*Yu7*TX-`*R z(~@2-lQ}NBWO`YNao&6s=BgJXU<0L3e81gYrZ4HG`I$*aZ*;Trbws^!Ak z*{q*ABuF)fXZ^uN_>Uim!{5i}2uN^5&LOkE zpqj(JFh}G6d;T(q$!bwspw<(gWRT#hD`83HLk(o0nsT<`a}cC)E_BELEcD7QfrsNu zSWS7jkvzGMyjA4M4`3dG>|IwtC4$_kBX{nXr=YeT6+ZUORP;IJ`3J&(@{ zknG>G3h(Yz@eay)3!nFt9F8kgrE=*s(!P3uv)?4duAPnMvO^UfKIBCU6lo5G-v)C} zF13?guZZeQne-$`TSj~18Fplq+c9I--E>hr?Ni?vC7*$ydJIfd5+`eIe5Dt zL?Z89B;L2zr3wa>!Twh#L2$RfBygg=AIC1Q897Op%yF-R0=83A&~ejTxMyYDGilyY z#W_yv#5oSPFAi1NK2glk+{t7R^QbI#sbGoBk?# zYZyNHps660Mu&C@BIt2@g^g4pcE@}t?%6!75LuVyu8&ab zhI3p$wrst>UgnU>f8Ew0ww(9ZhnaTb9pEbHh@69pX?n?Rapj)PgXs>syjI0&F|oCA zPPR!t&4G)>IQ0iPzhSH8*)%PjXLWq-g$T|*&Ne3tQE28Yd=`KNR~lwj6qh3Ss(4N{ z0Be{ntBTRbVnWOVt#7Y_(yYG9qp)KRPi0VFF#Z!W96M#_X)4Yw-wrEL;C7DYxLQz) zVxeQ24{+uJu(|^kXSbk1wjcrm6503n&t$7Blm0` z7Geiomi6Plalx}VuIp?p7-SKS1EK$Dlc_OyE{U$Db8fI}5RIvR{^Ybt;Ciy|6bsQXPxe5;7BO zQmJhP_>CSe|1`0fFJqfG&Tz|v>3`<=Z;Vy3>K8REVNqmy-J2iarDYM|HBL1sL_ z&EO1BjIDWEI300XF=Q7zC>BAcgG|#wZ#85hWQGp18psN%YzNsnDr?>t?DzlgMgRX^ z^#Ag`C`egj|G5ABeJ`rrwI$4H({9mibfxWX6jY2i4Rjz5OC@3h9Ou4xwx;@Js~Gb?_9cbjD_*+l(~}ECcy~UjbYljl&i?)xfDS zSl2LF4D`e8q8Ypa*e3yj6hg{WU}P_p2TzgDRuI{w@aKt*H*plg(|?0dMj`N3h2IH$ zArU*%7E}z}1d5`=<`aOgc6N`j8XO0HuN_oCnGWZ;LZgKLwr? zfL;a_gD1QPDhJQ?<+uSLsyGigMd6EqM-WcF44sZ)C558{QxP{nPM8I115cO-@_E&U zBNcg}i82Oa|E3I}GzcRGz8W}Igdy;SK+h~Z674|u0^8#^!o5S#t&kHQ038QUcocLF ze8+ft!hYI1FJCLM+0+K;hsC?S^9#f$tcg^@B`8s5K38Li$rp zIe5ZXKzqP<48I`4D|SQjDN>ijAFFIAfGpESPMQ1JmE=D3V4dS zpMdhfQxt9lm4NRUW>Fw!9t~$8C#(h?2T!;IbPl{6UYU@fc#Gn$!Z8R3z!S~{X?CK! zfk(!{A@Ci;CJMEL37FN86LtcP2T!O4m4PSJgGlZJd=9i0{0iVVAl)tueG8ZeAe!NA zz@UjX-T<5qGD1ER7(WS<5rq?gou{G|;0?efpla}CK+ow|IpAY~!$1a9kPoZ|(efrd z52Cu7f%+nhKV|qJhke`QD0Nw~p2T?B){xBc&fb1;bxZGmQ0}~SC!R!Z7#dSdch3FCRM&L!z zRp>khdLynSodjSph;#_wQ+Pawal1hl=;KL@I}5r8UWYip7bul>QsCPPPtOyk;rLJn zy(8RGczOb$n}5qT8}dsy?hbezuosB*=_b4oG#48b-83owCZ3Q2?sQa4m)DfrEEw6~{??W)$$R`l`~8l*IQY<_8=d`r{CRfF5JxHH{_v~Me>3saj`~ME zzMMJ!yTyH4Ru46W{V`zcXW=DpRuLjGDZz=+98Q6gJtN|K;~x zD~EI$_l3zkrs=POw9%d;FMN9Xg*o>R_50@6X@9+1V@lxWtvS)}$0x15<9`o2v^gUt zaH`dAUTk%##RBl11Z9f?w1a*IuBnZ9Pgr;Tb>)#EI zdn>(S{4ale((UKZgZKR9vSsh~$Su-y$DK1~)$WTFT>0sh@3Bv44ArlmsPgfMi;e3M z+aoS6Ha%^eCFZSMZ4_|v`Y8Lx4(Q*CygA3L?_&M{; zo5R-i|1>Wq^yJxpf5;zxBVkwl_3msTgA*DIV9e;vFM;e|~_En|Y)AhXW2x9XR6i-&|icck8q1`Gn=k)pO?ab8?Q_9r1p+ zjt&W`Z lIPKT6?=A-YHa^2J?dEIsKhOH=m~pjl(3kVKh delta 14769 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 From d5316b36a285287a3e02a1c568c4b66f02c23c7b Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 21 Jan 2021 22:54:30 -0500 Subject: [PATCH 5/6] center gui on initial resize position is no longer based on the Form.Location property, should fix issues with multi-monitor setups --- grapher/Form1.cs | 17 +++++++++++++---- grapher/Models/AccelGUI.cs | 1 - 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/grapher/Form1.cs b/grapher/Form1.cs index 71a5e017..6927211b 100644 --- a/grapher/Form1.cs +++ b/grapher/Form1.cs @@ -160,6 +160,8 @@ public RawAcceleration() DirectionalityRangeLabel, RangeActiveValueX, RangeActiveValueY); + + ResizeAndCenter(); } #endregion Constructor @@ -191,18 +193,25 @@ public void ResetAutoScroll() chartsPanel.AutoScrollPosition = Constants.Origin; } - public void DoResize() + public void ResizeAndCenter() { ResetAutoScroll(); - var workingArea = Screen.PrimaryScreen.WorkingArea; + var workingArea = Screen.FromControl(this).WorkingArea; var chartsPreferredSize = chartsPanel.GetPreferredSize(Constants.MaxSize); Size = new Size { - Width = Math.Min(workingArea.Width - Location.X, optionsPanel.Size.Width + chartsPreferredSize.Width), - Height = Math.Min(workingArea.Height - Location.Y, chartsPreferredSize.Height + 48) + Width = Math.Min(workingArea.Width, optionsPanel.Size.Width + chartsPreferredSize.Width), + Height = Math.Min(workingArea.Height, chartsPreferredSize.Height + 48) }; + + Location = new Point + { + X = workingArea.X + (workingArea.Width - Size.Width) / 2, + Y = workingArea.Y + (workingArea.Height - Size.Height) / 2 + }; + } #endregion Method diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 4dd7caa1..a0d3aa88 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -71,7 +71,6 @@ public AccelGUI( } SetupButtons(); - AccelForm.DoResize(); // TODO: The below removes an overlapping form from the anisotropy panel. // Figure out why and remove the overlap and below. From c50b20015d3032b2045ddaf9b6987ddbce855b06 Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 21 Jan 2021 22:56:55 -0500 Subject: [PATCH 6/6] change toggle text, "enabled" -> "disable" --- grapher/Models/AccelGUI.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index a0d3aa88..3a30a9b0 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -229,7 +229,7 @@ private void SetButtonDefaults() ToggleButton.Checked = LastToggleChecked; ToggleButton.Font = DefaultButtonFont; - ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled"; + ToggleButton.Text = ToggleButton.Checked ? "Disable" : "Enable"; ToggleButton.Update(); WriteButton.Font = DefaultButtonFont;