private Tracker(GTCommands commands) { log.Info("Constructing Tracker..."); this.commands = commands; detectionManager = new DetectionManager(); calibration = new Calibration.Calibration(); recalibration = new Recalibration(); eyeMovement = new Classifier(); exponentialSmoother = new ExponentialSmoother(Settings.Instance.EyeMovement.SmoothNumberOfSamples, 0, (int)Math.Ceiling(Settings.Instance.EyeMovement.SmoothLevel / 5.0)); visualization = new Visualization(); server = new UDPServer(); gazeDataRaw = new GTGazeData(); gazeDataSmoothed = new GTGazeData(); gazeDazaExtended = new GTExtendedData(); processingDone = true; timerCalibrationDelay = new DispatcherTimer(); timerCalibrationDelay.Interval = TimeSpan.FromMilliseconds(calibrationDelayMilliseconds); timerCalibrationDelay.Tick += TimerCalibrationTick; logGaze = new Logger(); logGaze.Server = server; // Used to send messages back to client (log start/stop etc.) log.Info( "Looking up LoggingEnabled in FileSettings" ); logGaze.IsEnabled = Settings.Instance.FileSettings.LoggingEnabled; log.Info( "Setting RecalibrationAvailableHandler" ); recalibration.RecalibrationAvailable += new Recalibration.RecalibrationAvailableHandler( recalibration_RecalibrationAvailable ); //recalibration.OnRecalibrationAvailable +=new Recalibration.RecalibrationAvailable(recalibration_OnRecalibrationAvailable); Settings.Instance.Processing.PropertyChanged += ProcessingSettingsPropertyChanged; timerCalibrationDelay.Tick += TimerCalibrationTick; if ( GTHardware.Camera.Instance.Device != null ) { log.Info( "Setting GTHardware device OnImage EventHandler" ); GTHardware.Camera.Instance.Device.OnImage += new EventHandler<GTHardware.Cameras.ImageEventArgs>( Device_OnImage ); } log.Info("Completed constructing Tracker"); }
/// <summary> /// Is called whenever new raw data is available, /// sends the <see cref="GTExtendedDataChanged"/> event. /// </summary> /// <param name="data">The gaze data.</param> private void OnGTExtendedDataChanged(GTExtendedData data) { this.lastTime = data.TimeStamp; if (this.GTExtendedDataChanged != null) { this.GTExtendedDataChanged(data); } }
/// <summary> /// The <see cref="GTExtendedData"/> event handler /// which is called whenever there is a new frame arrived. /// Sends the GazeDataChanged event to the recording module. /// </summary> /// <param name="data">The tracking data with the mapped gaze /// coordinates in pixel units.</param> private void OnGTExtendedDataChanged(GTExtendedData data) { var gazeData = new GazeData { Time = data.TimeStamp, PupilDiaX = (float)data.PupilDiameterLeft, PupilDiaY = (float)data.PupilDiameterRight, // Calculate values between 0..1 GazePosX = (float)(data.GazePositionX / this.presentationScreenSize.Width), GazePosY = (float)(data.GazePositionY / this.presentationScreenSize.Height) }; this.OnGazeDataChanged(new GazeDataChangedEventArgs(gazeData)); }