Beispiel #1
0
 public static void AppendRedrawingMeasure(McMeasure measure)
 {
     if (!((measure == null) || _redrawingMeasureList.Contains(measure)))
     {
         _redrawingMeasureList.Add(measure);
     }
 }
Beispiel #2
0
 public static void PlayPitch(McPitch pitch)
 {
     if (pitch.Volume >= 0.001f)
     {
         McNotePack         parentNotePack = pitch.ParentNotePack;
         MusicCanvasControl canvas         = parentNotePack.Canvas;
         McMeasure          parentMeasure  = parentNotePack.ParentMeasure;
         float num  = ((parentMeasure.TemporaryInfo.RelativeX + McNotation.Margin.Left) + McRegularTrack.Margin.Left) - canvas.ScrollXSmooth;
         float num2 = ((((McRegularTrack.Margin.Bottom + McRegularTrack.Margin.Top) + McMeasure.Height) * parentMeasure.ParentRegularTrack.Index) + McNotation.Margin.Top) + McRegularTrack.Margin.Top;
         float x    = (num + parentNotePack.TemporaryInfo.RelativeXSmooth) + 8f;
         if (parentNotePack.Staccato)
         {
             canvas.PlaySound(parentMeasure.InstrumentType, pitch.AlterantValue, pitch.Volume, (long)parentNotePack.TemporaryInfo.PlayingDurationTimeMs, 0.03f);
         }
         else
         {
             canvas.PlaySound(parentMeasure.InstrumentType, pitch.AlterantValue, pitch.Volume, (long)parentNotePack.TemporaryInfo.PlayingDurationTimeMs, 0.03f);
         }
         int   num4 = parentNotePack.IsRest ? (((parentMeasure.ClefType == McMeasure.ClefTypes.L2G) ? 0x2c : 0x17) + 5) : pitch.Value;
         float measureLineRelativeY = pitch.MeasureLineRelativeY;
         float num6  = 3.141593f * (((float)num4) / 88f);
         Color color = parentNotePack.IsRest ? Color.FromArgb(0x80, Color.White) : Color.FromArgb(0xff, (int)(((Math.Cos((double)num6) + 1.0) / 2.0) * 255.0), (int)(((Math.Sin((double)num6) + 1.0) / 2.0) * 255.0), (int)(((Math.Cos((double)num6) + 1.0) / 2.0) * 255.0));
         MusicCanvasControl.RippleAniManager.Append(x, num2 + measureLineRelativeY, color, 10 + ((int)(30f * parentNotePack.Volume)), 0.5f, parentNotePack);
     }
 }
Beispiel #3
0
 public static void RemoveRedrawingMeasure(McMeasure measure)
 {
     if ((measure != null) && _redrawingMeasureList.Contains(measure))
     {
         _redrawingMeasureList.Remove(measure);
     }
 }
Beispiel #4
0
        public int InsertMeasureAligned(int?measureIndex = new int?())
        {
            int num = -1;

            McMeasure[] measuresAligned = new McMeasure[3];
            this._regularTracksMLock = false;
            for (int i = 0; i < 3; i++)
            {
                num = this._regularTrackList[i]._InsertMeasure(measureIndex, out measuresAligned[i]);
            }
            foreach (McMeasure measure in measuresAligned)
            {
                measure._ResetMeasuresAligned(measuresAligned);
                McMeasure preMeasure = measure.PreMeasure;
                if (preMeasure != null)
                {
                    measure.TemporaryInfo.RelativeX = (preMeasure.TemporaryInfo.RelativeX + preMeasure.TemporaryInfo.Width) + Math.Max(McMeasure.Margin.Right, McMeasure.Margin.Left);
                }
                measure.ReorganizeDurationStamps();
            }
            int[] numArray = this._measureBeatsPerMinuteMap.Keys.ToArray <int>();
            for (int j = numArray.Length - 1; j >= 0; j--)
            {
                int key = numArray[j];
                if (key >= measureIndex)
                {
                    this._measureBeatsPerMinuteMap.Add(key + 1, this._measureBeatsPerMinuteMap[key]);
                    this._measureBeatsPerMinuteMap.Remove(key);
                }
            }
            this._regularTracksMLock = true;
            return(num);
        }
