private void UpdatePointsOfType(PhonemeType type)
        {
            var points        = PointsOfType(type);
            var projectPoints = ProjectLine.PointsOfType(type, virtuals: false);
            var phonemes      = ProjectLine.Recline.PhonemesOfType(type);

            for (int i = 0; i < points.Count; i++)
            {
                var point      = points[i];
                var wasEnabled = point.IsEnabled;
                point.IsEnabled = i < projectPoints.Count;
                if (point.IsEnabled)
                {
                    var position = Settings.RealToViewX(projectPoints[i]);
                    point.Position = position;
                    point.Update(PointIsLeft(type, i), phonemes[i / 2].Alias);
                }
                else
                {
                    point.Position = -1;
                }
                if (IsEnabled != wasEnabled)
                {
                    point.FireChanged();
                }
            }
        }
 private void ResetPointsOfType(PhonemeType type)
 {
     ProjectLine.PointsOfType(type, false).Clear();
     ProjectLine.ZonesOfType(type).Clear();
     PointsOfType(type).Clear();
     ZonesOfType(type).Clear();
     FirePointsChanged();
 }
        private void BuildZones(ObservableCollection <WavZoneViewModel> zones, PhonemeType type)
        {
            if (ProjectLine == null)
            {
                return;
            }
            var points = ProjectLine.PointsOfType(type);

            zones.Clear();
            var kindaWitdh = Width > 0 ? Width : 2000;

            for (int i = 0; i + 1 < points.Count; i += 2)
            {
                var pIn  = Settings.RealToViewX(points[i]);
                var pOut = Settings.RealToViewX(points[i + 1]);
                zones.Add(new WavZoneViewModel(type, pIn, pOut, kindaWitdh, (int)Height));
            }
            return;
        }