Modificato calcolo dimensione proporzionale

This commit is contained in:
Annamaria Sassi
2026-03-06 11:23:59 +01:00
parent bb140410ca
commit b6991be6bc
6 changed files with 54 additions and 11 deletions
+22 -5
View File
@@ -204,12 +204,29 @@ namespace WebWindowComplex.Models
absoluteValue.Add(item.CalculateAbsoluteValue(itemList, widthTot));
}
int numProportional = itemList.Where(x => x.SelMeasureType == MeasureTypes.PROPORTIONAL).Count();
if(itemList.Count > 2 && numProportional == itemList.Count - 1)
if(numProportional > 1)
{
int inedMin = absoluteValue.IndexOf(absoluteValue.Min());
var mcd = CalculateMCD(absoluteValue.ElementAt(indexArea), absoluteValue.ElementAt(inedMin));
itemList.ElementAt(inedMin).SetDimension(absoluteValue.ElementAt(inedMin) / mcd);
itemList.ElementAt(indexArea).SetDimension(absoluteValue.ElementAt(indexArea) / mcd);
List<double> mcdList = new List<double>();
foreach(var elem in itemList.Where(x => x.SelMeasureType == MeasureTypes.PROPORTIONAL).ToList())
{
mcdList.Add(CalculateMCD(absoluteValue.ElementAt(indexArea), absoluteValue.ElementAt(itemList.IndexOf(elem))));
}
int mcdDuplicati = mcdList.GroupBy(n => n)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.Count();
if (mcdList.Contains(1) || mcdDuplicati < mcdList.Count - 1)
return ans;
else
{
for(int i = 0; i < itemList.Count; i++)
ans.ElementAt(i).SetDimension(absoluteValue.ElementAt(i) / mcdList.FirstOrDefault());
}
//int inedMin = absoluteValue.IndexOf(absoluteValue.Min());
//var mcd = CalculateMCD(absoluteValue.ElementAt(indexArea), absoluteValue.ElementAt(inedMin));
//itemList.ElementAt(inedMin).SetDimension(absoluteValue.ElementAt(inedMin) / mcd);
//itemList.ElementAt(indexArea).SetDimension(absoluteValue.ElementAt(indexArea) / mcd);
}
else
{
+8 -1
View File
@@ -449,7 +449,14 @@ namespace WebWindowComplex.Models
// else
// overlap = m_Parent.SashList.ElementAt(index).ElementDimensionList.Last().dOverlap;
//}
m_dDimension = ad.ConvertDimension(newDimensions, SelMeasureType, newType, widthTot, nSashId - 1);
if (newType is MeasureTypes.PROPORTIONAL)
{
newDimensions = ad.CalculatePropVal(newDimensions, nSashId - 1, widthTot);
for (int i = 0; i < newDimensions.Count; i++)
m_Parent.SashList.ElementAt(i).SetDimension(newDimensions.ElementAt(i).dDimension);
}
else
m_dDimension = ad.ConvertDimension(newDimensions, SelMeasureType, newType, widthTot, nSashId - 1);
SelMeasureType = (MeasureTypes)value;
}
}
+6 -2
View File
@@ -46,8 +46,12 @@ namespace WebWindowComplex.Models
double dimensionTot = 0;
List<SplitDimension> dimensions = new List<SplitDimension>();
Frame frame = m_Parent.ParentWindow.AreaList.FirstOrDefault() ?? new Frame(null, Parent.ParentWindow);
int subAreaVert = m_Parent.ElemDimVertList.Min(x => x.nSubArea);
int subAreaHoriz = m_Parent.ElemDimHorizList.Min(x => x.nSubArea);
int subAreaVert = -1;
int subAreaHoriz = -1;
if (m_Parent.ElemDimVertList.Count > 0)
subAreaVert = m_Parent.ElemDimVertList.Min(x => x.nSubArea);
if (m_Parent.ElemDimHorizList.Count > 0)
subAreaHoriz = m_Parent.ElemDimHorizList.Min(x => x.nSubArea);
double width = CalculateWidthSplitGroup(frame, frame.AvailWidthArea(), new AreaFound(-1, false)).m_Dimension;
foreach (var item in m_Parent.ElemDimVertList.Where(x=>x.nSubArea == subAreaVert))
{