FakeTracker.cs 1.76 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
using System;
using System.Drawing;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Forms;

namespace TrackerBridge
{
    public class FakeTracker : IBridgeTracker
    {
11

12 13
        public event GazeDataHandler GazeDataAvailable {
            add {
14
                GazeDataProcessor.GazeDataProcessed += value;
15 16
            }
            remove {
17
                GazeDataProcessor.GazeDataProcessed -= value;
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
            }
        }
        public event EventHandler<Single> TrackingFrequencyChanged;

        private Single trackerFrequency;
        public String SerialNumber => throw new NotImplementedException();

        public GazeDataProcessor GazeDataProcessor { get; }

        public FakeTracker(Single frequency)
        {
            trackerFrequency = frequency;
            GazeDataProcessor = new GazeDataProcessor(this);
            //GazeDataProcessor.OutputFrequency = 1;
            Task.Run(() => SimulateGazeDataHz(frequency));
        }

        private void SimulateGazeDataHz(Single frequency)
        {
            System.Timers.Timer timer = new System.Timers.Timer(1000.0 / frequency); //TODO: Implement Dispose
            timer.Elapsed += (Object sender, ElapsedEventArgs e) =>
            {
                Point mousePosition = Control.MousePosition;
                GazeData data = new GazeData(mousePosition.X, mousePosition.Y, mousePosition.X, mousePosition.Y, 0, 0);
                GazeDataProcessor.Process(this, data);
            };
            timer.AutoReset = true;
            timer.Start();
        }

        public Single GetTrackingFrequency()
        {
            return trackerFrequency;
        }
        public void SetTrackingFrequency(Single value)
        {
            throw new NotImplementedException();
        }
    }
}