Beispiel #5
0
 public static void MarkModified(McMeasure measure)
 {
     IsModified = true;
     AppendRedrawingMeasure(measure);
     if (((measure != null) && !MusicCanvasControl.MouseDragareaManager.IsInPickingProgress) && (MusicCanvasControl.MouseDragareaManager.LastPickedRelativeMeasures != null))
     {
         MusicCanvasControl.MouseDragareaManager.ClearValidCanvasDragarea();
     }
 }
Beispiel #6
0
 public McNotePack(McMeasure parentMeasure)
 {
     this.ParentMeasure = parentMeasure;
     this.TemporaryInfo = new NpTemporaryInfo(this);
     if (parentMeasure != null)
     {
         McUtility.MarkModified(parentMeasure);
     }
 }
Beispiel #7
0
 public static void Clear()
 {
     if (_hoveringNotePack != null)
     {
         _hoveringNotePack.IsHovering = false;
     }
     if (_hoveringMeasure != null)
     {
         _hoveringMeasure.IsHovering = false;
         McUtility.AppendRedrawingMeasure(_hoveringMeasure);
     }
     _hoveringInsertNotePackIndex = -1;
     _hoveringInsertPitchValue    = 0;
     _hoveringNotePack            = null;
     _hoveringMeasure             = null;
 }
        public static void DrawTie(this RenderTarget renderTarget, SharpDX.DirectWrite.Factory writeFactory, McNotePack startNotePack, McNotePack endNotePack, Color color, bool isTriplet = false)
        {
            float      scrollXSmooth;
            RawVector2 startPos     = new RawVector2();
            RawVector2 endPos       = new RawVector2();
            bool       flipVertical = false;

            if (startNotePack != null)
            {
                McNotePack.NpTemporaryInfo temporaryInfo = startNotePack.TemporaryInfo;
                temporaryInfo.TieMarkerRelativeYSmooth = temporaryInfo.TieMarkerRelativeYSmooth.Lerp(temporaryInfo.TieMarkerRelativeY, 0.2f);
                McMeasure parentMeasure = startNotePack.ParentMeasure;
                scrollXSmooth = parentMeasure.ParentRegularTrack.ParentNotation.Canvas.ScrollXSmooth;
                RawVector2 vector3 = new RawVector2(((parentMeasure.TemporaryInfo.RelativeX + McNotation.Margin.Left) + McRegularTrack.Margin.Left) - scrollXSmooth, (float)parentMeasure.Top);
                startPos     = new RawVector2((vector3.X + temporaryInfo.RelativeXSmooth) + 8f, vector3.Y + temporaryInfo.TieMarkerRelativeYSmooth);
                flipVertical = temporaryInfo.IsFlipVerticalStemVoted;
            }
            if (endNotePack != null)
            {
                McNotePack.NpTemporaryInfo info2 = endNotePack.TemporaryInfo;
                info2.TieMarkerRelativeYSmooth = info2.TieMarkerRelativeYSmooth.Lerp(info2.TieMarkerRelativeY, 0.2f);
                McMeasure measure2 = endNotePack.ParentMeasure;
                scrollXSmooth = measure2.ParentRegularTrack.ParentNotation.Canvas.ScrollXSmooth;
                RawVector2 vector4 = new RawVector2(((measure2.TemporaryInfo.RelativeX + McNotation.Margin.Left) + McRegularTrack.Margin.Left) - scrollXSmooth, (float)measure2.Top);
                endPos = new RawVector2((vector4.X + info2.RelativeXSmooth) + 8f, vector4.Y + info2.TieMarkerRelativeYSmooth);
            }
            if (isTriplet)
            {
                if (endNotePack == null)
                {
                    renderTarget.DrawTextLayout(writeFactory, "Tri", new RawVector2(startPos.X - 6f, startPos.Y - 5f), "Consolas", 10f, Color.FromArgb(0x80, Color.Aqua), SharpDX.DirectWrite.FontStyle.Italic);
                }
            }
            else if ((startNotePack != null) && (endNotePack == null))
            {
                renderTarget.DrawTextLayout(writeFactory, startNotePack.TieType.ToString().Substring(0, 1), new RawVector2(startPos.X - 12f, startPos.Y - 4f), "Consolas", 10f, Color.FromArgb(0x40, Color.FloralWhite), SharpDX.DirectWrite.FontStyle.Italic);
            }
            else if ((startNotePack == null) && (endNotePack != null))
            {
                renderTarget.DrawTextLayout(writeFactory, endNotePack.TieType.ToString().Substring(0, 1), new RawVector2(endPos.X - 12f, endPos.Y - 4f), "Consolas", 10f, Color.FromArgb(0x40, Color.FloralWhite), SharpDX.DirectWrite.FontStyle.Italic);
            }
            if ((startNotePack != null) && (endNotePack != null))
            {
                renderTarget.DrawTie(writeFactory, startPos, endPos, color, flipVertical, isTriplet);
            }
        }
