From 8fa4e35b7f07b42a26b89705fd5cc9d42489d236 Mon Sep 17 00:00:00 2001 From: X9VoiD Date: Fri, 21 Jan 2022 00:06:07 +0800 Subject: [PATCH] Update again... --- .modules/OpenTabletDriver | 2 +- Directory.Build.props | 2 +- .../TouchEmu/{Touch.cs => TouchDevice.cs} | 30 +++++++++---------- OutputMode/TouchEmu/TouchPointerHandler.cs | 27 +++++++++-------- .../VMultiMode/Output/VMultiAbsoluteMode.cs | 2 +- .../VMultiMode/Output/VMultiRelativeMode.cs | 2 +- .../WindowsInk/Output/WinInkAbsoluteMode.cs | 2 +- .../WindowsInk/Output/WinInkRelativeMode.cs | 2 +- 8 files changed, 35 insertions(+), 34 deletions(-) rename OutputMode/TouchEmu/{Touch.cs => TouchDevice.cs} (82%) diff --git a/.modules/OpenTabletDriver b/.modules/OpenTabletDriver index b8b346c..5025896 160000 --- a/.modules/OpenTabletDriver +++ b/.modules/OpenTabletDriver @@ -1 +1 @@ -Subproject commit b8b346c4e50186f5f623beedb2fdb682600c2b61 +Subproject commit 502589660232add52a1ae7bd7de584e7192f2ec2 diff --git a/Directory.Build.props b/Directory.Build.props index 5bd4b75..309bfc1 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,7 +3,7 @@ net6.0 true enable - 0.3.0 + 0.3.1 diff --git a/OutputMode/TouchEmu/Touch.cs b/OutputMode/TouchEmu/TouchDevice.cs similarity index 82% rename from OutputMode/TouchEmu/Touch.cs rename to OutputMode/TouchEmu/TouchDevice.cs index 33edeee..93d0749 100644 --- a/OutputMode/TouchEmu/Touch.cs +++ b/OutputMode/TouchEmu/TouchDevice.cs @@ -3,14 +3,14 @@ using System.Runtime.InteropServices; namespace VoiDPlugins.OutputMode { - public static class Touch + public class TouchDevice { - private static IntPtr _penHandle; - private static POINTER_TYPE_INFO[]? pointer; - private static uint _pointerId; - private static IntPtr _sourceDevice; + private readonly IntPtr _penHandle; + private readonly POINTER_TYPE_INFO[]? pointer; + private readonly uint _pointerId; + private readonly IntPtr _sourceDevice; - public static unsafe void Init() + public unsafe TouchDevice() { NativeMethods.GetPointerDevices(out uint count, null); POINTER_DEVICE_INFO[] pointerDevices = new POINTER_DEVICE_INFO[count]; @@ -21,7 +21,7 @@ namespace VoiDPlugins.OutputMode if (device.pointerDeviceType == POINTER_DEVICE_TYPE.EXTERNAL_PEN || device.pointerDeviceType == POINTER_DEVICE_TYPE.INTEGRATED_PEN) { - _pointerId = (uint)device.startingCursorId; + _pointerId = device.startingCursorId; _sourceDevice = new IntPtr(device.device); } } @@ -77,7 +77,7 @@ namespace VoiDPlugins.OutputMode ClearPointerFlags(POINTER_FLAGS.INRANGE | POINTER_FLAGS.PRIMARY); } - public static void Inject() + public void Inject() { if (!NativeMethods.InjectSyntheticPointerInput(_penHandle, pointer!, 1)) { @@ -85,38 +85,38 @@ namespace VoiDPlugins.OutputMode } } - public static void SetTarget() + public void SetTarget() { pointer![0].penInfo.pointerInfo.hwndTarget = NativeMethods.GetForegroundWindow(); } - public static void SetPosition(POINT point) + public void SetPosition(POINT point) { pointer![0].penInfo.pointerInfo.ptPixelLocation = point; pointer[0].penInfo.pointerInfo.ptPixelLocationRaw = point; } - public static void SetPressure(uint pressure) + public void SetPressure(uint pressure) { pointer![0].penInfo.pressure = pressure; } - public static void SetPointerFlags(POINTER_FLAGS flags) + public void SetPointerFlags(POINTER_FLAGS flags) { pointer![0].penInfo.pointerInfo.pointerFlags |= flags; } - public static void UnsetPointerFlags(POINTER_FLAGS flags) + public void UnsetPointerFlags(POINTER_FLAGS flags) { pointer![0].penInfo.pointerInfo.pointerFlags &= ~flags; } - public static void ClearPointerFlags() + public void ClearPointerFlags() { pointer![0].penInfo.pointerInfo.pointerFlags = 0; } - public static void ClearPointerFlags(POINTER_FLAGS flags) + public void ClearPointerFlags(POINTER_FLAGS flags) { pointer![0].penInfo.pointerInfo.pointerFlags = flags; } diff --git a/OutputMode/TouchEmu/TouchPointerHandler.cs b/OutputMode/TouchEmu/TouchPointerHandler.cs index f6d17d1..a43b55d 100644 --- a/OutputMode/TouchEmu/TouchPointerHandler.cs +++ b/OutputMode/TouchEmu/TouchPointerHandler.cs @@ -5,40 +5,41 @@ namespace VoiDPlugins.OutputMode { public class TouchPointerHandler : IAbsolutePointer, IPressureHandler { + private readonly TouchDevice _touchDevice; private bool _inContact; private bool _lastContact; public TouchPointerHandler() { - Touch.Init(); + _touchDevice = new TouchDevice(); _inContact = false; _lastContact = false; } public void SetPosition(Vector2 pos) { - Touch.SetPosition(new POINT((int)pos.X, (int)pos.Y)); + _touchDevice.SetPosition(new POINT((int)pos.X, (int)pos.Y)); if (_inContact != _lastContact) { if (_inContact) { - Touch.UnsetPointerFlags(POINTER_FLAGS.UP | POINTER_FLAGS.UPDATE); - Touch.SetPointerFlags(POINTER_FLAGS.DOWN); + _touchDevice.UnsetPointerFlags(POINTER_FLAGS.UP | POINTER_FLAGS.UPDATE); + _touchDevice.SetPointerFlags(POINTER_FLAGS.DOWN); _lastContact = _inContact; } else { - Touch.UnsetPointerFlags(POINTER_FLAGS.DOWN | POINTER_FLAGS.UPDATE); - Touch.SetPointerFlags(POINTER_FLAGS.UP); + _touchDevice.UnsetPointerFlags(POINTER_FLAGS.DOWN | POINTER_FLAGS.UPDATE); + _touchDevice.SetPointerFlags(POINTER_FLAGS.UP); _lastContact = _inContact; } } else { - Touch.SetPointerFlags(POINTER_FLAGS.UPDATE); + _touchDevice.SetPointerFlags(POINTER_FLAGS.UPDATE); } - Touch.SetTarget(); - Touch.Inject(); + _touchDevice.SetTarget(); + _touchDevice.Inject(); } public void SetPressure(float percentage) @@ -46,14 +47,14 @@ namespace VoiDPlugins.OutputMode var pressure = (uint)(percentage * 1024); if (pressure > 0) { - Touch.SetPressure(pressure); - Touch.SetPointerFlags(POINTER_FLAGS.INCONTACT | POINTER_FLAGS.FIRSTBUTTON); + _touchDevice.SetPressure(pressure); + _touchDevice.SetPointerFlags(POINTER_FLAGS.INCONTACT | POINTER_FLAGS.FIRSTBUTTON); _inContact = true; } else { - Touch.SetPressure(1); - Touch.UnsetPointerFlags(POINTER_FLAGS.INCONTACT | POINTER_FLAGS.FIRSTBUTTON); + _touchDevice.SetPressure(1); + _touchDevice.UnsetPointerFlags(POINTER_FLAGS.INCONTACT | POINTER_FLAGS.FIRSTBUTTON); _inContact = false; } } diff --git a/OutputMode/VMultiMode/Output/VMultiAbsoluteMode.cs b/OutputMode/VMultiMode/Output/VMultiAbsoluteMode.cs index b3918ef..202a2a7 100644 --- a/OutputMode/VMultiMode/Output/VMultiAbsoluteMode.cs +++ b/OutputMode/VMultiMode/Output/VMultiAbsoluteMode.cs @@ -22,7 +22,7 @@ namespace VoiDPlugins.OutputMode [OnDependencyLoad] public void Initialize() { - _pointer = new VMultiAbsolutePointer(TabletReference, _virtualScreen!); + _pointer = new VMultiAbsolutePointer(Tablet, _virtualScreen!); } public override IAbsolutePointer Pointer diff --git a/OutputMode/VMultiMode/Output/VMultiRelativeMode.cs b/OutputMode/VMultiMode/Output/VMultiRelativeMode.cs index 22e4cab..43fc426 100644 --- a/OutputMode/VMultiMode/Output/VMultiRelativeMode.cs +++ b/OutputMode/VMultiMode/Output/VMultiRelativeMode.cs @@ -13,7 +13,7 @@ namespace VoiDPlugins.OutputMode [OnDependencyLoad] public void Initialize() { - _pointer = new VMultiRelativePointer(TabletReference); + _pointer = new VMultiRelativePointer(Tablet); } public override IRelativePointer Pointer diff --git a/OutputMode/WindowsInk/Output/WinInkAbsoluteMode.cs b/OutputMode/WindowsInk/Output/WinInkAbsoluteMode.cs index 155e8fe..20541f8 100644 --- a/OutputMode/WindowsInk/Output/WinInkAbsoluteMode.cs +++ b/OutputMode/WindowsInk/Output/WinInkAbsoluteMode.cs @@ -22,7 +22,7 @@ namespace VoiDPlugins.OutputMode [OnDependencyLoad] public void Initialize() { - _pointer = new WinInkAbsolutePointer(TabletReference, _virtualScreen!); + _pointer = new WinInkAbsolutePointer(Tablet, _virtualScreen!); } public override IAbsolutePointer Pointer diff --git a/OutputMode/WindowsInk/Output/WinInkRelativeMode.cs b/OutputMode/WindowsInk/Output/WinInkRelativeMode.cs index 50c9d1f..e2f9988 100644 --- a/OutputMode/WindowsInk/Output/WinInkRelativeMode.cs +++ b/OutputMode/WindowsInk/Output/WinInkRelativeMode.cs @@ -22,7 +22,7 @@ namespace VoiDPlugins.OutputMode [OnDependencyLoad] public void Initialize() { - _pointer = new WinInkRelativePointer(TabletReference, _virtualScreen!); + _pointer = new WinInkRelativePointer(Tablet, _virtualScreen!); } public override IRelativePointer Pointer