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> _streamFactory; public Dictionary> StreamFactory { get { return _streamFactory; } private set { _streamFactory = value; } } public KinectStreamsFactory(KinectManager kinect, Canvas skeletonCanvas = null) { _kinectManager = kinect; // Initialisation de la fabrique avec les fonctions de création pour chaque type de flux. StreamFactory = new Dictionary> { { KinectStreams.Color, (canvas) => new ColorImageStream(KinectManager) }, { KinectStreams.Depth, (canvas) => new DepthImageStream(KinectManager) }, { KinectStreams.IR, (canvas) => new InfraredImageStream(KinectManager) }, { KinectStreams.ColorAndBody, (canvas) => new ColorAndBodyImageStream(KinectManager,skeletonCanvas) } }; } public KinectStream this[KinectStreams stream, Canvas skeletonCanvas = null] { get { if (StreamFactory.ContainsKey(stream)) { return StreamFactory[stream](skeletonCanvas); } else { throw new ArgumentException("Invalid stream type."); } } } } }