Files
Navigator/DataDisplay/DataSource/EnumerablePointEnumerator.cs
2024-02-23 06:53:16 -05:00

38 lines
1.0 KiB
C#

using System;
using System.Collections;
using System.Windows;
using Xamarin.Forms;
namespace DataDisplay.DataSource
{
/// <summary>This enumerator enumerates given enumerable object as sequence of points</summary>
/// <typeparam name="T">Type parameter of source IEnumerable</typeparam>
public sealed class EnumerablePointEnumerator<T> : IPointEnumerator {
private readonly EnumerableDataSource<T> dataSource;
private readonly IEnumerator enumerator;
public EnumerablePointEnumerator(EnumerableDataSource<T> dataSource) {
this.dataSource = dataSource;
enumerator = dataSource.Data.GetEnumerator();
}
public bool MoveNext()
{
try{return enumerator.MoveNext();}
catch(InvalidOperationException){return false;}
}
public void GetCurrent(ref Point p) {
dataSource.FillPoint((T)enumerator.Current, ref p);
}
public void ApplyMappings(BindableObject target) {
dataSource.ApplyMappings(target, (T)enumerator.Current);
}
public void Dispose() {
//enumerator.Reset();
}
}
}