using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using WebWindowTest.Json; using static WebWindowTest.Json.WindowConst; namespace WebWindowTest.Models { public class FrameDimension:AreaDimension { #region Public Constructors public FrameDimension(Frame ParentFrame, int nIndex, string sName, double dDimension, bool bIsLen) : base(dDimension, MeasureTypes.ABSOLUTE) { m_ParentFrame = ParentFrame; m_nIndex = nIndex; m_sName = sName; m_bIsLen = bIsLen; } #endregion Public Constructors #region Public Properties public override double dDimension { get { return m_dDimension; } set { if(dDimension != value) { if (ParentFrame.SelShapeIndex == (int)Shapes.RECTANGLE || ParentFrame.SelShapeIndex == (int)Shapes.RIGHTCHAMFER || ParentFrame.SelShapeIndex == (int)Shapes.LEFTCHAMFER || ParentFrame.SelShapeIndex == (int)Shapes.DOUBLECHAMFER || ParentFrame.SelShapeIndex == (int)Shapes.TRIANGLE) { if (value > MaxDim) { m_dDimension = MaxDim; } else if (value < MinDim && !m_sName.Equals("Radius") && !m_sName.Equals("Height projection")) { m_dDimension = MinDim; } else m_dDimension = value; } else { var widthArea = (ParentFrame.DimensionList.First(x => x.sName.Equals("Width"))).m_dDimension; if (ParentFrame.SelShapeIndex == (int)Shapes.ARC_FULL) { var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension; if (sName.Equals("Height") && value > 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Width") && height > 0.5 * value && value > MinDim) { m_dDimension = value; } } else if (ParentFrame.SelShapeIndex == (int)Shapes.ARC) { var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension; var fullHeight = ParentFrame.DimensionList.First(x => x.sName.Equals("Full Height")).m_dDimension; if (sName.Equals("Full Height") && (value - height) < 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Height") && (fullHeight - value) < 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Width") && (fullHeight - height) < 0.5 * value && value < MaxDim) { m_dDimension = value; } } else if (ParentFrame.SelShapeIndex == (int)Shapes.THREECENTERARC) { var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension; var fullHeight = ParentFrame.DimensionList.First(x => x.sName.Equals("Full Height")).m_dDimension; if (sName.Equals("Full Height") && (value - height) < 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Height") && (fullHeight - value) < 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Width") && (fullHeight - height) < 0.5 * value) { m_dDimension = value; } else if (sName.Equals("Radius") && value < 0.5 * widthArea) { m_dDimension = value; } } else if (ParentFrame.SelShapeIndex == (int)Shapes.DOUBLEARC) { var height = ParentFrame.DimensionList.First(x => x.sName.Equals("Height")).m_dDimension; var fullHeight = ParentFrame.DimensionList.First(x => x.sName.Equals("Full Height")).m_dDimension; if (sName.Equals("Full Height") && (value - height) > 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Height") && (fullHeight - value) > 0.5 * widthArea && value < MaxDim) { m_dDimension = value; } else if (sName.Equals("Width") && (fullHeight - height) > 0.5 * value && value > MinDim) { m_dDimension = value; } } } if (ParentFrame.AreaList.Count > 0 && sName.Equals("Width")) ParentFrame.SearchAreaList(ParentFrame, dDimension, "Width"); else ParentFrame.SearchAreaList(ParentFrame, dDimension, "Height"); } } } public int nIndex { get { return m_nIndex; } } public Frame ParentFrame { get { return m_ParentFrame; } } public string sName { get { return m_sName; } } #endregion Public Properties #region Internal Methods internal JsonFrameDimension Serialize() { JsonFrameDimension JsonFrameDimension = new JsonFrameDimension(m_nIndex, m_sName, m_dDimension); return JsonFrameDimension; } #endregion Internal Methods #region Protected Fields protected Frame m_ParentFrame; #endregion Protected Fields #region Private Fields private bool m_bIsLen = false; //private double m_dDimension; private int m_nIndex; private string m_sName; // valore massimo della dimensione del frame private int MaxDim = 4000; // valore minimo della dimensione del frame private int MinDim = 600; #endregion Private Fields } }