public bool Equals(ECGData other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(StartDateTime.EqualsUpToMilliseconds(other.StartDateTime) && EndDateTime.EqualsUpToMilliseconds(other.EndDateTime) && SamplingRate == other.SamplingRate && UnfilteredSignal.Rank == other.UnfilteredSignal.Rank && Enumerable.Range(0, UnfilteredSignal.Rank).All(dimension => UnfilteredSignal.GetLength(dimension) == other.UnfilteredSignal.GetLength(dimension)) && UnfilteredSignal.Cast <double>().SequenceEqual(other.UnfilteredSignal.Cast <double>()) && FilteredSignal.Rank == other.FilteredSignal.Rank && Enumerable.Range(0, FilteredSignal.Rank).All(dimension => FilteredSignal.GetLength(dimension) == other.FilteredSignal.GetLength(dimension)) && FilteredSignal.Cast <double>().SequenceEqual(other.FilteredSignal.Cast <double>()) && Timestamps.Rank == other.Timestamps.Rank && Enumerable.Range(0, Timestamps.Rank).All(dimension => Timestamps.GetLength(dimension) == other.Timestamps.GetLength(dimension)) && Timestamps.Cast <long>().SequenceEqual(other.Timestamps.Cast <long>())); }
void UpdateStatistics(FrameworkElement target, Point original, Point filtered) { Point targetPointOrig = _window.TranslatePoint(original, target); Point targetPointFiltered = _window.TranslatePoint(filtered, target); Point targetCenter = new Point(target.ActualWidth / 2.0, target.ActualHeight / 2.0); OriginalSignal.Update((targetCenter.X - targetPointOrig.X) / target.ActualWidth, (targetCenter.Y - targetPointOrig.Y) / target.ActualHeight); FilteredSignal.Update((targetCenter.X - targetPointFiltered.X) / target.ActualWidth, (targetCenter.Y - targetPointFiltered.Y) / target.ActualHeight); }