public void MoveTo(Measure measure, ScoreRendererSettings rendererSettings)
        {
            var measureIndex    = measure.Staff.Measures.IndexOf(measure);
            var previousMeasure = measureIndex < 1 ? null : measure.Staff.Measures[measureIndex - 1];

            if (rendererSettings.RenderingMode != ScoreRenderingModes.Panorama && previousMeasure != null && previousMeasure.System != measure.System)
            {
                CursorPositionX = 0;                                                                                                                                        //Issue #40 - jeśli takt był w innym systemie, to wyzeruj karetkę
            }
            else
            {
                CursorPositionX = previousMeasure?.BarlineLocationX ?? 0;
            }

            CurrentStaff  = measure.Staff;
            CurrentSystem = measure.System;
            var firstNoteOrRest = measure.Elements.OfType <NoteOrRest>().FirstOrDefault();

            if (firstNoteOrRest != null)
            {
                CurrentClef = measure.Staff.Peek <Clef>(firstNoteOrRest, Model.PeekStrategies.PeekType.PreviousElement);
                CurrentClef.TextBlockLocation = new Primitives.Point(CursorPositionX, CurrentLinePositions[4] - (CurrentClef.Line - 1) * rendererSettings.LineSpacing);
                CurrentKey = measure.Staff.Peek <Key>(firstNoteOrRest, Model.PeekStrategies.PeekType.PreviousElement);
            }
        }
        public void MoveToContent(Measure measure, ScoreRendererSettings rendererSettings)
        {
            var firstElement = measure.Elements.FirstOrDefault();

            if (firstElement is PrintSuggestion || firstElement is NoteOrRest)
            {
                CursorPositionX = measure.FirstNoteInMeasureXPosition;
            }
        }
Пример #3
0
        public BoundingBox GetSMuFLBoundingBoxPx(ISMuFLFontMetadata metadata, ScoreRendererSettings settings)
        {
            var bbox = GetSMuFLBoundingBox(metadata);

            return(new BoundingBox
            {
                BBoxNe = new double[] { bbox.BBoxNe[0] * settings.LineSpacing, bbox.BBoxNe[1] * settings.LineSpacing },
                BBoxSw = new double[] { bbox.BBoxSw[0] * settings.LineSpacing, bbox.BBoxSw[1] * settings.LineSpacing }
            });
        }
Пример #4
0
        private double CalculateStaffLineWidth(Staff staff, StaffSystem system, ScoreRendererSettings settings)
        {
            var lastMeasureInSystem = staff.Measures.LastOrDefault(m => m.System == system);
            var endPositionX        = lastMeasureInSystem?.BarlineLocationX ?? system.Width;

            if (endPositionX == 0)
            {
                endPositionX = system.Width;
            }

            if (settings.RenderingMode != ScoreRenderingModes.Panorama)
            {
                endPositionX = ExtendXPositionForMemoElements(endPositionX, lastMeasureInSystem, staff, system);
            }

            return(endPositionX);
        }