CPF/CPF.ReoGrid/AutoFillSequence.cs

51 lines
1.2 KiB
C#
Raw Normal View History

2024-06-24 10:15:59 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
namespace CPF.ReoGrid
{
public class AutoFillSequence
{
public AutoFillSequence(IList<object> values)
{
bool flag = values == null || values.Count == 0;
if (flag)
{
throw new ArgumentException("AutoFillSequence requires at least one value.");
}
int i = 0;
IAutoFillSectionEntry entry = AutoFillSectionEntryFactory.Create(values[i++]);
AutoFillSection autoFillSection = new AutoFillSection(entry);
this.sections.Add(autoFillSection);
while (i < values.Count)
{
entry = AutoFillSectionEntryFactory.Create(values[i++]);
bool flag2 = !autoFillSection.TryAdd(entry);
if (flag2)
{
autoFillSection = new AutoFillSection(entry);
this.sections.Add(autoFillSection);
}
}
}
public object[] Extrapolate(int count)
{
List<object> list = new List<object>(count);
int num = 0;
while (list.Count < count)
{
num++;
foreach (AutoFillSection autoFillSection in this.sections)
{
object[] values = autoFillSection.GetValues(num);
list.AddRange(values.Take(count - list.Count));
}
}
return list.ToArray();
}
private readonly List<AutoFillSection> sections = new List<AutoFillSection>();
}
}