public void Release(TabletReference tablet, IDeviceReport report) { if (Enum.TryParse <MouseButton>(Button, true, out var mouseButton)) { Pointer?.MouseUp(mouseButton); } }
private void PostDebugReport(TabletReference tablet, IDeviceReport report) { if (report != null && tablet != null) { DeviceReport?.Invoke(this, new DebugReportData(tablet, report)); } }
public void Release(TabletReference tablet, IDeviceReport report) { if (!string.IsNullOrWhiteSpace(Key)) { Keyboard.Release(Key); } }
public T Construct <T>(IServiceManager provider, TabletReference tabletReference = null) where T : class { var obj = Construct <T>(tabletReference, false); PluginManager.Inject(provider, obj); TriggerEventMethods(obj, tabletReference); return(obj); }
private void HandleTabletReport(TabletReference tablet, PenSpecifications pen, ITabletReport report) { float pressurePercent = (float)report.Pressure / (float)pen.MaxPressure * 100f; if (report is IEraserReport eraserReport && eraserReport.Eraser) { Eraser?.Invoke(tablet, report, pressurePercent); }
public void Invoke(TabletReference tablet, IDeviceReport report) { if (report is ITabletReport tabletReport) { float pressure = (float)tabletReport.Pressure / (float)tablet.Properties.Specifications.Pen.MaxPressure; bool isEraser = report is IEraserReport eraserReport ? eraserReport.Eraser : false; Tablet.SetPressure(pressure, isEraser); } }
public Area Convert(TabletReference tablet, double w, double h, double x, double y) { double conversionFactor = XP_PEN_AREA_CONSTANT; var width = w / conversionFactor; var height = h / conversionFactor; var offsetX = (width / 2) + (x / conversionFactor); var offsetY = (height / 2) + (y / conversionFactor); return(new Area((float)width, (float)height, new Vector2((float)offsetX, (float)offsetY), 0f)); }
private void HandleTabletReport(TabletReference tablet, PenSpecifications pen, ITabletReport report) { float pressurePercent = (float)report.Pressure / (float)pen.MaxPressure * 100f; if (report is IEraserReport eraserReport && eraserReport.Eraser) { bool threshold = pressurePercent > EraserActivationPressure; InvokeBinding(tablet, report, EraserBinding, EraserState, threshold); EraserState = threshold; }
public void Invoke(TabletReference tablet, IDeviceReport report) { if (report is ITabletReport tabletReport) { float pressure = (float)tabletReport.Pressure / (float)tablet.Properties.Specifications.Pen.MaxPressure; Tablet.SetPressure(pressure); Tablet.SetButtonState(0, tabletReport.PenButtons[0]); Tablet.SetButtonState(1, tabletReport.PenButtons[1]); } }
public Area Convert(TabletReference tablet, double top, double left, double bottom, double right) { double conversionFactor = GetConversionFactor(tablet); var width = (right - left) / conversionFactor; var height = (bottom - top) / conversionFactor; var offsetX = (width / 2) + (left / conversionFactor); var offsetY = (height / 2) + (top / conversionFactor); return(new Area((float)width, (float)height, new Vector2((float)offsetX, (float)offsetY), 0f)); }
public Area Convert(TabletReference tablet, double up, double left, double down, double right) { var digitizer = tablet.Properties.Specifications.Digitizer; var width = (right - left) * digitizer.Width; var height = (down - up) * digitizer.Height; var offsetX = (width / 2) + (left * digitizer.Width); var offsetY = (height / 2) + (up * digitizer.Height); return(new Area((float)width, (float)height, new Vector2((float)offsetX, (float)offsetY), 0f)); }
protected override void HandleTabletReference(TabletReference tabletReference) { var digitizer = tabletReference.Properties.Specifications.Digitizer; this.mmScale = new Vector3 { X = digitizer.Width / digitizer.MaxX, Y = digitizer.Height / digitizer.MaxY, Z = 1 // passthrough }; }
public T Construct <T>(TabletReference tabletReference = null, bool trigger = true) where T : class { var obj = AppInfo.PluginManager.ConstructObject <T>(Path); ApplySettings(obj); if (trigger) { TriggerEventMethods(obj, tabletReference); } return(obj); }
public virtual void Invoke(TabletReference tablet, IDeviceReport report, bool newState) { if (Binding is IStateBinding stateBinding) { if (newState && !PreviousState) { stateBinding.Press(tablet, report); } else if (!newState && PreviousState) { stateBinding.Release(tablet, report); } } PreviousState = newState; }
public void HandleBinding(TabletReference tablet, IDeviceReport report) { if (tablet == null) { return; } var pen = tablet.Properties.Specifications.Pen; if (report is ITabletReport tabletReport && pen.ActiveReportID.IsInRange(tabletReport.ReportID)) { HandleTabletReport(tablet, pen, tabletReport); } if (report is IAuxReport auxReport) { HandleAuxiliaryReport(tablet, auxReport); } }
private void Select(TabletReference tablet) { if (tablet.Identifiers?.FirstOrDefault()?.VendorID is int vendorId) { var vendor = (DeviceVendor)vendorId; converterList.Select(t => t.Vendor.HasFlag(vendor)); applyButton.Enabled = true; selectedTablet = tablet; } else { // Deselect if no tablet is detected converterList.SelectedIndex = -1; selectedTablet = null; MessageBox.Show("No tablet detected.", MessageBoxType.Error); this.Close(); } }
public void HandleBinding(TabletReference tablet, IDeviceReport report) { if (tablet == null) { return; } if (report is ITabletReport tabletReport) { HandleTabletReport(tablet, tablet.Properties.Specifications.Pen, tabletReport); } if (report is IAuxReport auxReport) { HandleAuxiliaryReport(tablet, auxReport); } if (report is IMouseReport mouseReport) { HandleMouseReport(tablet, mouseReport); } }
public void Invoke(TabletReference tablet, IDeviceReport report, float value) { bool newState = value > ActivationThreshold; if (report is ITabletReport tabletReport) { if (!newState) { tabletReport.Pressure = 0; } else // remap pressure when beyond threshold { var maxPressure = tablet.Properties.Specifications.Pen.MaxPressure; var remappedPressure = (value - ActivationThreshold) / (100f - ActivationThreshold); tabletReport.Pressure = (uint)(maxPressure * remappedPressure); } } base.Invoke(tablet, report, newState); }
protected double GetConversionFactor(TabletReference tablet) { var digitizer = tablet.Properties.Specifications.Digitizer; return(digitizer.MaxX / digitizer.Width); }
private void SetBindingHandlerCollectionSettings(IServiceManager serviceManager, PluginSettingStoreCollection collection, Dictionary <int, BindingState?> targetDict, TabletReference tabletReference) { for (int index = 0; index < collection.Count; index++) { var binding = collection[index]?.Construct <IBinding>(serviceManager, tabletReference); var state = binding == null ? null : new BindingState { Binding = binding }; if (!targetDict.TryAdd(index, state)) { targetDict[index] = state; } } }
private void SetBindingHandlerSettings(InputDeviceTree dev, IOutputMode outputMode, BindingSettings settings, TabletReference tabletReference) { string group = dev.Properties.Name; var bindingHandler = new BindingHandler(outputMode); var bindingServiceProvider = new ServiceManager(); object?pointer = outputMode switch { AbsoluteOutputMode absoluteOutputMode => absoluteOutputMode.Pointer, RelativeOutputMode relativeOutputMode => relativeOutputMode.Pointer, _ => null }; if (pointer is IMouseButtonHandler mouseButtonHandler) { bindingServiceProvider.AddService(() => mouseButtonHandler); } var tip = bindingHandler.Tip = new ThresholdBindingState { Binding = settings.TipButton?.Construct <IBinding>(bindingServiceProvider, tabletReference), ActivationThreshold = settings.TipActivationThreshold }; if (tip.Binding != null) { Log.Write(group, $"Tip Binding: [{tip.Binding}]@{tip.ActivationThreshold}%"); } var eraser = bindingHandler.Eraser = new ThresholdBindingState { Binding = settings.EraserButton?.Construct <IBinding>(bindingServiceProvider, tabletReference), ActivationThreshold = settings.EraserActivationThreshold }; if (eraser.Binding != null) { Log.Write(group, $"Eraser Binding: [{eraser.Binding}]@{eraser.ActivationThreshold}%"); } if (settings.PenButtons != null && settings.PenButtons.Any(b => b?.Path != null)) { SetBindingHandlerCollectionSettings(bindingServiceProvider, settings.PenButtons, bindingHandler.PenButtons, tabletReference); Log.Write(group, $"Pen Bindings: " + string.Join(", ", bindingHandler.PenButtons.Select(b => b.Value?.Binding))); } if (settings.AuxButtons != null && settings.AuxButtons.Any(b => b?.Path != null)) { SetBindingHandlerCollectionSettings(bindingServiceProvider, settings.AuxButtons, bindingHandler.AuxButtons, tabletReference); Log.Write(group, $"Express Key Bindings: " + string.Join(", ", bindingHandler.AuxButtons.Select(b => b.Value?.Binding))); } if (settings.MouseButtons != null && settings.MouseButtons.Any(b => b?.Path != null)) { SetBindingHandlerCollectionSettings(bindingServiceProvider, settings.MouseButtons, bindingHandler.MouseButtons, tabletReference); Log.Write(group, $"Mouse Button Bindings: [" + string.Join("], [", bindingHandler.MouseButtons.Select(b => b.Value?.Binding)) + "]"); } var scrollUp = bindingHandler.MouseScrollUp = new BindingState { Binding = settings.MouseScrollUp?.Construct <IBinding>(bindingServiceProvider, tabletReference) }; var scrollDown = bindingHandler.MouseScrollDown = new BindingState { Binding = settings.MouseScrollDown?.Construct <IBinding>(bindingServiceProvider, tabletReference) }; if (scrollUp.Binding != null || scrollDown.Binding != null) { Log.Write(group, $"Mouse Scroll: Up: [{scrollUp?.Binding}] Down: [{scrollDown?.Binding}]"); } }
private void SetOutputModeSettings(InputDeviceTree dev, IOutputMode outputMode, Profile profile, TabletReference tabletReference) { string group = dev.Properties.Name; outputMode.Tablet = dev; var elements = from store in profile.Filters where store.Enable == true let filter = store.Construct <IPositionedPipelineElement <IDeviceReport> >(tabletReference) where filter != null select filter; outputMode.Elements = elements.ToList(); if (outputMode.Elements != null && outputMode.Elements.Count > 0) { Log.Write(group, $"Filters: {string.Join(", ", outputMode.Elements)}"); } }
public DebugReportData(TabletReference tablet, IDeviceReport report) { this.Tablet = tablet; this.Data = JToken.FromObject(report); this.Path = report.GetType().FullName; }
public void Press(TabletReference tablet, IDeviceReport report) { SetState(true); }
public void SetData(DebugReportData data) { this.data = data; this.tablet = data.Tablet; }
public Profile this[TabletReference tablet] { set => SetProfile(tablet, value);
public void Release(TabletReference tablet, IDeviceReport report) { SetState(false); }