private void CalculateFirstScale() { if (0 == Preferences.YFixMin && 0 == Preferences.YFixMin && 0 == Preferences.YFixDiv) { if (FirstScale == null) { var realMin = GetMin(); var realMax = GetMax(); var req = new BrickRequest { SourceMinValue = realMin, SourceMaxValue = realMax }; req.Setup(Preferences.Y, Preferences.YMin, Preferences.YMax, Preferences.YTop.ToString(), Preferences.YSignDelta.ToString()); var cat = new BrickCatalog(); var result = cat.GetBestVariant(req); FirstScale = new Scale { Prepared = true, Min = result.ResultMinValue, Max = result.ResultMaxValue, DivLines = result.ResultDivCount }; } FirstScale.ValueInPixel = BrickDataSetHelper.GetValuesInPixel(FirstScale.Min, FirstScale.Max, Preferences.Height); } else { FirstScale = new Scale(); } }
private void CalculateNormalizedValue() { foreach (var scaleType in new[] { ScaleType.First, ScaleType.Second, }) { var data = Rows.Where(_ => _.ScaleType == scaleType).ToArray(); if (0 == data.Length) { continue; } var scale = scaleType == ScaleType.First ? FirstScale : SecondScale; foreach (var row in data) { foreach (var item in row.Items) { item.NormalizedValue = BrickDataSetHelper.GetNormalizedValue(scale.Min, item.Value, scale.ValueInPixel); if (scaleType == ScaleType.First) { item.NormalizedValue += Preferences.FisrtScaleMormalizeCorrector; } else if (scaleType == ScaleType.Second) { item.NormalizedValue += Preferences.SecondScaleNormalizeCorrector; } if (item.NormalizedValue < 0) { item.NormalizedValue = 0; } } } } }
/// <summary> /// Убеждается в корректном расположении элементов данных /// </summary> protected void EnsureNormalized() { if (_isNormalized) { return; } foreach (var dataItem in _dataItems) { if (0 != dataItem.NormalizedValue) { continue; } dataItem.NormalizedValue = BrickDataSetHelper.GetNormalizedValue(ScaleMin, ScaleMax, Height, dataItem.Value); if (dataItem.NormalizedValue < 0) { throw new Exception("Normalized value below zero - marks that scales was counted invalid"); } dataItem.LabelHeight = LabelHeight.ToInt(); } _isNormalized = true; }