Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed

using System.Drawing;
using System.Runtime.Serialization;

namespace Touchless.Vision.Contracts
{
    [DataContract]
    public class DetectedObject
    {
        private static readonly object SyncObject = new object();
        private static int _nextId = 1;

        public DetectedObject()
        {
            Id = NextId();
        }

        [DataMember]
        public int Id { get; private set; }

        [IgnoreDataMember]
        public Bitmap Image { get; set; }

        //[DataMember]
        //public byte[] ImageData
        //{
        //    get
        //    {
        //        byte[] data = null;
        //        if (this.Image != null)
        //        {
        //            MemoryStream memoryStream = new MemoryStream();
        //            this.Image.Save(memoryStream, ImageFormat.Bmp);
        //            memoryStream.Flush();
        //            data = memoryStream.ToArray();
        //            memoryStream.Close();
        //        }

        //        return data;


        //    }
        //}

        [DataMember]
        public virtual Point Position { get; set; }

        public void AssignNewId()
        {
            Id = NextId();
        }


        private static int NextId()
        {
            int result;
            lock (SyncObject)
            {
                result = _nextId;
                _nextId++;
            }

            return result;
        }
    }
}