Пример #1
0
        public void Save(Stream stream)
        {
            var root = new XElement("Layout");

            //*** BASIC PARAMETERS ***
            if (!string.IsNullOrEmpty(LayoutName))
            {
                root.Add(new XAttribute("Name", LayoutName));
            }

            LayoutVersion = CURRENT_LAYOUT_VERSION;
            root.Add(new XAttribute("Version", LayoutVersion));

            root.Add(new XComment("Temperaments: " + Enum.GetNames(typeof(Temperament)).Aggregate((i, j) => i + ", " + j)));
            root.Add(SerializeProperty("Temperament", FretsTemperament));

            root.Add(SerializeProperty("LeftHanded", LeftHanded));
            root.Add(SerializeProperty("FretCompensation", CompensateFretPositions));

            root.Add(new XComment("LengthFunctions: " + Enum.GetNames(typeof(LengthFunction)).Aggregate((i, j) => i + ", " + j)));
            root.Add(CurrentScaleLength.Serialize("ScaleLength"));
            root.Add(Margins.Serialize("FingerboardMargins"));

            var stringsElem = new XElement("Strings", new XAttribute("Count", NumberOfStrings));

            for (int i = 0; i < NumberOfStrings; i++)
            {
                //stringsElem.Add(SerializationHelper.GenericSerialize(Strings[i], "String"));
                stringsElem.Add(Strings[i].Serialize("String"));
            }
            root.Add(stringsElem);

            if (NumberOfStrings > 1)
            {
                root.Add(new XComment(string.Format("StringSpacingAlignment: {0}",
                                                    Enum.GetNames(typeof(StringSpacingAlignment)).Aggregate((i, j) => i + ", " + j)
                                                    )
                                      ));
                root.Add(new XComment(string.Format("StringSpacingMethod: {0}",
                                                    Enum.GetNames(typeof(StringSpacingMethod)).Aggregate((i, j) => i + ", " + j)
                                                    )
                                      ));
                root.Add(StringSpacing.Serialize("StringSpacings"));
            }

            var doc = new XDocument(root);

            doc.Save(stream);
        }