Exemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }