/// <summary> /// Вычисление температуры двух <see cref="DataItem"/> /// </summary> /// <param name="baseDataItem">Исходный <see cref="DataItem"/></param> /// <param name="dataItem"><see cref="DataItem"/> для сравнения</param> /// <returns>Температура</returns> public static decimal Temperature(this DataItem baseDataItem, DataItem dataItem) { if ( baseDataItem.LabelPosition == LabelPosition.Hidden || dataItem.LabelPosition == LabelPosition.Hidden || baseDataItem == dataItem || baseDataItem.NormalizedLabelMax < dataItem.NormalizedLabelMin || baseDataItem.NormalizedLabelMin > dataItem.NormalizedLabelMax ) { return 0; } return Math.Abs(baseDataItem.LabelHeight - Math.Abs(baseDataItem.NormalizedLabelMax - dataItem.NormalizedLabelMax)); }
/// <summary> /// Определяет признак наличия коллизии двух <see cref="DataItem"/> /// </summary> /// <param name="baseDataItem">Исходный <see cref="DataItem"/></param> /// <param name="dataItem"><see cref="DataItem"/> для сравнения</param> /// <returns>Признак наличия коллизии</returns> public static bool IsCollision(this DataItem baseDataItem, DataItem dataItem) { return baseDataItem.Temperature(dataItem) != 0; }
/// <summary> /// /// </summary> /// <param name="serianum"></param> /// <param name="rownum"></param> /// <param name="value"></param> /// <param name="secondscale"></param> public DataItem Add(int serianum, int rownum, decimal value, bool secondscale) { var item = new DataItem { Value = value, LabelHeight = LabelHeight, DatasetIndex = _currentDataItemIndex }; _currentDataItemIndex++; Insert(serianum, rownum, secondscale ? ScaleType.Second : ScaleType.First, item); return item; }
/// <summary> /// Вставка элемента данных в датасет /// </summary> /// <param name="serianum">Номер серии</param> /// <param name="rownum">Номер ряда</param> /// <param name="scaleType">Тип шкалы, к которой относится элемент данных</param> /// <param name="dataItem">Элемент данных</param> protected void Insert(int serianum, int rownum, ScaleType scaleType, DataItem dataItem) { EnsureRow(serianum, rownum, scaleType).Add(dataItem); }
/// <summary> /// Добавление элемента данных как линию тренда /// </summary> /// <param name="dataItem">Элемент данных</param> /// <returns>Замыкание на элемент данных</returns> public DataItem AddTrendLine(DataItem dataItem) { _trendlines.Add(dataItem); dataItem.IsTrendLineValue = true; return dataItem; }