using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using WebWindowComplex.Json; using static WebWindowComplex.Json.WindowConst; namespace WebWindowComplex.Models { public class ElementDimension { #region Public Constructors public ElementDimension(Area ParentArea, int nIndex, double dDimension) { m_ParentArea = ParentArea; m_nIndex = nIndex; m_dDimension = dDimension; } #endregion Public Constructors #region Public Properties public double dDimension { get { return m_dDimension; } set { if(dDimension != value) { if(m_ParentArea is Split) { if (value > m_dMax) value = m_dMax; else if (value < m_dMin) value = m_dMin; Split s = (Split)m_ParentArea; SplitElementDimension splitElem = (SplitElementDimension)this; List elemList = new List(); if (s.ElemDimVertList.Contains(splitElem)) elemList = s.SplitVertList; else if (s.ElemDimHorizList.Contains(splitElem)) elemList = s.SplitHorizList; if (value > m_dDimension) { double diff = (value - m_dDimension)/2; elemList.ElementAt(m_nIndex - 1).SetDimension(elemList.ElementAt(m_nIndex - 1).dDimension - diff); elemList.ElementAt(m_nIndex ).SetDimension(elemList.ElementAt(m_nIndex).dDimension - diff); } else { double diff = (m_dDimension - value)/2; elemList.ElementAt(m_nIndex - 1).SetDimension(elemList.ElementAt(m_nIndex - 1).dDimension + diff); elemList.ElementAt(m_nIndex).SetDimension(elemList.ElementAt(m_nIndex).dDimension + diff); } } if (value > m_dMax) m_dDimension = m_dMax; else if (value < m_dMin) m_dDimension = m_dMin; else m_dDimension = value; } } } public int nIndex { get { return m_nIndex; } } public string sName { get { return m_sName; } set { if (m_sName != value) { m_sName = value; } } } public Area ParentArea { get { return m_ParentArea; } } public double dOverlap { get { return m_dOverlap; } } #endregion Public Properties #region Public Methods public void SetDimension(double dValue) { m_dDimension = dValue; } public void SetIndex(int nIndex) { m_nIndex = nIndex; } public void SetMaxDimension(double dValue) { m_dMax = dValue; } public void SetMinDimension(double dValue) { m_dMin = dValue; } public void SetNameElement(string dValue) { m_sName = dValue; } public void SetOverlapElement(double dValue) { m_dOverlap = dValue; } public ElementDimension Copy() { ElementDimension newElementDimension = new ElementDimension(ParentArea, nIndex, dDimension); return newElementDimension; } #endregion Public Methods #region Internal Methods internal JsonElementDimension Serialize() { JsonElementDimension JsonElementDimension = new JsonElementDimension(m_nIndex, m_dDimension); return JsonElementDimension; } #endregion Internal Methods #region Private Fields private Area m_ParentArea; private double m_dDimension; private double m_dOverlap; private int m_nIndex; private string m_sName = ""; private double m_dMin = 40; private double m_dMax = 100; #endregion Private Fields } }