Ejemplo n.º 1
0
 private void CreateDefaultSettings()
 {
     Sensor         = new Sensors.Settings();
     Filter         = new Filters.Settings();
     MouseEmulation = new MouseEmulationSettings();
     Logging        = new LoggingSettings();
 }
Ejemplo n.º 2
0
        private GazePointer(Window window, GazeClickParameters clickParameters, GetGazeClickParameters getGazeClickParameters,
                            Settings settings, bool forceMouseCursor)
        {
            // TODO: Addition of loggingSettings with default as parameter WILL have introduced logging configuration bug.

            _settings         = settings;
            _sensorSettings   = settings.Sensor;
            _filterSettings   = settings.Filter;
            _loggingSettings  = settings.Logging;
            _forceMouseCursor = forceMouseCursor;

            if (_sensorSettings.Sensor == Sensors.Sensors.Mouse)
            {
                _filterSettings.ActiveFilter = FilterType.NullFilter;
            }

            _settings.PropertyChanged       += (o, args) => _window.Dispatcher.BeginInvoke(new GazePointerDelegate(UpdateCursorStyle));
            _filterSettings.PropertyChanged += (o, args) => _logFilter.Settings = _filterSettings;

            _window       = window;
            _windowClosed = false;

            _defaultClickParams = clickParameters;
            _getGazeClickParams = getGazeClickParameters;

            FindMainWindow();

            window.LocationChanged += OnWindowLocationOrSizeChanged;
            window.SizeChanged     += OnWindowLocationOrSizeChanged;
            window.Closed          += OnWindowClosed;

            UpdateCursorStyle();

            var source = PresentationSource.FromVisual(window);

            _transform        = source.CompositionTarget.TransformFromDevice;
            _reverseTransform = source.CompositionTarget.TransformToDevice;

            //
            // By the time we get here, the window may already be positioned correctly and
            // may receive no further location/size changed events. If that doesn't happen
            // _topLeft and _bottomRight don't get initialized correctly.
            // So force a call here
            //
            OnWindowLocationOrSizeChanged(window, null);

            if (source == null)
            {
                throw new NullReferenceException("Window does not contain a PresentationSource, may not be properly initialized");
            }
            if (source.CompositionTarget == null)
            {
                throw new NullReferenceException("Window Source does not contain a CompositionTarget, may not be properly initialized");
            }

            OriginalSignal = new GazeStats();
            FilteredSignal = new GazeStats();

            _xyFilter = InitializeFilter();

            _gazeHistory    = new List <GazeHistoryItem>();
            _hitTargetTimes = new Dictionary <FrameworkElement, int>();
            _hitTarget      = _offScreenElement;

            _gazeDataProvider.GazeEvent += OnGazeData;

            _idleDetector.GoneIdle += OnEyeGazeGoneIdle;
        }