internal void SelectedTextChange(double widthChangeDelta) { var scaledDelta = widthChangeDelta / Scale; var cumulativeShift = scaledDelta / 2; var orderedSelectedParts = SelectedTextParts.OrderBy(a => a.StartMills); foreach (var part in orderedSelectedParts) { part.TextWidth += scaledDelta; if (part.TextWidth < 40) { part.TextWidth = 40; } if (ChangeTimeWithSize) { part.StartMills += cumulativeShift; // starts at half (for first) then shifts left "half * 2" for each next one cumulativeShift += scaledDelta; } } }
private void DoAddSpaceBefore() { if (SelectedTextParts.Count == 0) { Messenger.Default.Send("No selection"); return; } TextPart firstWord = SelectedTextParts.OrderBy(a => a.StartMills).First(); int collectionIndex = 0; TextPart newSpace = new TextPart { TextWidth = 500, Text = "???" }; newSpace.StartMills = firstWord.StartMills - newSpace.TextWidth - 100; TextParts.Insert(collectionIndex, newSpace); RaisePropertyChanged("FullText"); }