public ScorePartwisePartMeasureBuilder()
 {
     measure = new ScorePartwisePartMeasureMusicXML
     {
         Items = new object[0]
     };
 }
 private void OnWidthChanged(object sender, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == nameof(ScorePartwisePartMeasureMusicXML.CalculatedWidth))
     {
         //! Update staff Line visual if measure width changed
         ScorePartwisePartMeasureMusicXML m = sender as ScorePartwisePartMeasureMusicXML;
         measureWidth = m.CalculatedWidth.TenthsToWPFUnit();
         UpdateVisualObject();
     }
 }
        private void GetMeasureProperties()
        {
            visualObject        = new DrawingVisualHost();
            measureSerializable = ViewModelLocator.Instance.Main.CurrentSelectedScore.Part[partId.GetPartIdIndex()].Measure.FirstOrDefault(x => x.Number == id);
            measureSerializable.PropertyChanged += OnWidthChanged;

            measureHeight = layout.PageProperties.StaffHeight.MMToWPFUnit() * stavesCount + (stavesDistance.TenthsToWPFUnit() * (stavesCount - 1));
            measureWidth  = measureSerializable.CalculatedWidth.TenthsToWPFUnit();

            size = new Size(measureWidth, measureHeight);
        }
        public void GenerateContent()
        {
            foreach (var measureId in _measuresList)
            {
                MeasureDrawing measureCanvas = new MeasureDrawing(measureId, _partId, _staffDistance, _stavesCount);
                ScorePartwisePartMeasureMusicXML measureSerializable = ViewModel.ViewModelLocator.Instance.Main.CurrentSelectedScore.Part[_partId.GetPartIdIndex()].MeasuresByNumber[measureId];

                Canvas.SetTop(measureCanvas.BaseObjectVisual, 0);
                Canvas.SetLeft(measureCanvas.BaseObjectVisual, _partProperties.Coords[measureId].X);
                PartSegmentCanvas.Children.Add(measureCanvas.BaseObjectVisual);

                MeasureSegmentController measureSegment = new MeasureSegmentController(measureSerializable, _partId, _stavesCount);
                _partMeasures.Add(measureSegment);

                Canvas.SetTop(measureSegment.GetMeasureCanvas(), 0);
                Canvas.SetLeft(measureSegment.GetMeasureCanvas(), _partProperties.Coords[measureId].X);
                PartSegmentCanvas.Children.Add(measureSegment.GetMeasureCanvas());
            }
        }
예제 #5
0
 private void CheckMeasureId(ScorePartwisePartMeasureMusicXML measure)
 {
     if (measure.Number == null)
     {
         if (part.Measure.Count() == 0)
         {
             measure.Number = 1 + "";
         }
         else
         if (int.TryParse(part.Measure.LastOrDefault().Number, out int number))
         {
             // set next number
             measure.Number = ++number + "";
         }
         else
         {
             Console.WriteLine("Part Builder measure number parse failed: " + measure.Number);
         }
     }
 }
예제 #6
0
 public ScorePartwisePartBuilder AddMeasure(ScorePartwisePartMeasureMusicXML measure)
 {
     CheckMeasureId(measure);
     part.Measure.Add(measure);
     return(this);
 }