Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }