public void LoadSensorDataFromModel(InkModel inkModel, SensorData sensorData) { // Load sensor data if missing if (mSensorDataMap.TryAdd(sensorData.Id, sensorData)) { InputContext inputContext = inkModel.InputConfiguration.InputContexts.Find((ic) => ic.Id == sensorData.InputContextID); // Load input context if missing if (mInputContexts.TryAdd(inputContext.Id, inputContext)) { Wacom.Ink.Serialization.Model.Environment environment = inkModel.InputConfiguration.Environments.Find((env) => env.Id == inputContext.EnvironmentId); mEnvironments.TryAdd(environment.Id, environment); SensorContext sensorContext = inkModel.InputConfiguration.SensorContexts.Find((sc) => sc.Id == inputContext.SensorContextId); // Load sensor context if missing if (mSensorContexts.TryAdd(sensorContext.Id, sensorContext)) { // Iterate and load sensor channels contexts if missing for (int j = 0; j < sensorContext.SensorChannelContexts.Count; j++) { SensorChannelsContext sensorChannelsContext = sensorContext.SensorChannelContexts[j]; // Load input device if missing mInputDevices.TryAdd(sensorChannelsContext.InputDevice.Id, sensorChannelsContext.InputDevice); // Load ink input provider if missing mInkInputProvidersMap.TryAdd(sensorChannelsContext.InkInputProvider.Id, sensorChannelsContext.InkInputProvider); } } } } }
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 void PopulateSensorData(SensorData sensorData, SensorContext sensorContext, List <PointerData> pointerDataList) { SensorChannelsContext channels = sensorContext.DefaultSensorChannelsContext; sensorData.AddData(channels.GetChannel(InkSensorType.X), pointerDataList.Select((pd) => pd.X).ToList()); sensorData.AddData(channels.GetChannel(InkSensorType.Y), pointerDataList.Select((pd) => pd.Y).ToList()); sensorData.AddTimestampData(channels.GetChannel(InkSensorType.Timestamp), pointerDataList.Select((pd) => pd.Timestamp).ToList()); }
private void AddSensorDataToModel(SensorData sensorData) { // Add sensor data if missing if (!InkDocument.SensorData.ContainsId(sensorData.Id)) { InkDocument.SensorData.Add(sensorData); InputContext inputContext = mInputContexts[sensorData.InputContextID]; // Add input context if missing if (!InkDocument.InputConfiguration.InputContexts.Contains(inputContext)) { InkDocument.InputConfiguration.InputContexts.Add(inputContext); Wacom.Ink.Serialization.Model.Environment environment = mEnvironments[inputContext.EnvironmentId]; // Add environment if missing if (!InkDocument.InputConfiguration.Environments.Contains(environment)) { InkDocument.InputConfiguration.Environments.Add(environment); } SensorContext sensorContext = mSensorContexts[inputContext.SensorContextId]; // Add sensor context if missing if (!InkDocument.InputConfiguration.SensorContexts.Contains(sensorContext)) { InkDocument.InputConfiguration.SensorContexts.Add(sensorContext); // Iterate and add sensor channels contexts if missing for (int i = 0; i < sensorContext.SensorChannelContexts.Count; i++) { SensorChannelsContext sensorChannelsContext = sensorContext.SensorChannelContexts[i]; // Add input device if missing if (!InkDocument.InputConfiguration.Devices.Contains(sensorChannelsContext.InputDevice)) { InkDocument.InputConfiguration.Devices.Add(sensorChannelsContext.InputDevice); } // Add ink input provider if missing if (!InkDocument.InputConfiguration.InkInputProviders.Contains(sensorChannelsContext.InkInputProvider)) { InkDocument.InputConfiguration.InkInputProviders.Add(sensorChannelsContext.InkInputProvider); } } } } } }
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); }