public void GazeDataThreadProc() { while (!_terminating) { EyeTrackingController.SampleStruct sampleData = new EyeTrackingController.SampleStruct(); if (_eyeTracker.iV_GetSample(ref sampleData) != (int)EyeTrackingController.RetCode.Success) { Thread.Sleep(_sleepTime); continue; } EventHandler <GazeEventArgs> handler = GazeEvent; if (handler != null) { GazeEventArgs gazeEventArgs = new GazeEventArgs(sampleData.leftEye.gazeX, sampleData.leftEye.gazeY, sampleData.timestamp / 1000, Fixation.Unknown, false); handler(this, gazeEventArgs); } Thread.Sleep(_sleepTime); } }
private void OnEyeTrackerGazeData(object sender, GazeDataEventArgs e) { EventHandler <GazeEventArgs> handler = GazeEvent; if (handler != null) { Point2D gazePoint; var gazeData = e.GazeData; switch (gazeData.TrackingStatus) { case TrackingStatus.BothEyesTracked: gazePoint = new Point2D((gazeData.Left.GazePointOnDisplayNormalized.X + gazeData.Right.GazePointOnDisplayNormalized.X) / 2.0, (gazeData.Left.GazePointOnDisplayNormalized.Y + gazeData.Right.GazePointOnDisplayNormalized.Y) / 2.0); break; case TrackingStatus.OnlyLeftEyeTracked: case TrackingStatus.OneEyeTrackedProbablyLeft: gazePoint = gazeData.Left.GazePointOnDisplayNormalized; break; case TrackingStatus.OnlyRightEyeTracked: case TrackingStatus.OneEyeTrackedProbablyRight: gazePoint = gazeData.Right.GazePointOnDisplayNormalized; break; default: return; } GazeEventArgs gazeEventArgs = new GazeEventArgs(gazePoint.X, gazePoint.Y, gazeData.Timestamp / 1000, Fixation.Unknown, true); handler(this, gazeEventArgs); } }
private void GazeDataReaderProc() { string line = null; GazeEventArgs ea = null; long curTimeStamp = 0; line = _gazeDataReader.ReadLine(); if (line != null) { ea = ParseGazeEventArgs(line); if (ea != null) { curTimeStamp = ea.Timestamp; } } Thread.Sleep(2000); RaiseGazeEvent(ea); while ((!_terminating) && ((line = _gazeDataReader.ReadLine()) != null)) { ea = ParseGazeEventArgs(line); if (ea == null) { continue; } Thread.Sleep((int)(ea.Timestamp - curTimeStamp)); curTimeStamp = ea.Timestamp; RaiseGazeEvent(ea); } }
public void dataCallback( long timestamp, float mouseX, float mouseY, float mouseRawX, float pogRawY, int screenWidth, int screenHeight, [MarshalAs(UnmanagedType.U1)] bool leftEyeDetected, [MarshalAs(UnmanagedType.U1)] bool rightEyeDetected, int imageWidth, int imageHeight, float leftEyeX, float leftEyeY, float leftEyeSize, float rightEyeX, float rightEyeY, float rightEyeSize, float distanceFactor) { var eventData = new GazeEventArgs( mouseX, mouseY, Environment.TickCount, Fixation.Unknown, false); _gazeEvent?.Invoke(this, eventData); }
private void RaiseGazeEvent(GazeEventArgs ea) { EventHandler <GazeEventArgs> handler = GazeEvent; if (handler != null) { handler(this, ea); } }
void RaiseGazeEvent(double x, double y, double timestamp) { EventHandler <GazeEventArgs> handler = GazeEvent; if (handler != null) { GazeEventArgs gazeEventArgs = new GazeEventArgs(x, y, (long)timestamp, Fixation.Unknown, false); handler(this, gazeEventArgs); } }
private GazeEventArgs ParseGazeEventArgs(string line) { string[] parts = line.Split(','); if (parts.Length != 3) { return(null); } double x = double.Parse(parts[0]); double y = double.Parse(parts[1]); long t = long.Parse(parts[2]); GazeEventArgs ea = new GazeEventArgs(x, y, t, Fixation.Unknown, true); return(ea); }
void MouseTick(object sender, EventArgs e) { try { var window = Application.Current.MainWindow; var windowPoint = Mouse.GetPosition(window); var point = window.PointToScreen(windowPoint); var eventData = new GazeEventArgs(point.X, point.Y, Environment.TickCount, Fixation.Unknown, false); _gazeEvent?.Invoke(this, eventData); } catch { // A Win32Exception is sometimes thrown Mouse.GetPosition; this try-catch block just lessens the impact of that. } }
void Tick(object sender, EventArgs e) { try { QuickLink2API.QLDevice_GetFrame(deviceId, (IntPtr)10000, ref frameData); if (frameData.WeightedGazePoint.Valid) { var eventData = new GazeEventArgs( frameData.WeightedGazePoint.x * System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width / 100, frameData.WeightedGazePoint.y * System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height / 100, Environment.TickCount, Fixation.Unknown, false ); _gazeEvent?.Invoke(this, eventData); } } catch { // A Win32Exception is sometimes thrown Mouse.GetPosition; this try-catch block just lessens the impact of that. } }
public GazeEventArgs(double x, double y, GazeEventArgs ea, bool scaled) : this(x, y, ea.Timestamp, ea.Fixation, scaled) { }