PageRenderTime 29ms CodeModel.GetById 8ms RepoModel.GetById 1ms app.codeStats 0ms

/Main/src/DynamicDataDisplay/DataSources/OneDimensional/DataSourceExtensions.cs

#
C# | 92 lines | 79 code | 13 blank | 0 comment | 10 complexity | a297b63f91d4878deda7e2eeb0104db3 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Windows;
  6. namespace Microsoft.Research.DynamicDataDisplay.DataSources
  7. {
  8. public static class DataSourceExtensions
  9. {
  10. public static RawDataSource AsDataSource(this IEnumerable<Point> points)
  11. {
  12. return new RawDataSource(points);
  13. }
  14. public static EnumerableDataSource<T> AsDataSource<T>(this IEnumerable<T> collection)
  15. {
  16. return new EnumerableDataSource<T>(collection);
  17. }
  18. public static EnumerableDataSource<T> AsXDataSource<T>(this IEnumerable<T> collection)
  19. {
  20. if (typeof(T) == typeof(double))
  21. {
  22. return ((IEnumerable<double>)collection).AsXDataSource() as EnumerableDataSource<T>;
  23. }
  24. else if (typeof(T) == typeof(float))
  25. {
  26. return ((IEnumerable<float>)collection).AsXDataSource() as EnumerableDataSource<T>;
  27. }
  28. return new EnumerableXDataSource<T>(collection);
  29. }
  30. public static EnumerableDataSource<float> AsXDataSource(this IEnumerable<float> collection)
  31. {
  32. EnumerableXDataSource<float> ds = new EnumerableXDataSource<float>(collection);
  33. ds.SetXMapping(f => (double)f);
  34. return ds;
  35. }
  36. public static EnumerableDataSource<T> AsYDataSource<T>(this IEnumerable<T> collection)
  37. {
  38. if (typeof(T) == typeof(double))
  39. {
  40. return ((IEnumerable<double>)collection).AsYDataSource() as EnumerableDataSource<T>;
  41. }
  42. else if (typeof(T) == typeof(float))
  43. {
  44. return ((IEnumerable<float>)collection).AsYDataSource() as EnumerableDataSource<T>;
  45. }
  46. return new EnumerableYDataSource<T>(collection);
  47. }
  48. public static EnumerableDataSource<double> AsXDataSource(this IEnumerable<double> collection)
  49. {
  50. EnumerableXDataSource<double> ds = new EnumerableXDataSource<double>(collection);
  51. ds.SetXMapping(x => x);
  52. return ds;
  53. }
  54. public static EnumerableDataSource<double> AsYDataSource(this IEnumerable<double> collection)
  55. {
  56. EnumerableYDataSource<double> ds = new EnumerableYDataSource<double>(collection);
  57. ds.SetYMapping(y => y);
  58. return ds;
  59. }
  60. public static EnumerableDataSource<float> AsYDataSource(this IEnumerable<float> collection)
  61. {
  62. EnumerableYDataSource<float> ds = new EnumerableYDataSource<float>(collection);
  63. ds.SetYMapping(f => (double)f);
  64. return ds;
  65. }
  66. public static CompositeDataSource Join(this IPointDataSource ds1, IPointDataSource ds2)
  67. {
  68. return new CompositeDataSource(ds1, ds2);
  69. }
  70. public static IEnumerable<Point> GetPoints(this IPointDataSource dataSource)
  71. {
  72. return DataSourceHelper.GetPoints(dataSource);
  73. }
  74. public static IEnumerable<Point> GetPoints(this IPointDataSource dataSource, DependencyObject context)
  75. {
  76. return DataSourceHelper.GetPoints(dataSource, context);
  77. }
  78. }
  79. }