private void _OnUpdateTimeLinkTrackItemActiveShow(TimeLineTrackItem item) { if (OnUpdateTimeLinkTrackItemActiveShow != null) { OnUpdateTimeLinkTrackItemActiveShow(item); } }
// 移动后的帧起始时间是否合法,合法条件:移动后的帧开始时间 // 不在前面帧之前或与之一致,不在后面帧之后或与之一致 // 此方法逻辑严谨性依赖于不能在同一时间重复添加关键帧 public bool MovedFrameStartIsLegitimate(Int64 originalStartTime, Int64 frameDelta) { int keyFrameIndex = 0; for (int i = 0; i < mTrackItems.Count; ++i) { if (mTrackItems[i].FrameStart == originalStartTime) { keyFrameIndex = i; break; } } if (keyFrameIndex > 0) { TimeLineTrackItem previousKeyFrameItem = mTrackItems[keyFrameIndex - 1]; if (originalStartTime + frameDelta <= previousKeyFrameItem.FrameStart) { return(false); } } if (keyFrameIndex < mTrackItems.Count - 1) { TimeLineTrackItem nextKeyFrameItem = mTrackItems[keyFrameIndex + 1]; if (originalStartTime + frameDelta >= nextKeyFrameItem.FrameStart) { return(false); } } return(true); }
private void _OnTimeLineTrackItemSelected(TimeLineTrackItem item) { if (OnTimeLineTrackItemSelected != null) { OnTimeLineTrackItemSelected(item); } }
private void _OnRemoveTimeLineTrackItem(TimeLineTrackItem item) { Canvas_Track.Children.Remove(item); mTrackItems.Remove(item); if (OnRemoveTimeLineTrackItem != null) { OnRemoveTimeLineTrackItem(item); } }
public void RemoveTrackItem(Int64 currertFrameTime) { TimeLineTrackItem trackItem = null; for (int i = 0; i < mTrackItems.Count; ++i) { if (mTrackItems[i].FrameStart == currertFrameTime) { trackItem = mTrackItems[i]; break; } } Canvas_Track.Children.Remove(trackItem); mTrackItems.Remove(trackItem); }
public void AddTrackItem(TimeLineKeyFrameObjectInterface keyFrameItem) { var item = new TimeLineTrackItem(this, keyFrameItem); BindingOperations.SetBinding(item, UserControl.HeightProperty, new Binding("ActualHeight") { Source = this }); item.OnRemoveTimeLineTrackItem = new TimeLineTrackItem.Delegate_RemoveTimeLineTrackItem(_OnRemoveTimeLineTrackItem); item.OnUpdateTimeLineTrackItemActiveShow = new TimeLineTrackItem.Delegate_OnUpdateTimeLinkTrackItemActiveShow(_OnUpdateTimeLinkTrackItemActiveShow); item.OnSelected = new TimeLineTrackItem.Delegate_OnSelected(_OnTimeLineTrackItemSelected); mTrackItems.Add(item); Canvas_Track.Children.Add(item); mTrackItems.Sort(CompareTimeLineTrackItem); UpdateTrackShow(); mHostControl?.OnCreateTimeLineTrackItem?.Invoke(item); }
private void _OnTimeLineTrackItemSelected(TimeLineTrackItem item) { if (mSelectedItem == item) { return; } if (mSelectedItem != null) { mSelectedItem.IsSelected = false; OnTimeLineTrackItemUnSelected?.Invoke(mSelectedItem); } if (OnTimeLineTrackItemSelected != null) { OnTimeLineTrackItemSelected(item); } mSelectedItem = item; }
private static int CompareTimeLineTrackItem(TimeLineTrackItem item0, TimeLineTrackItem item1) { if (item0 == item1) { return(0); } if (item0 == null) { if (item1 == null) { return(0); } else { return(-1); } } else { if (item1 == null) { return(1); } else { if (item0.FrameStart > item1.FrameStart) { return(1); } else if (item0.FrameStart < item1.FrameStart) { return(-1); } else { return(0); } } } }
private void _OnCreateTimeLineTrackItem(TimeLineTrackItem item) { OnCreateTimeLineTrackItem?.Invoke(item); }
private void _OnRemoveTimeLineTrackItem(TimeLineTrackItem item) { item.HostTimeLineTrack.ListItem.TLObject.RemoveKeyFrameObject(item.KeyFrameItem); OnRemoveTimeLineTrackItem?.Invoke(item); }