Esempio n. 1
0
        public Task Publish(CoolEvent @event)
        {
            var     eventProcessorType = typeof(IEventProcessor <>).MakeGenericType(@event.GetType());
            dynamic eventProcessor     = ServiceLocator.Current.GetInstance(eventProcessorType);

            return(eventProcessor.Process((dynamic)@event));
        }
Esempio n. 2
0
        private Dictionary <int, List <CoolEvent> > GetDictionary(Fragment <FaceEvent>[] fragments)
        {
            Dictionary <int, List <CoolEvent> > dic = new Dictionary <int, List <CoolEvent> >();

            foreach (var fragment in fragments)
            {
                var startTime = fragment.Start;
                var interval  = fragment.Interval;

                for (int momentId = 0; momentId < fragment.Events.Length; momentId++)
                {
                    //Time of current fragment
                    long time = startTime + momentId * (long)interval;
                    foreach (var face in fragment.Events[momentId])
                    {
                        CoolEvent faceEvent = new CoolEvent
                        {
                            Id        = face.Id,
                            startTime = time
                        };

                        //Microsoft returns coordinates within range [0; 1], where 0 = 0, 1 = full width
                        faceEvent.rec.Height = Convert.ToInt32(_videoHeight * face.Height);
                        faceEvent.rec.Width  = Convert.ToInt32(_videoWidth * face.Width);
                        faceEvent.rec.Left   = Convert.ToInt32(_videoWidth * face.X);
                        //Sometimes it returns negative numbers
                        if (faceEvent.rec.Left < 0)
                        {
                            faceEvent.rec.Left = 0;
                        }

                        faceEvent.rec.Top = Convert.ToInt32(_videoHeight * face.Y);
                        if (faceEvent.rec.Top < 0)
                        {
                            faceEvent.rec.Top = 0;
                        }

                        //Sometimes top right corner or bottom left corner outside the coordinates
                        if (faceEvent.rec.Height + faceEvent.rec.Top > _videoHeight)
                        {
                            faceEvent.rec.Height = _videoHeight - faceEvent.rec.Top;
                        }
                        if (faceEvent.rec.Width + faceEvent.rec.Left > _videoWidth)
                        {
                            faceEvent.rec.Width = _videoWidth - faceEvent.rec.Left;
                        }

                        if (!dic.Keys.Contains(faceEvent.Id))
                        {
                            dic[faceEvent.Id] = new List <CoolEvent>();
                        }
                        dic[faceEvent.Id].Add(faceEvent);
                    }
                }
            }
            return(dic);
        }
Esempio n. 3
0
 public Task Publish(CoolEvent @event)
 {
     return(InmemoryBus.Publish(@event));
 }