You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.9 KiB
59 lines
1.9 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Controls;
|
|
|
|
namespace Lib
|
|
{
|
|
public class KinectStreamsFactory
|
|
{
|
|
private KinectManager _kinectManager;
|
|
public KinectManager KinectManager
|
|
{
|
|
get { return _kinectManager; }
|
|
private set { _kinectManager = value; }
|
|
}
|
|
|
|
private Dictionary<KinectStreams, Func<KinectStream>> _streamFactory;
|
|
public Dictionary<KinectStreams, Func<KinectStream>> StreamFactory
|
|
{
|
|
get { return _streamFactory; }
|
|
private set { _streamFactory = value; }
|
|
}
|
|
|
|
public KinectStreamsFactory(KinectManager kinect, Canvas SkeletonCanvas)
|
|
{
|
|
_kinectManager = kinect;
|
|
// Initialisation de la fabrique avec les fonctions de création pour chaque type de flux.
|
|
StreamFactory = new Dictionary<KinectStreams, Func<KinectStream>>
|
|
{
|
|
{ KinectStreams.Color, () => new ColorImageStream(KinectManager) },
|
|
{ KinectStreams.Depth, () => new DepthImageStream(KinectManager) },
|
|
{ KinectStreams.IR, () => new InfraredImageStream(KinectManager) },
|
|
{ KinectStreams.Body, () => new BodyImageStream(KinectManager, SkeletonCanvas) },
|
|
{
|
|
KinectStreams.ColorAndBody,
|
|
() => new ColorAndBodyImageStream(KinectManager, SkeletonCanvas)
|
|
}
|
|
};
|
|
}
|
|
|
|
public KinectStream this[KinectStreams stream]
|
|
{
|
|
get
|
|
{
|
|
if (StreamFactory.ContainsKey(stream))
|
|
{
|
|
return StreamFactory[stream]();
|
|
}
|
|
else
|
|
{
|
|
throw new ArgumentException("Invalid stream type.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|