AlphaTab.Importer.GpxParser.ParseMasterBar C# (CSharp) Method

ParseMasterBar() private method

private ParseMasterBar ( IXmlNode node ) : void
node IXmlNode
return void
        private void ParseMasterBar(IXmlNode node)
        {
            var masterBar = new MasterBar();
            node.IterateChildren(c =>
            {
                if (c.NodeType == XmlNodeType.Element)
                {
                    switch (c.LocalName)
                    {
                        case "Time":
                            var timeParts = GetValue(c).Split('/');
                            masterBar.TimeSignatureNumerator = Std.ParseInt(timeParts[0]);
                            masterBar.TimeSignatureDenominator = Std.ParseInt(timeParts[1]);
                            break;
                        case "DoubleBar":
                            masterBar.IsDoubleBar = true;
                            break;
                        case "Section":
                            masterBar.Section = new Section();
                            masterBar.Section.Marker = GetValue(FindChildElement(c, "Letter"));
                            masterBar.Section.Text = GetValue(FindChildElement(c, "Text"));
                            break;
                        case "Repeat":
                            if (c.GetAttribute("start").ToLower() == "true")
                            {
                                masterBar.IsRepeatStart = true;
                            }
                            if (c.GetAttribute("end").ToLower() == "true" && c.GetAttribute("count") != null)
                            {
                                masterBar.RepeatCount = Std.ParseInt(c.GetAttribute("count"));
                            }
                            break;
                        // TODO case "Directions": // Coda segno etc.
                        case "AlternateEndings":
                            var alternateEndings = GetValue(c).Split(' ');
                            var i = 0;
                            for (int k = 0; k < alternateEndings.Length; k++)
                            {
                                i |= 1 << (-1 + Std.ParseInt(alternateEndings[k]));
                            }
                            masterBar.AlternateEndings = (byte)i;
                            break;
                        case "Bars":
                            _barsOfMasterBar.Add(GetValue(c).Split(' '));
                            break;
                        case "TripletFeel":
                            switch (GetValue(c))
                            {
                                case "NoTripletFeel":
                                    masterBar.TripletFeel = TripletFeel.NoTripletFeel;
                                    break;
                                case "Triplet8th":
                                    masterBar.TripletFeel = TripletFeel.Triplet8th;
                                    break;
                                case "Triplet16th":
                                    masterBar.TripletFeel = TripletFeel.Triplet16th;
                                    break;
                                case "Dotted8th":
                                    masterBar.TripletFeel = TripletFeel.Dotted8th;
                                    break;
                                case "Dotted16th":
                                    masterBar.TripletFeel = TripletFeel.Dotted16th;
                                    break;
                                case "Scottish8th":
                                    masterBar.TripletFeel = TripletFeel.Scottish8th;
                                    break;
                                case "Scottish16th":
                                    masterBar.TripletFeel = TripletFeel.Scottish16th;
                                    break;
                            }
                            break;
                        case "Key":
                            masterBar.KeySignature = Std.ParseInt(GetValue(FindChildElement(c, "AccidentalCount")));
                            var mode = FindChildElement(c, "Mode");
                            if (mode != null)
                            {
                                switch (GetValue(mode).ToLower())
                                {
                                    case "major":
                                        masterBar.KeySignatureType = KeySignatureType.Major;
                                        break;
                                    case "minor":
                                        masterBar.KeySignatureType = KeySignatureType.Minor;
                                        break;
                                }
                            }

                            break;
                    }
                }
            });
            _masterBars.Add(masterBar);
        }