Example #1
0
        /// <summary>
        /// Converts to XML.
        /// </summary>
        /// <param name="file">The file.</param>
        /// <returns>Convert SwfFile to xml.</returns>
        public XDocument ConvertToXml(SwfFile file)
        {
            _formatterFactory = new TagFormatterFactory(file.FileInfo.Version);
            var doc = new XDocument(GetRoot(file));

            doc.Declaration = new XDeclaration("1.0", "utf-8", "yes");
            return(doc);
        }
Example #2
0
        static SwfTagNameMapping()
        {
            var formatterFactory = new TagFormatterFactory(10);

            foreach (SwfTagType tagType in Enum.GetValues(typeof(SwfTagType)))
            {
                var tag       = _factory.Create(tagType);
                var formatter = formatterFactory.GetFormatter(tag);
                var tagName   = formatter.TagName;
                _tagMap[tagName] = tagType;
            }
        }
Example #3
0
        public SwfFile ReadFromXml(XDocument doc)
        {
            var         root = doc.Root;
            var         file = new SwfFile();
            SwfFileInfo fileInfo;

            if (root == null || root.Name.LocalName != "swf")
            {
                throw new FormatException("Expected swf as root");
            }
            fileInfo.Version = root.RequiredByteAttribute("version");
            if (!Enum.TryParse(root.RequiredAttribute("format"), false, out fileInfo.Format))
            {
                throw new FormatException("Unable to parse file format");
            }

            if (fileInfo.Format == SwfFormat.Unknown)
            {
                throw new FormatException("Unsupported file format");
            }

            fileInfo.FileLength = 0;
            file.FileInfo       = fileInfo;

            var hdr = root.RequiredElement("Header");

            file.Header.FrameRate  = hdr.RequiredDoubleAttribute("framerate");
            file.Header.FrameCount = hdr.RequiredUShortAttribute("frames");
            file.Header.FrameSize  = XRect.FromXml(hdr.RequiredElement("size").Element("Rectangle"));

            var formatterFactory = new TagFormatterFactory(fileInfo.Version);
            var tags             = hdr.RequiredElement("tags");

            foreach (var xTag in tags.Elements())
            {
                var tag       = SwfTagNameMapping.CreateTagByXmlName(xTag.Name.LocalName);
                var formatter = formatterFactory.GetFormatter(tag);
                tag = formatter.ParseTo(xTag, tag);
                file.Tags.Add(tag);
            }
            return(file);
        }