using System.Collections.Generic;
namespace XericLibrary.Runtime.Chart
{
///
/// 折线图数据模型的具体实现。
///
/// 使用基类 ChartDataModel 的 RingBufferList<double> 存储 X/Y 维度数据,
/// 提供便捷的批量写入接口(SetPoints / AddPoint)。
/// 每次数据变更自动触发 MarkDirty 通知工具链。
///
public class LineChartDataModel : ChartDataModel
{
public LineChartDataModel(int capacity = DefaultCapacity)
: base(capacity)
{
}
/// 批量设定折线数据点(覆盖模式)
public void SetPoints(IReadOnlyList xValues, IReadOnlyList yValues)
=> SetXYValues(xValues, yValues);
/// 追加一个数据点
public void AddPoint(double x, double y)
=> AddXYPoint(x, y);
/// 批量追加多个数据点
public void AddPoints(IReadOnlyList xValues, IReadOnlyList yValues)
{
int min = System.Math.Min(xValues.Count, yValues.Count);
for (int i = 0; i < min; i++)
AddXYPoint(xValues[i], yValues[i]);
}
/// 仅设定 Y 值(X 自动填充为自然序号)
public void SetYValues(IReadOnlyList yValues)
{
Y.Clear();
for (int i = 0; i < yValues.Count; i++) Y.Add(yValues[i]);
X.Clear();
for (int i = 0; i < yValues.Count; i++) X.Add(i);
MarkDirty(ChartDataFlags.DataChanged);
}
/// 当前数据点数
public int PointCount => System.Math.Min(X.Count, Y.Count);
}
}