public KeyFrame RemoveClosest(KeyFrame.enumKeyFrameType iType, long lMillisecond) { KeyFrame keyClosest = FindClosest(iType, lMillisecond); if (keyClosest != null) { Remove(keyClosest); return(keyClosest); } return(null); }
public KeyFrame FindClosest(KeyFrame.enumKeyFrameType iType, long lMillisecond, bool bInActualZoneOnly) { if (iType == KeyFrame.enumKeyFrameType.Snapshot) { KeyFrame minFrame = null; long lMinDist = -1, lDist = 0; foreach (KeyFrame frame in _arySingleFrames) { lDist = Math.Abs(frame.StartMillisecond - lMillisecond); if (!bInActualZoneOnly || (bInActualZoneOnly && (frame.StartMillisecond <= _Ruler.ActualMillisecond))) { if (lDist < lMinDist || lMinDist == -1) { lMinDist = lDist; minFrame = frame; } } } if (lMinDist < (long)(lMillisecond * 0.05)) { return(minFrame); } else { return(null); } } else { foreach (KeyFrame frame in _aryMulitFrames) { if ((lMillisecond >= frame.StartMillisecond) && (lMillisecond <= frame.EndMillisecond)) { return(frame); } } } return(null); }
public KeyFrame FindClosest(KeyFrame.enumKeyFrameType iType, long lMillisecond) { return(FindClosest(iType, lMillisecond, false)); }