private Dictionary <int, Tuple <double, double> > GeneratePositionsTable(List <MeasureSegmentController> partMeasureSegment, List <int> positionIndexes, double startingPosition)
        {
            double staffSpace = ViewModel.ViewModelLocator.Instance.Main.CurrentPageLayout.StaffSpace.MMToWPFUnit();
            Dictionary <int, int> durationOfPosition = GetDurationOfPosition(partMeasureSegment, positionIndexes);
            int shortestDuration = durationOfPosition.Values.Where(x => x > 0).Min();
            Dictionary <int, Tuple <double, double> > positions = new Dictionary <int, Tuple <double, double> >();
            double currentStartPosition = startingPosition;

            for (int i = 0; i < durationOfPosition.Count; i++)
            {
                if (i == 0)
                {
                    int    currentDuration = durationOfPosition[positionIndexes[i]];
                    double previewSpacing  = staffSpace * LayoutHelpers.SpacingValue(currentDuration, shortestDuration, 0.6);
                    positions.Add(positionIndexes[i], Tuple.Create(currentStartPosition, previewSpacing));
                }
                else
                {
                    int    currentDuration = durationOfPosition[positionIndexes[i]];
                    double previewSpacing  = staffSpace * LayoutHelpers.SpacingValue(currentDuration, shortestDuration, 0.6);
                    currentStartPosition += previewSpacing;
                    positions.Add(positionIndexes[i], Tuple.Create(currentStartPosition, previewSpacing));
                }
            }
            return(positions);
        }