internal void SetCurrentData(WallHoleData data) { var winOffset = GetMainElement(createIfNotExists: true); winOffset.RemoveAll(); winOffset.Add(new XElement(Xml.Dimensions, Serialize(data.MainDimension))); for (int i = 0; i < s_slantKeys.Length; i++) { var slantElem = new XElement(Xml.Slant, Serialize(data.Slants[i]), new XAttribute(Xml.SlantType, s_slantKeys[i])); winOffset.Add(slantElem); } winOffset.Add(new XElement(Xml.Offset, Serialize(data.Offsets[-1]), new XAttribute(Xml.OffsetSide, Xml.AllSides))); foreach (int id in data.Offsets.Keys) { if (id == -1) { continue; } var offsetElem = new XElement(Xml.Offset, Serialize(data.Offsets[id]), new XAttribute(Xml.OffsetSide, s_offsetIds[id])); winOffset.Add(offsetElem); } }
private void Init(WallHoleData data) { _slants = data.Slants; this.MainOffset = new MainOffset(); var size = this.Size = data.MainDimension; var topLeft = data.Slants[0]; var topRight = data.Slants[1]; var bottomRight = data.Slants[2]; var bottomLeft = data.Slants[3]; InitOffsetItems(size, topLeft, topRight, bottomRight, bottomLeft); InitDimensions(size, topLeft, topRight, bottomRight, bottomLeft); ComputeCentroid(); InitOffsetValues(data.Offsets); }
internal WallHole(XElement data, ITopObject topObject) { if (data == null) { throw new ArgumentNullException(nameof(data)); } if (topObject == null) { throw new ArgumentNullException(nameof(topObject)); } _xmlData = new XmlAdapter(data); _topObject = topObject; WallHoleData wallHoleData = (_xmlData.IsWinOffsetSpecified()) ? _xmlData.GetCurrentData() : GetTopObjectWallHoleData(); Init(wallHoleData); }
internal WallHoleData GetCurrentData() { WallHoleData result = null; var mainElement = GetMainElement(); if (mainElement != null) { result = new WallHoleData(); result.MainDimension = DeserializeSlant(mainElement.Element(Xml.Dimensions)); result.Slants = new SizeF[s_slantKeys.Length]; for (int i = 0; i < s_slantKeys.Length; i++) { var slantElem = mainElement.Elements(Xml.Slant) .SingleOrDefault(e => e.Attribute(Xml.SlantType).Value == s_slantKeys[i]); if (slantElem != null) { result.Slants[i] = DeserializeSlant(slantElem); } } result.Offsets = new Dictionary <int, int>(); var offsetElem = mainElement.Elements(Xml.Offset) .Single(e => e.Attribute(Xml.OffsetSide).Value == Xml.AllSides); result.Offsets.Add(-1, DeserializeOffset(offsetElem)); for (int i = 0; i < s_offsetIds.Length; i++) { offsetElem = mainElement.Elements(Xml.Offset) .SingleOrDefault(e => e.Attribute(Xml.OffsetSide).Value == s_offsetIds[i]); if (offsetElem != null) { result.Offsets.Add(i, DeserializeOffset(offsetElem)); } } } return(result); }