Beispiel #9
0
        public int GetMeasureDurationAligned(int measureIndex)
        {
            int       num     = 0;
            McMeasure measure = this._regularTrackList.First <McRegularTrack>().GetMeasure(measureIndex);

            if (measure != null)
            {
                foreach (McMeasure measure2 in measure.MeasuresAligned)
                {
                    if (measure2 != null)
                    {
                        int measureDuration = measure2.MeasureDuration;
                        if (measureDuration > num)
                        {
                            num = measureDuration;
                        }
                    }
                }
            }
            return(num);
        }
Beispiel #10
0
 public void ReorganizeAlignedMesaureurationStamps(int measureIndex, bool includeContext)
 {
     if ((measureIndex >= 0) && (measureIndex < this.MeasureCountAligned))
     {
         McMeasure measure = this.RegularTracks.First <McRegularTrack>().GetMeasure(measureIndex);
         if (measure != null)
         {
             foreach (McMeasure measure2 in measure.MeasuresAligned)
             {
                 if (includeContext && (measure2.PreMeasure != null))
                 {
                     measure2.PreMeasure.ReorganizeDurationStamps();
                 }
                 measure2.ReorganizeDurationStamps();
                 if (includeContext && (measure2.NextMeasure != null))
                 {
                     measure2.NextMeasure.ReorganizeDurationStamps();
                 }
                 McUtility.MarkModified(measure2);
             }
         }
     }
 }
Beispiel #11
0
        public McNotePack Clone(McMeasure measure)
        {
            McNotePack pack = new McNotePack(measure ?? this.ParentMeasure)
            {
                _isRest       = this._isRest,
                _isDotted     = this._isDotted,
                _tieType      = this._tieType,
                _triplet      = this._triplet,
                _durationType = this._durationType,
                _staccato     = this._staccato,
                _arpeggioMode = this._arpeggioMode
            };

            foreach (int num in this.ValidPitchValueArray)
            {
                McPitch pitch = this._pitches[num];
                if (((pitch != null) && (pitch.PitchType == McPitch.PitchTypes.Enabled)) && pack.MarkPitch(pitch.Value, McPitch.PitchTypes.Enabled))
                {
                    pack.GetPitch(pitch.Value).AlterantType = pitch.RawAlterantType;
                }
            }
            return(pack);
        }
Beispiel #12
0
 public int IndexOf(McMeasure measure) =>
 this._measureList.IndexOf(measure);
