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"); fileInfo.Format = root.RequiredBoolAttribute("compressed") ? "CWS" : "FWS"; 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; }
/// <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; }
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; } }
private static void ReadTags(DefineSpriteTag tag, XElement tagsElement) { //TODO: Transfer version here var formatterFactory = new TagFormatterFactory(10); foreach (var tagElem in tagsElement.Elements()) { var subTag = SwfTagNameMapping.CreateTagByXmlName(tagElem.Name.LocalName); var formatter = formatterFactory.GetFormatter(subTag); subTag = formatter.ParseTo(tagElem, subTag); tag.Tags.Add(subTag); } }
public void CreateTest() { var factory = new TagFormatterFactory(10); var tagFactroy = new SwfTagsFactory(); var vals = Enum.GetValues(typeof(SwfTagType)); foreach (SwfTagType type in vals) { var tag = tagFactroy.Create(type); var formatter = factory.GetFormatter(tag); Assert.IsNotNull(formatter); if (formatter.GetType().Name != tag.GetType().Name + "Formatter") { Console.WriteLine("Warning: Incosistent naming, Tag type: {0}, Class: {1}", type, formatter.GetType().Name); } var formatterType = formatter.GetType(); Assert.AreEqual(tag.GetType(), formatterType.BaseType.GetGenericArguments()[0]); } }
public void CreateTest() { var factory = new TagFormatterFactory(10); var tagFactroy = new SwfTagsFactory(); var vals = Enum.GetValues(typeof(SwfTagType)); foreach (SwfTagType type in vals) { var tag = tagFactroy.Create(type); var formatter = factory.GetFormatter(tag); Assert.IsNotNull(formatter); if (formatter.GetType().Name != tag.GetType().Name + "Formatter") { Console.WriteLine("Warning: Incosistent naming, Tag type: {0}, Class: {1}", type, formatter.GetType().Name); } var formatterType = formatter.GetType(); Assert.AreEqual(tag.GetType(), formatterType.BaseType.GetGenericArguments()[0]); } }
public DefineSpriteTagFormatter(ushort version) { _version = version; _subFormatterFactory = new TagFormatterFactory(version); }