private void MovePattern(PatternPlacementViewModel pp, long deltaStart, int deltaIndex) { long newStart = SnapToGridInternal(pp.Start + deltaStart); int newIndex = pp.TrackIndex + deltaIndex; pp.Start = Math.Max(0, newStart); pp.TrackIndex = Math.Max(MinVerticalValue, Math.Min(newIndex, MaxVerticalValue)); }
private void ResizePattern(PatternPlacementViewModel pp, double delta) { int end = pp.Start + pp.Length; int newEnd = SnapToGridInternal(end + PixelToTick(delta)); if (newEnd > pp.Start) { pp.Length = newEnd - pp.Start; } }
private void CalculateAffectedItems(FrameworkElement view) { if (((PatternPlacementView)view).IsSelected) { _affectedItems = SelectedItems.Cast <PatternPlacementViewModel>(); _minTick = _affectedItems.MinBy(pp => pp.Start); (_minTrack, _maxTrack) = _affectedItems.MinMaxBy(pp => pp.TrackIndex); } else { _affectedItems = new[] { (PatternPlacementViewModel)view.DataContext }; _minTick = _minTrack = _maxTrack = (PatternPlacementViewModel)view.DataContext; } }
protected override Rect CalculateRectForElement(FrameworkElement element) { PatternPlacementViewModel pp = (PatternPlacementViewModel)element.DataContext; return(new Rect(new Point(pp.Start * WidthPerTick, pp.TrackIndex * 60), new Size(pp.Length * WidthPerTick, 60))); }
protected override Size CalculateSizeForElement(FrameworkElement element) { PatternPlacementViewModel pp = (PatternPlacementViewModel)element.DataContext; return(new Size(pp.Length * WidthPerTick, 60)); }