Beispiel #13
0
        public int _InsertMeasure(int?measureIndex, out McMeasure newMeasure)
        {
            int num;
            int num2;
            int?nullable = measureIndex;

            measureIndex = new int?(nullable.HasValue ? nullable.GetValueOrDefault() : 0x5f5e0ff);
            if (this.ParentNotation.RegularTracksMLock || (((nullable = measureIndex).GetValueOrDefault() < 0) && nullable.HasValue))
            {
                newMeasure = null;
                return(-1);
            }
            nullable = measureIndex;
            int measuresCount = this.MeasuresCount;

            measureIndex = ((nullable.GetValueOrDefault() >= measuresCount) && nullable.HasValue) ? new int?(this.MeasuresCount) : measureIndex;
            newMeasure   = new McMeasure(this);
            this._measureList.Insert(measureIndex.Value, newMeasure);
            int[] numArray = this._measureClefTypeMap.Keys.ToArray <int>();
            for (num = numArray.Length - 1; num >= 0; num--)
            {
                num2          = numArray[num];
                measuresCount = num2;
                if (measuresCount >= measureIndex)
                {
                    this._measureClefTypeMap.Add(num2 + 1, this._measureClefTypeMap[num2]);
                    this._measureClefTypeMap.Remove(num2);
                }
            }
            numArray = this._measureInstrumentTypeMap.Keys.ToArray <int>();
            for (num = numArray.Length - 1; num >= 0; num--)
            {
                num2          = numArray[num];
                measuresCount = num2;
                if (measuresCount >= measureIndex)
                {
                    this._measureInstrumentTypeMap.Add(num2 + 1, this._measureInstrumentTypeMap[num2]);
                    this._measureInstrumentTypeMap.Remove(num2);
                }
            }
            numArray = this._measureKeySignatureMap.Keys.ToArray <int>();
            for (num = numArray.Length - 1; num >= 0; num--)
            {
                num2          = numArray[num];
                measuresCount = num2;
                if (measuresCount >= measureIndex)
                {
                    this._measureKeySignatureMap.Add(num2 + 1, this._measureKeySignatureMap[num2]);
                    this._measureKeySignatureMap.Remove(num2);
                }
            }
            numArray = this._measureVolumeCurveMap.Keys.ToArray <int>();
            for (num = numArray.Length - 1; num >= 0; num--)
            {
                num2          = numArray[num];
                measuresCount = num2;
                if (measuresCount >= measureIndex)
                {
                    this._measureVolumeCurveMap.Add(num2 + 1, this._measureVolumeCurveMap[num2]);
                    this._measureVolumeCurveMap.Remove(num2);
                }
            }
            numArray = this._measureVolumeMap.Keys.ToArray <int>();
            for (num = numArray.Length - 1; num >= 0; num--)
            {
                num2          = numArray[num];
                measuresCount = num2;
                if (measuresCount >= measureIndex)
                {
                    this._measureVolumeMap.Add(num2 + 1, this._measureVolumeMap[num2]);
                    this._measureVolumeMap.Remove(num2);
                }
            }
            return(measureIndex.Value);
        }
Beispiel #14
0
        public bool _RemoveMeasure(int measureIndex)
        {
            if (this.ParentNotation.RegularTracksMLock)
            {
                return(false);
            }
            if ((measureIndex < 0) || (measureIndex >= this.MeasuresCount))
            {
                return(false);
            }
            McMeasure measure = this._measureList[measureIndex];

            measure.TemporaryInfo.Width = -Math.Max(McMeasure.Margin.Right, McMeasure.Margin.Left) - 1;
            measure.ClearBitmapCache();
            this._measureList.RemoveAt(measureIndex);
            foreach (int num in this._measureClefTypeMap.Keys.ToArray <int>())
            {
                if (num == measureIndex)
                {
                    this._measureClefTypeMap.Remove(num);
                }
                else if (num >= measureIndex)
                {
                    this._measureClefTypeMap.Add(num - 1, this._measureClefTypeMap[num]);
                    this._measureClefTypeMap.Remove(num);
                }
            }
            foreach (int num in this._measureInstrumentTypeMap.Keys.ToArray <int>())
            {
                if (num == measureIndex)
                {
                    this._measureInstrumentTypeMap.Remove(num);
                }
                else if (num >= measureIndex)
                {
                    this._measureInstrumentTypeMap.Add(num - 1, this._measureInstrumentTypeMap[num]);
                    this._measureInstrumentTypeMap.Remove(num);
                }
            }
            foreach (int num in this._measureKeySignatureMap.Keys.ToArray <int>())
            {
                if (num == measureIndex)
                {
                    this._measureKeySignatureMap.Remove(num);
                }
                else if (num >= measureIndex)
                {
                    this._measureKeySignatureMap.Add(num - 1, this._measureKeySignatureMap[num]);
                    this._measureKeySignatureMap.Remove(num);
                }
            }
            foreach (int num in this._measureVolumeCurveMap.Keys.ToArray <int>())
            {
                if (num == measureIndex)
                {
                    this._measureVolumeCurveMap.Remove(num);
                }
                else if (num >= measureIndex)
                {
                    this._measureVolumeCurveMap.Add(num - 1, this._measureVolumeCurveMap[num]);
                    this._measureVolumeCurveMap.Remove(num);
                }
            }
            foreach (int num in this._measureVolumeMap.Keys.ToArray <int>())
            {
                if (num == measureIndex)
                {
                    this._measureVolumeMap.Remove(num);
                }
                else if (num >= measureIndex)
                {
                    this._measureVolumeMap.Add(num - 1, this._measureVolumeMap[num]);
                    this._measureVolumeMap.Remove(num);
                }
            }
            return(true);
        }