private SensorContext CreateAndAddSensorContext(InkInputProvider inkInputProvider, InputDevice inputDevice) { // Create the sensor channel groups using the input provider and device SensorChannelsContext defaultSensorChannelsContext = CreateChannelsGroup(inkInputProvider, inputDevice); SensorChannelsContext specialChannelsContext = new SensorChannelsContext( inkInputProvider, inputDevice, new List <SensorChannel> { mTimestampSensorChannel }, //, mSpecialPressureSensorChannel }, latency: 2, samplingRateHint: 2); // Create the sensor context using the sensor channels contexts SensorContext sensorContext = new SensorContext(); sensorContext.AddSensorChannelsContext(defaultSensorChannelsContext); //sensorContext.AddSensorChannelsContext(specialChannelsContext); Identifier sensorContextId = sensorContext.Id; bool res = InkDocument.InputConfiguration.SensorContexts.Any((context) => context.Id == sensorContextId); if (!res) { InkDocument.InputConfiguration.SensorContexts.Add(sensorContext); } return(sensorContext); }
private InkInputProvider CreateAndAddInkProvider(string pointerDeviceType) { InkInputProvider inkInputProvider = new InkInputProvider((InkInputType)Enum.Parse(typeof(InkInputType), pointerDeviceType)); //inkInputProvider.AddProperty(); // Add properties if any inkInputProvider.Seal(); Identifier inkInputProviderId = inkInputProvider.Id; bool res = InkDocument.InputConfiguration.InkInputProviders.Any((prov) => prov.Id == inkInputProviderId); if (!res) { InkDocument.InputConfiguration.InkInputProviders.Add(inkInputProvider); } return(inkInputProvider); }
private void EncodeCurrentStrokeCommon(string pointerDeviceType, InkBuilder inkBuilder, Style style) { // Create the ink input provider using the pointer device type InkInputProvider inkInputProvider = CreateAndAddInkProvider(pointerDeviceType); // Create the input device using EasClientDeviceInformation or any other class providing relevant info InputDevice inputDevice = CreateAndAddInputDevice(); // Create the sensor context SensorContext sensorContext = CreateAndAddSensorContext(inkInputProvider, inputDevice); // Create the input context using the environment and the sensor context Identifier inputContextId = CreateAndAddInputContext(sensorContext.Id); // Create sensor data using the input context SensorData sensorData = new SensorData( Identifier.FromNewGuid(), inputContextId, Wacom.Ink.Serialization.InkState.Plane); // Get the sensor data from the ink builders List <PointerData> pointerDataList = inkBuilder.GetPointerDataList(); // Fill the default channels with the sensor data FillDefaultChannels(sensorData, sensorContext, pointerDataList); InkDocument.SensorData.Add(sensorData); Spline spline = inkBuilder.SplineProducer.AllData; PathPointLayout layout = inkBuilder.Layout; Stroke stroke = new Stroke( Identifier.FromNewGuid(), spline.Clone(), style, layout, sensorData.Id); StrokeNode strokeNode = new StrokeNode(Identifier.FromNewGuid(), stroke); InkDocument.InkTree.Root.Add(strokeNode); }
public static SensorChannelsContext CreateChannelsGroup( InkInputProvider inkInputProvider, InputDevice inputDevice, uint?latency = null, uint?samplingRateHint = null) { const uint precision = 2; List <SensorChannel> sensorChannels = new List <SensorChannel>(); sensorChannels.Add(new SensorChannel(InkSensorType.X, InkSensorMetricType.Length, null, 0.0f, 0.0f, precision)); sensorChannels.Add(new SensorChannel(InkSensorType.Y, InkSensorMetricType.Length, null, 0.0f, 0.0f, precision)); sensorChannels.Add(new SensorChannel(InkSensorType.Timestamp, InkSensorMetricType.Time, null, 0.0f, 0.0f, 0)); SensorChannelsContext sensorChannelsContext = new SensorChannelsContext( inkInputProvider, inputDevice, sensorChannels, latency, samplingRateHint); return(sensorChannelsContext); }
private void InitInputConfig() { // Init input providers var mouseInputProvider = new InkInputProvider(InkInputType.Mouse); var touchInputProvider = new InkInputProvider(InkInputType.Touch); var penInputProvider = new InkInputProvider(InkInputType.Pen); mouseInputProvider.Seal(); touchInputProvider.Seal(); penInputProvider.Seal(); // Cache input providers mInkInputProvidersMap.Add(mouseInputProvider.Id, mouseInputProvider); mInkInputProvidersMap.Add(touchInputProvider.Id, touchInputProvider); mInkInputProvidersMap.Add(penInputProvider.Id, penInputProvider); // Init input device mCurrentInputDevice.Properties["dev.name"] = mEAS.FriendlyName; mCurrentInputDevice.Properties["dev.model"] = mEAS.SystemProductName; mCurrentInputDevice.Properties["dev.manufacturer"] = mEAS.SystemManufacturer; mCurrentInputDevice.Seal(); // Cache input device mInputDevices.Add(mCurrentInputDevice.Id, mCurrentInputDevice); // Init environment mEnvironment.Properties["os.name"] = mEAS.OperatingSystem; mEnvironment.Properties["os.version.code"] = System.Environment.OSVersion.Version.ToString(); mEnvironment.Seal(); // Cache the environment mEnvironments.Add(mEnvironment.Id, mEnvironment); // Init sensor channels contexts SensorChannelsContext mouseSensorChannelsContext = CreateChannelsGroup(mouseInputProvider, mCurrentInputDevice); SensorChannelsContext touchSensorChannelsContext = CreateChannelsGroup(touchInputProvider, mCurrentInputDevice); SensorChannelsContext penSensorChannelsContext = CreateChannelsGroup(penInputProvider, mCurrentInputDevice); // Cache sensor channels contexts mSensorChannelsContexts.Add(mouseSensorChannelsContext.Id, mouseSensorChannelsContext); mSensorChannelsContexts.Add(touchSensorChannelsContext.Id, touchSensorChannelsContext); mSensorChannelsContexts.Add(penSensorChannelsContext.Id, penSensorChannelsContext); // Init sensor contexts SensorContext mouseSensorContext = new SensorContext(); mouseSensorContext.AddSensorChannelsContext(mouseSensorChannelsContext); SensorContext touchSensorContext = new SensorContext(); touchSensorContext.AddSensorChannelsContext(touchSensorChannelsContext); SensorContext penSensorContext = new SensorContext(); penSensorContext.AddSensorChannelsContext(penSensorChannelsContext); // Cache sensor contexts mSensorContexts.Add(mouseSensorContext.Id, mouseSensorContext); mSensorContexts.Add(touchSensorContext.Id, touchSensorContext); mSensorContexts.Add(penSensorContext.Id, penSensorContext); // Init input contexts InputContext mouseInputContext = new InputContext(mEnvironment.Id, mouseSensorContext.Id); InputContext touchInputContext = new InputContext(mEnvironment.Id, touchSensorContext.Id); InputContext penInputContext = new InputContext(mEnvironment.Id, penSensorContext.Id); // Cache input contexts mInputContexts.Add(mouseInputContext.Id, mouseInputContext); mInputContexts.Add(touchInputContext.Id, touchInputContext); mInputContexts.Add(penInputContext.Id, penInputContext); mDeviceTypeMap.Add(PointerDeviceType.Mouse, mouseInputContext.Id); mDeviceTypeMap.Add(PointerDeviceType.Touch, touchInputContext.Id); mDeviceTypeMap.Add(PointerDeviceType.Pen, penInputContext.Id); }