public static void FromXml(XElement xStyleList, IList <FillStyleRGBA> fillStyles, IList <LineStyleEx> lineStyles) { var xFillStyles = xStyleList.RequiredElement("fillStyles"); foreach (var xFillStyle in xFillStyles.Elements()) { var fillStyle = XFillStyle.FromXmlRGBA(xFillStyle); fillStyles.Add(fillStyle); } var xLineStyles = xStyleList.RequiredElement("lineStyles"); foreach (var xLineStyle in xLineStyles.Elements()) { var lineStyle = XLineStyleEx.FromXml(xLineStyle); lineStyles.Add(lineStyle); } }
public static LineStyleEx FromXml(XElement xLineStyle) { var xStartCapStyle = xLineStyle.Attribute("startCapStyle"); var xJointStyle = xLineStyle.Attribute("jointStyle"); var xEndCapStyle = xLineStyle.Attribute("endCapStyle"); var xReserved = xLineStyle.Attribute("reserved"); var res = new LineStyleEx { Width = xLineStyle.RequiredUShortAttribute("width"), StartCapStyle = (CapStyle)byte.Parse(xStartCapStyle.Value), JoinStyle = (JoinStyle)byte.Parse(xJointStyle.Value), HasFill = xLineStyle.RequiredBoolAttribute("hasFill"), NoHScale = xLineStyle.RequiredBoolAttribute("noHScale"), NoVScale = xLineStyle.RequiredBoolAttribute("noVScale"), PixelHinting = xLineStyle.RequiredBoolAttribute("pixelHinting"), NoClose = xLineStyle.RequiredBoolAttribute("noClose"), EndCapStyle = (CapStyle)byte.Parse(xEndCapStyle.Value) }; if (xReserved != null) { res.Reserved = byte.Parse(xReserved.Value); } if (res.JoinStyle == JoinStyle.Miter) { res.MilterLimitFactor = xLineStyle.RequiredDoubleAttribute("miterFactor"); } var xFillStyle = xLineStyle.Element("fillStyle"); var xFillColor = xLineStyle.Element("fillColor"); if (xFillStyle != null) { res.FillStyle = XFillStyle.FromXmlRGBA(xFillStyle.Elements().First()); } if (xFillColor != null) { res.Color = XColorRGBA.FromXml(xFillColor.Elements().First()); } return(res); }