NodeReader.cs
Home
/
YED /
yEd.XGML /
IO /
Read /
NodeReader.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.Drawing;
using yEd.XGML.DocumentEntities.NodeEntitie;
using yEd.XGML.Enums;
namespace yEd.XGML.IO.Read
{
internal class NodeReader : IReader<Node>
{
public Node Read(XElement element)
{
Node res = new Node();
res.id = int.Parse(element.GetChild_Attribute("id").Value);
res.label = element.GetChild_Attribute("label").Value;
res.graphics = ReadGraphics(element.GetChild_Section("graphics"));
res.LabelGraphics = ReadLabelGraphics(element.GetChild_Section("LabelGraphics"));
var gid_attrib = element.GetChild_Attribute("gid");
if (gid_attrib != null)
res.gid = int.Parse(gid_attrib.Value);
return res;
}
private NodeGraphics ReadGraphics(XElement graphics)
{
NodeGraphics res = new NodeGraphics();
res.x = double.Parse(graphics.GetChild_Attribute("x").Value);
res.y = double.Parse(graphics.GetChild_Attribute("y").Value);
res.w = double.Parse(graphics.GetChild_Attribute("w").Value);
res.h = double.Parse(graphics.GetChild_Attribute("h").Value);
res.type = (EnumNodeType)Enum.Parse(typeof(EnumNodeType), graphics.GetChild_Attribute("type").Value);
res.raisedBorder = bool.Parse(graphics.GetChild_Attribute("raisedBorder").Value);
res.fill = ColorTranslator.FromHtml(graphics.GetChild_Attribute("fill").Value);
res.outline = ColorTranslator.FromHtml(graphics.GetChild_Attribute("outline").Value);
return res;
}
private NodeLabelGraphics ReadLabelGraphics(XElement LabelGraphics)
{
NodeLabelGraphics res = new NodeLabelGraphics();
res.fontSize = int.Parse(LabelGraphics.GetChild_Attribute("fontSize").Value);
res.fontName = (EnumFont)Enum.Parse(typeof(EnumFont), LabelGraphics.GetChild_Attribute("fontName").Value);
return res;
}
}
}