protected MusicalSymbolRenderStrategyBase GetProperRenderStrategy(MusicalSymbol element)
        {
#if CSHTML5
            return(Strategies.FirstOrDefault(s => s.SymbolType == element.GetType()) ?? Strategies.FirstOrDefault(s => s.SymbolType.IsAssignableFrom(element.GetType())));
#else
            return(Strategies.FirstOrDefault(s => s.SymbolType == element.GetType()) ?? Strategies.FirstOrDefault(s => s.SymbolType.GetTypeInfo().IsAssignableFrom(element.GetType().GetTypeInfo())));
#endif
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Identifies whether the selected element can be safely followed by a note or rest.
 /// </summary>
 /// <param name="elem">The element to verify.</param>
 /// <returns>true if elem is a note or rest; false otherwise.</returns>
 private bool isValidTarget(MusicalSymbol elem)
 {
     if (elem == null)
     {
         return(false);
     }
     return(elem.GetType().IsSubclassOf(typeof(NoteOrRest)));
 }
        public override void DrawString(string text, MusicFontStyles fontStyle, Point location, Color color, MusicalSymbol owner)
        {
            var entry = new ScoreRenderingTestEntry();

            entry.Location = location;
            entry.Text     = text;
            entry.Type     = owner.GetType().Name;
            SetIndexes(entry, owner);
            Canvas.Put(entry);
        }
        public override void DrawLine(Point startPoint, Point endPoint, Pen pen, MusicalSymbol owner)
        {
            var entry = new ScoreRenderingTestEntry();

            entry.Location = GetTopLeftPoint(startPoint, endPoint);
            entry.Size     = GetSize(startPoint, endPoint);
            entry.Type     = owner.GetType().Name;
            SetIndexes(entry, owner);
            Canvas.Put(entry);
        }
        public override void DrawBezier(Point p1, Point p2, Point p3, Point p4, Pen pen, MusicalSymbol owner)
        {
            var entry = new ScoreRenderingTestEntry();

            entry.Location = GetTopLeftPoint(p1, p2, p3, p4);
            entry.Size     = GetSize(p1, p2, p3, p4);
            entry.Type     = owner.GetType().Name;
            SetIndexes(entry, owner);
            Canvas.Put(entry);
        }
        private void SetIndexes(ScoreRenderingTestEntry entry, MusicalSymbol symbol)
        {
            entry.Type = symbol.GetType().Name;
            var matchingStaff = CurrentScore.Staves.FirstOrDefault(s => s.Elements.Contains(symbol));

            if (matchingStaff == null)
            {
                return;
            }
            entry.StaffNo    = CurrentScore.Staves.IndexOf(matchingStaff) + 1;
            entry.StaffIndex = CurrentScore.Staves[entry.StaffNo - 1].Elements.IndexOf(symbol);
        }
Ejemplo n.º 7
0
        // Moves the next barline to the position immediately after the specified element. If there are no more barlines on
        // the staff, creates a new one.
        private Barline moveOrAddBarlineAfter(MusicalSymbol item)
        {
            if (item.GetType() == typeof(Barline))
            {
                return((Barline)item);
            }
            var     elems        = item.Staff.Elements;
            int     itemPosition = elems.IndexOf(item);
            Barline bar          = (Barline)elems.FirstOrDefault(b => elems.IndexOf(b) > itemPosition && b.GetType() == typeof(Barline));

            if (bar == null)
            {
                bar = new Barline();
            }
            else
            {
                item.Staff.Elements.Remove(bar);
            }
            item.Staff.Elements.Insert(itemPosition + 1, bar);
            return(bar);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Returns a proper dragging strategy for given element
 /// </summary>
 /// <param name="draggedElement">Dragged element</param>
 /// <returns>Proper dragging strategy</returns>
 public static IDraggingStrategy For(MusicalSymbol draggedElement)
 {
     return(strategies.Value.FirstOrDefault(s => s.ElementType == draggedElement.GetType()) ??
            strategies.Value.FirstOrDefault(s => draggedElement.GetType().IsSubclassOf(s.ElementType)));
 }
Ejemplo n.º 9
0
 protected MusicalSymbolRenderStrategyBase GetProperRenderStrategy(MusicalSymbol element)
 {
     return(Strategies.FirstOrDefault(s => s.SymbolType == element.GetType()) ?? Strategies.FirstOrDefault(s => s.SymbolType.IsAssignableFrom(element.GetType())));
 }